chmod 仅为文件夹添加执行(Execute)权限

今天为了方便自己写 /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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注