今天为了方便自己写 /var/www/
目录下的文件,于是把自己添加进了 www-data
用户组,并理所当然的执行了 sudo chmod -R 770 /var/www/
(-rw-rw-r–),结果 sl -al
一下返回 ls: cannot access '/var/www/': Permission denied
。
➜ ~ sudo usermod -aG www-data uuz
[sudo] password for uuz:
➜ ~ ls -al /var/www/uuz/
total 248
drwxr-xr-x 6 www-data www-data 4096 Aug 31 10:51 .
drwxr-xr-x 7 root root 4096 Sep 20 2020 ..
drwxr-xr-x 13 www-data www-data 4096 Aug 10 2020 uuz-h5theme
-rw-r--r-- 1 www-data www-data 405 Feb 6 2020 index.php
➜ ~ sudo chmod -R 660 /var/www/
➜ ~ ls -al /var/www/uuz/
ls: cannot access '/var/www/uuz/': Permission denied
➜ ~ sudo ls -al /var/www/uuz/
total 248
drw-rw---- 6 www-data www-data 4096 Aug 31 10:51 .
drw-rw---- 7 root root 4096 Sep 20 2020 ..
drw-rw---- 13 www-data www-data 4096 Aug 10 2020 uuz-h5theme
-rw-rw---- 1 www-data www-data 405 Feb 6 2020 index.php
思考了一下想起来 ls
需要给执行权限,就又执行了 sudo chmod -R 665 /var/www/
。这下虽然 ls
可以用了,但不仅是文件夹,所有文件也都变成 everyone 可执行了,有一定的风险。
➜ ~ sudo chmod -R 665 /var/www/
➜ ~ ls -al /var/www/uuz/
total 248
drw-rw-r-x 6 www-data www-data 4096 Aug 31 10:51 .
drw-rw-r-x 7 root root 4096 Sep 20 2020 ..
drw-rw-r-x 13 www-data www-data 4096 Aug 10 2020 uuz-h5theme
-rw-rw-r-x 1 www-data www-data 405 Feb 6 2020 index.php
要怎么做才能在保持文件为 -rw-rw-r– 的情况下让文件夹为 drwxrwxr-x 呢?
查询了一下 Google,发现可以使用 chmod -R a-x+rX
的方法来解决。a 代表 all 也就是全部用户/组(g 代表 group,u 代表 user/owner 而 o 代表 other),这段命令中 a-x 的意思是从全部用户/组上移除 x (即 Execute,执行权限)并为全部用户/组添加 r(即 Read,读)和为目录添加 x (即 Execute,执行位),大写 X
表示“仅当文件为目录时”。
➜ ~ sudo chmod -R a-x+rX /var/www/
➜ ~ ls -al /var/www/uuz/
total 248
drwxrwxr-x 6 www-data www-data 4096 Aug 31 10:51 .
drwxrwxr-x 7 root root 4096 Sep 20 2020 ..
drwxrwxr-x 13 www-data www-data 4096 Aug 10 2020 uuz-h5theme
-rw-rw-r-- 1 www-data www-data 405 Feb 6 2020 index.php
参考资料:
How do I change permissions for a folder and its subfolders/files? [closed] — stackoverflow