我正在尝试临时更改文件夹的权限,该文件夹的初始权限为
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
要查看目录的权限,需要将标志传递-d
给ls
,如下所示:
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 的麻烦。