我以普通用户身份创建一个文件testuser:
$ cat > /tmp/zz
Run Code Online (Sandbox Code Playgroud)
该文件由该用户拥有(如预期):
$ ls -lA /tmp/zz
-rw------- 1 testuser testuser 0 Feb 20 15:32 zz
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试将其截断为 时root,我的权限被拒绝:
# truncate --size=0 /tmp/zz
truncate: cannot open '/tmp/zz' for writing: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 时strace,我看到以下内容:
openat(AT_FDCWD, "/tmp/zz", O_WRONLY|O_CREAT|O_NONBLOCK, 0666) = -1 EACCES (Permission denied)
write(2, "truncate: ", 10truncate: ) = 10
write(2, "cannot open '/tmp/zz' for writin"..., 33cannot open '/tmp/zz' for writing) = 33
...
write(2, ": Permission denied", 19: Permission denied) = 19 …Run Code Online (Sandbox Code Playgroud) 出现以下/var/log/messages,是什么意思?
Feb 19 22:51:20 kernel: [ 187.819487] non-matching-uid symlink following attempted in sticky world-writable directory by sh (fsuid 1001 != 0)
Run Code Online (Sandbox Code Playgroud)
它发生在 cron 作业即将运行时。
为什么我得到
-bash: test: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我跑
sudo echo "xyz" > test
Run Code Online (Sandbox Code Playgroud)
目录权限为:
drwxr-xr-x 3 root root 4096 2014-08-05 16:26
Run Code Online (Sandbox Code Playgroud)
我在目录中使用sudo. 但是为什么我不能 sudo 回声呢?
当我尝试创建硬链接时,我在 CentOS 7 中遇到权限错误。在 CentOS 6 中设置相同的权限时,我没有收到错误消息。问题集中在组权限上。我不确定哪个操作系统版本是正确的,哪个是错误的。
让我来说明正在发生的事情。在我当前的工作目录中,我有两个目录:源和目标。一开始,destination 是空的;源包含一个文本文件。
[root@tc-dlx-nba cwd]# ls -l
total 0
drwxrwxrwx. 2 root root 6 Jun 12 14:33 destination
drwxrwxrwx. 2 root root 21 Jun 12 14:33 source
[root@tc-dlx-nba cwd]# ls -l destination/
total 0
[root@tc-dlx-nba cwd]# ls -l source/
total 4
-rw-r--r--. 1 root root 8 Jun 12 14:20 test.txt
[root@tc-dlx-nba cwd]#
Run Code Online (Sandbox Code Playgroud)
如您所见,两个目录的权限为 777,所有者和组都设置为 root。文本文件的所有者和组也都设置为 root。但是,文本文件的权限对于所有者是可读写的,而对于组是只读的。
当我以 root 身份登录时,在目标目录中创建指向文本文件(在源目录中)的硬链接没有问题。
[root@tc-dlx-nba cwd]# ln source/test.txt destination/
[root@tc-dlx-nba cwd]# ls destination/
test.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果我以其他用户(在本例中为 admin)身份登录,则无法创建链接。我得到:“不允许操作。”
[root@tc-dlx-nba cwd]# rm …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下文件模式位 ( a+rw) 的文件:
[0] mypc<johndoe>:~>sudo touch /tmp/test
[0] mypc<johndoe>:~>sudo chmod a+rw /tmp/test
[0] mypc<johndoe>:~>ls -l /tmp/test
-rw-rw-rw- 1 root root 0 Mar 13 11:09 /tmp/test
Run Code Online (Sandbox Code Playgroud)
为什么我不能删除文件?
[0] mypc<johndoe>:~>rm /tmp/test
rm: cannot remove '/tmp/test': Operation not permitted
Run Code Online (Sandbox Code Playgroud) 符号链接不起作用,使用标准 UBUNTU 16 LTS...它显示“权限被拒绝”,我希望在那里获得访问权限,即使在chown.
完整示例:
sudo rm /tmp/file.txt # if exist, remove
cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt # "-rw-rw-rw-" as expected
more data/file.txt # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt # fine
ls -l /tmp/file.txt # "lrwxrwxrwx", /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt # fine
sudo chown -h postgres:postgres /tmp/file.txt
sudo more /tmp/file.txt # NOT WORK! but its is sudo! and 666!
Run Code Online (Sandbox Code Playgroud)