KP.*_*KP. 5 linux permissions bash ubuntu
我遇到了 Linux 权限和组成员身份的奇怪行为,这让我摸不着头脑。这是情况:
我有两个用户:alice 和 bob
alice@KAL:~$ id alice
uid=3000(alice) gid=3000(alice) groups=3000(alice)
alice@KAL:~$ id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob)
Run Code Online (Sandbox Code Playgroud)在 alice 的主目录中,有一个子目录,我想授予 bob 写权限。
(as alice)
alice@KAL:~$ mkdir shared
alice@KAL:~$ chmod g+w shared
alice@KAL:~$ ls -l
total 4
drwxrwxr-x 2 alice alice 4096 2012-05-15 23:56 shared
Run Code Online (Sandbox Code Playgroud)我添加组 alice (gid=3000) 作为 bob 的次要组之一
(as root)
root@KAL:~# id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob)
root@KAL:~# usermod -G 3000 bob
root@KAL:~# id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob),3000(alice)
Run Code Online (Sandbox Code Playgroud)我打开一个新终端,su 作为 bob,并在 alice 的主目录中测试我的权限。
(initially as kp, su'ing as bob)
kp@KAL:~$ sudo su bob
bob@KAL:/home/kp$ cd /home/alice
bob@KAL:/home/alice$ ls -l
total 4
drwxrwxr-x 2 alice alice 4096 2012-05-15 23:56 shared
bob@KAL:/home/alice$ touch test
touch: cannot touch `test': Permission denied <-- fails as expected
bob@KAL:/home/alice$ cd shared
bob@KAL:/home/alice/shared$ touch test <-- succeeds as expected
bob@KAL:/home/alice/shared$ ls -l
total 0
-rw-r--r-- 1 bob bob 0 2012-05-16 00:02 test
Run Code Online (Sandbox Code Playgroud)在一个单独的终端中,作为 root,我撤销了 bob 在组 alice 中的成员身份。
(root)
root@KAL:~# usermod -G 3001 bob
root@KAL:~# id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob)
Run Code Online (Sandbox Code Playgroud)现在,回到我被起诉为 bob 的终端,很明显,会员资格撤销得到承认但没有得到尊重。
(as bob)
bob@KAL:/home/alice/shared$ id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob) <-- group 3000 no longer secondary group
bob@KAL:/home/alice/shared$ touch test2 <-- should fail
bob@KAL:/home/alice/shared$ ls -l
total 0
-rw-r--r-- 1 bob bob 0 2012-05-16 00:02 test
-rw-r--r-- 1 bob bob 0 2012-05-16 00:20 test2
bob@KAL:/home/alice/shared$ rm test <-- this should also fail
bob@KAL:/home/alice/shared$ ls -l
total 0
-rw-r--r-- 1 bob bob 0 2012-05-16 00:20 test2
Run Code Online (Sandbox Code Playgroud)如果我现在退出,并再次作为 bob su,则更改现在尊重组成员身份。
(as bob)
bob@KAL:/home/alice/shared$ exit
exit
kp@KAL:~$ sudo su bob
bob@KAL:/home/kp$ cd /home/alice/shared
bob@KAL:/home/alice/shared$ ls -l
total 0
-rw-r--r-- 1 bob bob 0 2012-05-16 00:20 test2
bob@KAL:/home/alice/shared$ touch test3
touch: cannot touch `test3': Permission denied <-- now fails as expected
bob@KAL:/home/alice/shared$ id bob
uid=3001(bob) gid=3001(bob) groups=3001(bob)
bob@KAL:/home/alice/shared$
Run Code Online (Sandbox Code Playgroud)这是使用su的一些神器吗?组成员身份是否仅在 shell 开始时确定?
(这是在运行 Ubuntu Maverick 10.10 x86_64 2.6.35-32-generic 并运行 bash shell 的机器上。)
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |