我想要一个像 Ubuntu 中一样的访客帐户,它具有以下功能:
- 不需要密码即可登录
/tmp
每次都会创建一个没有数据的新主文件夹(如果可能的话)- 用户注销后数据将被删除
- 用户无法使用
sudo
我在 Arch Linux 上运行 Gnome 3.20
笔记:请不要关闭我的问题作为重复创建限制访问应用程序的访客帐户因为这个问题没有回答我的第二点和第三点
答案1
事实证明,使用 GDM 非常简单。我假设您正在使用 GDM,因为您也在使用 Gnome。首先,guest
使用空白密码创建用户帐户:
sudo useradd -d /tmp/guest -p $(openssl passwd "") guest
这openssl passwd ""
将返回空字符串的哈希值,从而将密码设置为空。
现在,您所需要的只是这两个脚本:
/etc/gdm/PostLogin/Default
这是在您登录后执行的,并将创建/tmp/$guestuser
(/tmp/guest
默认情况下)目录并将默认文件复制到/etc/skel
其中。要更改来宾用户的默认用户名,请guestuser
在开始时设置为其他内容。
<!-- language: lang-bash -->
#!/bin/sh
guestuser="guest"
## Set up guest user session
if [ "$USER" = "$guestuser" ]; then
mkdir /tmp/"$guestuser"
cp /etc/skel/.* /tmp/"$guestuser"
chown -R "$guestuser":"$guestuser" /tmp/"$guestuser"
fi
exit 0
/etc/gdm/PostSession/Default
此操作在您注销后执行,并将删除该/etc/$guestuser
目录及其所有内容。确保guestuser
在两个脚本中设置为相同的值。
<!-- language: lang-bash -->
#!/bin/sh
guestuser="guest"
## Clear up the guest user session
if [ "$USER" = "$guestuser" ]; then
rm -rf /tmp/"$guestuser"
fi
exit 0
最后,使两个脚本可执行:
sudo chmod 755 /etc/gdm/PostLogin/Default /etc/gdm/PostSession/Default
现在,只需注销,您就会看到您的新guest
用户。您可以通过选择它并Enter在提示输入密码时点击来登录。用户guest
将无法使用,sudo
因为无论如何这是所有用户的默认设置。只有 中明确提到的用户/etc/sudoers
或者是 中明确提到的组的成员sudoers
(例如wheel
或sudo
,具体取决于您的发行版)才能使用sudo
。
如果您使用的是最新版本的 GDM,当密码框为空时,它可能会禁用登录按钮。要解决此问题,您可以告诉 GDM 不要提示输入特定组的密码。需要注意的是,这也将绕过该组成员的会话选择菜单。如果你想这样做,你应该添加这一行一开始的/etc/pam.d/gdm-password
:
auth sufficient pam_succeed_if.so user ingroup guest