我为开发人员创建了一个组,让他们可以访问:/var/lib/dev,该文件夹内已经包含一些文件夹和文件。
我介绍的命令是:
$ sudo useradd -d /var/dev -M -r devmaster
因此,devmaster
是一个具有主要组的新系统用户devmaster
。可以使用以下命令检查id
:
$ id devmaster
uid=998(devmaster) gid=998(devmaster) groups=998(devmaster)
然后,我更改了权限(使用chmod
/ chown
),如下所示:
$ cd /var
$ sudo chown -R root:devmaster dev
$ sudo chmod -R o-wrx dev
$ sudo chmod -R g+wrx dev
最后(这里我的用户名只是justme
):
$ sudo usermod -G devmaster justme
$ id justme
uid=1000(justme) gid=1000(justme)
groups=1000(justme),998(devmaster)
$ ls -lh
// Omitted
drwxrwx--- 3 root devmaster 4,0K dic 12 19:48 dev
// Omitted
但如果我尝试进入目录:
$ cd dev
-bash: cd: dev: Permission denied
我怎么了?
答案1
您的问题是您在为自己赋予新的组成员身份后没有重新启动会话。是的,id justme
告诉您在justme
登录时在未来,他将(您将)拥有 的群组成员资格devmaster
。但这不会影响他(您的)当前的shell 会话,正如id -a
你所告诉过你的一样。
注销并重新登录,检查您是否已获得新的组成员身份id -a
,然后看看是否可以cd /var/dev
(或/var/lib/dev
,您的问题不明确)。
答案2
最后的事情是,虽然我不知道为什么,但我必须注销并再次登录才能测试结果,其工作原理如下:
$ sudo usermod -G devmaster justme
需要-a
选项:
$ sudo usermod -a -G devmaster justme
因为如果不是,则次要组将完全被替换devmaster
,而不是与之前分配的任何组连接起来,并且由于是justme
原始管理帐户,所以我退出了 sudo、adm、cdrom、plugdev 和其他 5 个组。
因此,我无法使用sudo
,而且由于系统中没有其他用户帐户,我不得不重新启动机器,以安全模式重新启动并打开 root shell 将我本人添加到该sudo
组和其他丢失的组中。