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

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

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

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 服务器是否正在从客户端获取请求。

答案1

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

ls -ld squid3

要读取文件,需要设置其读取权限。但是,要读取目录及其文件列表,需要设置读取和执行权限如果不是,您就会遇到类似于您所遇到的奇怪错误。

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

chmod -R a+rX directoryname

以下是该命令的解释:

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

更多信息请访问命令手册chmod手册页图标

答案2

我也遇到过这个问题。我无法对文件执行 chmod 或 chown。我曾尝试删除它。结果发现,尝试删除它(rm 命令)导致了这个问题。关键是该文件在两个不同的系统之间共享一旦我在其他系统中关闭该文件,该文件就消失了。 以下是我的配置的更多详细信息。系统 1:Ubuntu 客户虚拟机。这是我执行 rm 命令的地方。系统 2:Windows 7 主机。这是我使用 less 命令打开文件的地方(在 cygwin 中,但不一定相关)。

答案3

正如您所述,您的目标是阅读/var/log/squid/access.log,那么您最好的解决方案就是输入sudo less /var/log/squid/access.log,这样就省去了反复 chmodding 的麻烦。

相关内容