我实际上开始学习 Unix,并且一直坚持在这里。虽然这个问题看起来很愚蠢,但我实际上并不清楚,所以请帮助我。
我有一个名为 somefile.txt 的文件和一个引用的符号链接somefile.txt
,我发现两者的默认权限都是rw-r--r--
。
当我更改somefile.txt
( chmod ugo=rwx somefile.txt
) 的权限时,我发现两个文件都更改为rwxrwxrwx
.但是,当我再次尝试通过给出更改权限时chmod u-rx somefile.txt
,我发现仅在符号链接中发生了更改,somefile.txt
但在符号链接中没有发生更改。我想知道为什么?我正在使用 RedHat cygwin。
答案1
您至少错误了一个命令的输出。符号链接的权限始终是rwxrwxrwx
,或者更确切地说,它们根本没有权限:
$ touch file
$ ls -l
total 0
-rw-rw-r-- 1 muru muru 0 Dec 5 20:53 file
$ ln -s file link
$ ls -l
total 0
-rw-rw-r-- 1 muru muru 0 Dec 5 20:53 file
lrwxrwxrwx 1 muru muru 4 Dec 5 20:53 link -> file
$ chmod a+x file
$ ls -l
total 0
-rwxrwxr-x 1 muru muru 0 Dec 5 20:53 file
lrwxrwxrwx 1 muru muru 4 Dec 5 20:53 link -> file
看到这个FreeBSD 常见问题解答了解更多信息。
由于您使用的是 Linux,man chmod
说:
chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions. This is not a problem since the
permissions of symbolic links are never used. However, for each
symbolic link listed on the command line, chmod changes the permissions
of the pointed-to file. In contrast, chmod ignores symbolic links
encountered during recursive directory traversals.