all*_*len 2 unix permissions gzip
这是一个我不明白的案例。
我有一个组bar,这个组有两个用户;foo和bar。
我有一个test.txt文件,foo是所有者和bar用户只能读取它。
但是,如果bar用户gzip对该文件运行命令,则所有权将从 更改foo为bar。
因此,foo不能再碰这个文件了。
这是安全漏洞吗?
登录为 bar
$ whoami
bar
$ cd /home/foo/test
$ ls -al
total 8
drwxrwxr-x 2 foo bar 4096 Jan 6 15:48 .
drwxrwxr-- 5 foo bar 4096 Jan 6 15:48 ..
-rwxr-xr-x 1 foo foo 0 Jan 6 15:48 test.txt
$ gzip test.txt
$ ls -al
total 12
drwxrwxr-x 2 foo bar 4096 Jan 6 15:50 .
drwxrwxr-- 5 foo bar 4096 Jan 6 15:48 ..
-rwxr-xr-x 1 bar bar 29 Jan 6 15:48 test.txt.gz
$ uname -a
Linux 2.6.18-xenU-ec2-v1.2 #2 SMP x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
登录为foo:
$ whoami
foo
$ touch test.txt.gz
touch: cannot touch `test.txt.gz': Permission denied
Run Code Online (Sandbox Code Playgroud)
它不是一个安全漏洞。Gzip 创建一个新文件并删除旧文件。这是由目录权限控制的,而不是文件的权限。如果您从目录中删除写权限,您的 test.txt 将不会受到用户栏的影响。
关于安全性的完整过程如下所示: