我为开发人员创建了一个组,让他们可以访问:/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
我怎么了?
您的问题是您在给自己一个新的组成员身份后没有重新启动会话。是的,
id justme
告诉您将来justme
登录时,他将(您将)拥有 的组成员身份。但这不会影响他(你的)当前的shell 会话,正如你会告诉你的那样。devmaster
id -a
注销并再次登录,检查您是否已获得新的组成员资格
id -a
,然后查看是否可以cd /var/dev
(或者/var/lib/dev
,您的问题不明确)。最后的事情是,虽然我真的不知道为什么,但我不得不注销并再次登录以测试结果,它的工作原理是 except,除了:
需要
-a
选项:因为如果不是,辅助组完全被替换为
devmaster
, 而不是与之前分配的任何组连接,并且由于justme
是原始管理帐户,因此我不在组 sudo、adm、cdrom、plugdev 和其他 5 个组中。因此,我无法使用
sudo
,并且由于系统中没有任何其他用户帐户,我不得不重新启动机器,以安全模式重新启动并打开 root shell 以将自己添加到sudo
组和其他丢失的群体。