好的,据我对LightDM(登录管理器)的了解,似乎不支持将桌面环境限制为特定用户。这是一个全有或全无的交易。默认情况下,当用户选择桌面环境时,它将成为其默认桌面环境。他们下次登录时,除非他们选择其他人,否则他们将登录为默认值。
但是,您可以这样做,以便用户无法更改它。该用户仍然可以选择其他桌面环境,但是如果这样做,它将不会更改其默认设置。如果您不担心此人会更改它,我相信这是最安全的方法。您所要做的就是编辑其.dmrc
文件(位于其主目录中,即/ home / user)。这是其默认会话存储的位置。Session
将该文件中的变量更改为所需的变量,即ubuntu
默认的Unity DE,ubuntu-2d
Unity 2D和LXDE
LXDE。为了做到这一点,如果他们使用另一个DE登录将不会更改,我们可以简单地使其不可变(不可更改):
sudo chattr +i /home/user/.dmrc
现在,除非您删除不可变标志,否则任何人都无法更改该文件(包括根目录和其他程序):
sudo chattr -i /home/user/.dmrc
如果您绝对不希望该用户使用另一个DE登录,那么我确实找到了一种真正的方法(即,后果自负)。我有点无聊,尝试这似乎很有趣。LightDM可以看到的所有不同DE都/usr/share/xsessions
作为.desktop
文件保存在其中。仅供参考,您可以删除所有您不想在登录屏幕上显示的内容(但这将删除所有用户的内容)。如果您打开其中任何一个,它们都非常简单。它们是基本的桌面启动器文件,就像桌面上的所有快捷方式一样。每个包含一个Exec
行,即在登录屏幕上选择DE时执行的操作(即启动了哪个DE)。我们将利用此优势并检查哪个用户登录。如果该用户是我们的受限用户,我们将强制他们使用特定的DE。
首先,您需要为中的每个.desktop
文件/usr/share/xsessions/
创建一个脚本/usr/local/bin
。在我的示例中,我将展示如何针对ubuntu.desktop
,这是Unity DE,并使用LXDE作为DE来强制我们的受限用户(restricteduser)使用。查看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不使用TryExec
。显然,这有点麻烦,您应该确保在编辑文件之前先备份所有文件,但是如果您绝对需要确保用户登录到正确的DE,则可以使用该文件。