向其他用户(而非所有用户)授予文件或目录的访问权限

向其他用户(而非所有用户)授予文件或目录的访问权限

问题是如何允许一个用户(但不是全部!)访问另一个用户的文件。

我有一个目录,/home/alice/dir其所有者为alice

$ cd /home/alice
$ ls -l
drwxr-x---  2 alice alice       4096 Feb 10 21:24 dir

即,所有者alice和组alice具有读取/执行访问权限。

我想允许用户bob访问该目录,但任何其他用户eve都不应有访问权限。

我目前所做的是:

$ sudo adduser bob alice

现在

$ getent group alice
alice:x:1001:bob

所以现在bob在小组中alice

但是,仍然bob无法访问目录:

$ whoami
bob
$ cd /home/alice
$ pwd
/home/alice
$ ls -l
drwxr-x---  2 alice alice       4096 Feb 10 21:24 dir
$ getent group alice
alice:x:1001:bob
$ cd dir
bash: cd: test: Permission denied

怎么了?

用户创建时

sudo adduser alice
sudo adduser bob
sudo adduser eve

答案1

问题中描述的做法是正确的。

但是,当您更新组时,当前进程,包括您的 shell,均未更新。因此,在我的例子中(在组更改之前groups由 启动的当前 shell )和(用户的当前权限)显示了不同的结果:bobgroups bobbob

$whoami
bob
$ groups bob # current membership of bob
bob alice
$ groups     # shell run by bob BEFORE the groups changed
bob
$ cd /home/alice/dir
bash: cd: test: Permission denied

所以我不得不关闭 shell,甚至关闭隧道(我通过 SSH 隧道连接到 Ubuntu 机器)并打开一个新 shell(在我再次连接到 SSH 之后),然后我看到了

$whoami
bob
$ groups bob
bob alice
$ groups     # current shell run by bob AFTER the groups changed
bob alice
$ cd /home/alice/dir
$ pwd
/home/alice/dir

如果bob是服务的话,那服务就要重新启动!

相关内容