use*_*247 6 linux permissions logging ls nginx
当我写ls -lao 命令行时,我得到这个输出:
ls -la /var/log/nginx
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? access.log
Run Code Online (Sandbox Code Playgroud)
对于此文件夹中的所有文件。
当我为另一个文件夹执行此操作时:
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
Run Code Online (Sandbox Code Playgroud)
一切都好。
对上述目录的权限:
drw-r--r-- 2 nginx adm 69632 ??? 1 00:29 nginx
drwxr-xr-x 2 root root 4096 ??? 25 11:06 nginx_back
Run Code Online (Sandbox Code Playgroud)
只有当我不是 root 时,我才会有这些问号。
我已将我的用户添加到组中nginx,添加了所有权限,创建了另一个用户,但系统不想为目录中的非超级用户显示文件的属性/var/log/nginx。
这是为什么?
这个问题是权限问题。具体来说,它与目录上的执行位有关。
考虑下面的例子
$ 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
Run Code Online (Sandbox Code Playgroud)
现在,如果我们删除目录的执行权限,我们将无法获取统计信息。
$ 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
Run Code Online (Sandbox Code Playgroud)
除非我们有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
Run Code Online (Sandbox Code Playgroud)