Reg*_*ser 39 permissions command-line
我正在尝试临时更改一个文件夹的权限,其初始权限为
user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy 0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied
Run Code Online (Sandbox Code Playgroud)
一些事情
user@ubuntu:/var/log$ sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ? ? access.log
-????????? ? ? ? ? ? cache.log
squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ? ? access.log
-????????? ? ? ? ? ? cache.log
-????????? ? ? ? ? ? store.log
Run Code Online (Sandbox Code Playgroud)
更改权限后,您会注意到到处都是问号。为什么会这样?我基本上想阅读访问日志以查看 squid-deb-proxy 服务器是否收到来自客户端的请求。
Fli*_*imm 51
要查看目录的权限,您需要将-d标志传递给ls,如下所示:
ls -ld squid3
Run Code Online (Sandbox Code Playgroud)
要读取文件,需要设置其读取权限。但是,要读取目录及其文件列表,需要设置读取和执行权限。如果不是,您会遇到像您遇到的那样的奇怪错误。
要递归设置文件的读取权限以及目录的读取和执行权限,请使用以下命令:
chmod -R a+rX directoryname
Run Code Online (Sandbox Code Playgroud)
这是对该命令的解释:
chmod 是命令的名称,用于更改文件的权限。-R是递归标志。这意味着将此命令应用于目录及其所有子目录,以及其子目录的子目录,依此类推。a 代表全部:将这些权限应用到文件的所有者、文件的组所有者和所有其他用户。+ 表示添加以下权限(如果尚未设置)。r 表示读取权限。X表示执行权限,但仅限于目录。小写x表示对文件和目录的执行权限。