更改目录权限时为什么出现问号字符?


33

我正在尝试临时更改其初始权限为的文件夹的权限

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

跟随一些事情

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

更改权限后,您会发现到处都是问号。为什么会这样呢?我基本上想阅读访问日志,以查看squid-deb-proxy服务器是否正在从客户端获取请求。

Answers:


38

要查看目录的权限,您需要将-d标志传递给ls,如下所示:

ls -ld squid3

要读取文件,需要设置其读取权限。但是,要读取目录及其文件列表,需要同时设置读取和执行权限。如果不是,您会遇到一些奇怪的错误。

要递归设置文件的读取权限以及目录的读取和执行权限,请使用以下命令:

chmod -R a+rX directoryname

这是该命令的说明:

  • chmod 是命令的名称,用于更改文件的权限。
  • -R是递归标志。这意味着将此命令应用于目录及其所有子项及其子项,等等。
  • a 代表所有人:将这些权限应用于文件的所有者,文件的组所有者以及所有其他用户。
  • + 表示添加以下权限(如果尚未设置)。
  • r 表示读取权限。
  • X表示执行权限,但仅适用于目录。小写x意味着对文件和目录都具有执行权限。

chmod命令联机帮助页图标的手册页中找到更多信息。


1
使用有什么问题chmod -R 644 squid*
注册用户

4
@RegisteredUser:是的。644是rw-r--r--,它适用于文件,但不适用于目录。目录也需要设置执行权限,例如:rwxr-xr-x或755。您提到的命令以递归方式取消所有文件和目录的执行权限,这会导致这些错误。
Flimm 2013年

3

我也有这个问题。我无法在文件上执行chmod或chown。我试图删除它。事实证明,尝试删除它(rm命令)导致了问题。最重要的是,文件在两个不同的系统之间共享在其他系统中关闭文件后,文件消失了。 这是我的配置的更多详细信息。系统1:Ubuntu来宾VM。这是我执行rm命令的地方。系统2:Windows 7主机。这是我使用less命令打开文件的地方(在cygwin中,不一定是必需的)。


2

正如您所说的,您的目标是阅读/var/log/squid/access.log,最好的解决方案是键入sudo less /var/log/squid/access.log,这避免了反复进行chmodding的麻烦。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.