Ubuntu 用户在 Ubuntu 22.04 上不受粘性位影响

Ubuntu 用户在 Ubuntu 22.04 上不受粘性位影响

我在 /tmp 目录和集群命令上的坚持位中遇到了奇怪的行为。尝试了两种情况:

情况1:使用Ubuntu用户创建文件,root无权访问创建的文件。

ubuntu@:~$ touch -a /tmp/ubuntu_user_created.lck
ubuntu@:~$ flock -n /tmp/ubuntu_user_created.lck -c "echo 123"
123
ubuntu@:~$ sudo flock -n /tmp/ubuntu_user_created.lck -c "echo 123"
flock: cannot open lock file /tmp/ubuntu_user_created.lck: Permission denied

情况2:使用root用户创建文件,root和Ubuntu用户都可以访问创建的文件。

ubuntu@:~$ sudo touch -a /tmp/root_user_created.lck
ubuntu@:~$ flock -n /tmp/root_user_created.lck -c "echo 123"
123
ubuntu@:~$ sudo flock -n /tmp/root_user_created.lck -c "echo 123"
123

两个文件的权限:

ls -la /tmp/
total 52
drwxrwxrwt 12 root   root   4096 Oct  6 08:08 .
drwxr-xr-x 19 root   root   4096 Oct  6 03:42 ..
-rw-r--r--  1 root   root      0 Oct  6 07:56 root_user_created.lck
-rw-rw-r--  1 ubuntu ubuntu    0 Oct  6 07:54 ubuntu_user_created.lck

我不明白为什么Ubuntu用户可以flock -n /tmp/root_user_created.lck成功运行该命令,既然文件root_user_created.lck是root拥有的,那么flock命令是否只想以读取模式打开这个文件?

如果flock命令只需要读访问权限,那么为什么flock -n /tmp/ubuntu_user_created.lck以root权限运行该命令会返回权限被拒绝呢?

相关内容