首页 > 解决方案 > 符号链接文件的 Chmod

问题描述

最近我尝试访问一个符号链接文件,并收到“拒绝访问”。所以我想要一种方法来更改所有符号链接的目标文件。有一种方法可以在 chown 中执行此操作(即 sudo chmod -R 775 /var/www/),但不是 chmod。很奇怪。有没有人有更好的方法来做到这一点:

ls -lR /var/www/ | grep ^l | awk '{print $11, $12, $13, $14}' | sed -e 's/[[:space:]]*$//' | sed 's/.*/"&"/' | xargs -n 1 sudo chmod 775

标签: linuxbashawksed

解决方案


awk如果链接名称中有空格,您可能会失败。

与其尝试将其全部放入管道中,不如使用一个简单的循环:

find /var/www -type l -print0 | while IFS= read -r -d link ; do
   rp=$(realpath "$link")
   chmod 775 "$rp"
done

如果您绝对必须解析 的输出ls,那么

ls -lR | sed -n 's/^l.* -> //p' | sed 's/.*/"&"/'

可能会给你一个比你更好的选择grep-awk管道


推荐阅读