Хорошо, из моего понимания LightDM (менеджера входа в систему), кажется, не поддерживается ограничение рабочих столов для конкретного пользователя. Это сделка «все или ничего». По умолчанию, когда пользователь выбирает среду рабочего стола, это становится его средой рабочего стола по умолчанию. Когда они войдут в следующий раз, если они не выберут другой, они войдут в систему по умолчанию.
Однако вы можете сделать так, чтобы пользователь не мог изменить это. Этот пользователь по-прежнему сможет выбрать другую среду рабочего стола, но если он это сделает, он не изменит их по умолчанию. Я считаю, что это самый безопасный способ сделать это, если вы не беспокоитесь, что человек это изменит. Все, что вам нужно сделать, это отредактировать их .dmrcфайл (расположенный в их домашнем каталоге, т.е. / home / user). Здесь хранится их сессия по умолчанию. Измените Sessionпеременную в этом файле на любую, какую вы хотите, т.е. ubuntuэто Unity DE по умолчанию, ubuntu-2dUnity 2D и LXDELXDE. Чтобы это не изменилось, если они войдут в систему с другим DE, мы можем просто сделать его неизменным (неизменяемым):
sudo chattr +i /home/user/.dmrc
Теперь никто не сможет изменить этот файл (включая root и другие программы), если вы не уберете флаг immutable:
sudo chattr -i /home/user/.dmrc
Если вы абсолютно НЕ хотите, чтобы этот пользователь когда-либо входил в систему с другим DE, я нашел действительно хакерский способ (т.е. сделал это на свой страх и риск) для достижения этой цели. Мне было немного скучно, и это казалось забавной попыткой. Все различные DE, которые LightDM может видеть, хранятся в /usr/share/xsessionsвиде .desktopфайлов. К вашему сведению, вы можете удалить любой из них, который вы не хотите показывать на экране входа в систему (но это удалит его для ВСЕХ пользователей). Если вы откроете любой из них, они довольно просты. Это основные файлы запуска рабочего стола, как и все ярлыки на рабочем столе. Каждый содержитExecстрока, которая исполняется, когда вы выбираете свою DE на экране входа в систему (т.е. какая DE запускается). Мы собираемся воспользоваться этим и проверить, какой пользователь входит в систему. Если пользователь является нашим ограниченным пользователем, мы заставим его использовать определенную DE.
Во-первых, для каждого .desktopфайла /usr/share/xsessions/вам необходимо создать скрипт в /usr/local/bin. Для моего примера я покажу, как это сделать ubuntu.desktop, то есть для Unity DE, и используя LXDE в качестве DE, который мы вынуждаем использовать нашего ограниченного пользователя (limiteduser). Глядя на LXDE.desktop, мы видим, что Execкоманда есть, /usr/bin/startlxdeа TryExecкоманды нет . Когда вы открываете, ubuntu.desktopмы видим, что Execкоманда есть, gnome-session --session=ubuntuа TryExecкоманда есть unity. Команда TryExec- это то, на что это похоже. После выполнения Execкоманды она попытается выполнить TryExecкоманду, но если она не удастся, она не будет аварийно завершена .
Теперь, взяв те команды, которые мы получили из .desktopфайлов, мы можем создавать наши сценарии. Мы вставим их /usr/share/bin. Нам нужно будет сделать два, один для Execи один для TryExec. Мы сделаем что-то вроде этого:
ubuntude.sh
#!/bin/bash
if [ `/usr/bin/whoami` = "restricteduser" ] ; then
/usr/bin/startlxde
else
gnome-session --session=ubuntu
fi
ubuntudetry.sh
#!/bin/bash
if [ `/usr/bin/whoami` != "restricteduser" ] ; then
unity
fi
Мы просто проверяем, является ли входящий в систему пользователь с ограниченными правами, и запускаем соответствующий DE. Теперь нам нужно убедиться, что они исполняемые:
sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh
Теперь нам нужно изменить наш ubuntu.desktopтак, чтобы он вызывал наши сценарии, а не фактические DE. Закомментируйте Execи TryExecстроки в файле, и заменить их следующим образом :
Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh
Просто повторите процедуру для любых других DE, которые вы можете иметь. Если TryExecдля DE нет, то и для него не нужно создавать сценарий detry.sh, так как LXDE не использует a TryExec. Очевидно, что это немного странно, и вы должны убедиться, что вы сделали резервные копии любых файлов перед их редактированием, но это сработает, если вам абсолютно необходимо убедиться, что пользователь входит в систему с правильным DE.