我试图删除整个目录的写权限,但使用了错误的命令:
chmod 644 -r sites/default
我本想打字
chmod -R 644 sites/default
结果是这样的:
chmod: cannot access `644': No such file or directory
$ ls -als sites
total 24
4 drwxr-xr-x 5 user group 4096 Jan 11 10:54 .
4 drwxrwxr-x 14 user group 4096 Jan 11 10:11 ..
4 drwxr-xr-x 4 user group 4096 Jan 5 01:25 all
4 d-w------- 3 user group 4096 Jan 11 10:43 default
4 -rw-r--r-- 1 user group 1849 Apr 15 2010 example.sites.php
我使用 $ chmod 644 sites/default 修复了默认文件夹的权限,但是,以下 ls 显示所有文件都带有红色背景和问号。除非我是 root 用户,否则我无法访问任何文件。
$ ls -als sites/default
total 0
? ?--------- ? ? ? ? ? .
? ?--------- ? ? ? ? ? ..
? ?--------- ? ? ? ? ? default.settings.php
? ?--------- ? ? ? ? ? files
? ?--------- ? ? ? ? ? settings.php
当我以 root 身份登录时,我可以编辑所有文件,并且它们的权限显示正确。我不知道如何消除使用 -r 和 chmod 而不是 -R 造成的损害。
有什么建议么?
答案1
首先,执行以下操作:
chmod 755 sites/default
您看到的输出是因为您没有该目录的执行权限:
$ mkdir -p foo/bar
$ touch foo/bar/a foo/bar/b foo/bar/c
$ ls -l foo
total 4
drwxr-xr-x 2 thedward thedward 4096 2011-01-11 10:28 bar
$ ls -l foo/bar
total 0
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 a
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 b
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 c
$ chmod 644 foo/bar
$ ls -l foo/bar
total 0
-????????? ? ? ? ? ? a
-????????? ? ? ? ? ? b
-????????? ? ? ? ? ? c
$ chmod 755 foo/bar
$ ls -l foo/bar
total 0
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 a
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 b
-rw-r--r-- 1 thedward thedward 0 2011-01-11 10:28 c
答案2
为什么不使用适当的权限再次运行相同的命令,然后将所需的权限应用于站点/默认?