当我在命令行中写ls -la
时,我得到了这个输出:
ls -la /var/log/nginx
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? access.log
此文件夹中的所有文件。
当我为另一个文件夹执行此操作时:
ls -la /var/log/nginx_back/
drwxr-xr-x 2 root root 4096 Апр 25 11:06 .
drwxrwxr-x 15 root ssh 4096 Май 1 00:29 ..
-rw-r--r-- 1 root root 220793880 Апр 25 11:04 access.log-20170401.gz
一切都好。
上述目录的权限:
drw-r--r-- 2 nginx adm 69632 Май 1 00:29 nginx
drwxr-xr-x 2 root root 4096 Апр 25 11:06 nginx_back
只有当我不是root用户时才会有这些问号。
我已将我的用户添加到组nginx
,添加了所有权限,创建了另一个用户,但系统不希望在目录/var/log/nginx
中显示非超级用户的文件属性
为什么?
答案 0 :(得分:2)
此问题是权限问题。具体而言,它涉及目录上的执行位。
考虑以下示例
$ mkdir -p remove_execute/remove_execute_test
$ touch remove_execute/remove_execute_test/test_file.txt
$ ls -la remove_execute/remove_execute_test/
total 8
drwxrwxr-x 2 zerodf zerodf 4096 Nov 21 10:51 .
drwxrwxr-x 3 zerodf zerodf 4096 Nov 21 10:51 ..
-rw-rw-r-- 1 zerodf zerodf 0 Nov 21 10:51 test_file.txt
现在,如果我们删除目录的执行权限,我们就无法获取统计信息。
$ sudo chmod a-x remove_execute/remove_execute_test/
$ ls -la remove_execute/remove_execute_test/
ls: cannot access remove_execute/remove_execute_test/..: Permission denied
ls: cannot access remove_execute/remove_execute_test/test_file.txt: Permission denied
ls: cannot access remove_execute/remove_execute_test/.: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? test_file.txt
除非我们拥有root权限。
$ sudo ls -la remove_execute/remove_execute_test/
total 8
drw-rw-r-- 2 zerodf zerodf 4096 Nov 21 10:51 .
drwxrwxr-x 3 zerodf zerodf 4096 Nov 21 10:51 ..
-rw-rw-r-- 1 zerodf zerodf 0 Nov 21 10:51 test_file.txt