linux - 符号链接文件的 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
ls -lR /var/www/
查找 /var/www 中的所有文件grep -l
过滤掉所有的符号链接文件awk {print $11, $12, $13, $14}
打印所有文件,包括其中包含空格的文件(更多空格包含更多数字)sed -e 's/[[:space:]]*$//'
通过在 awk 中包含空格来删除剩余的尾随空格sed 's/.*/"&"/'
在每个文件周围添加引号以包含目录中带有空格的文件xargs -n 1 sudo chmod 775
对找到的所有文件执行 chmod 功能
解决方案
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
管道
推荐阅读
- mysql - Sql没有保存正确的浮点值
- javascript - 如何运行 OpenAPI -> GraphQL 转换?
- sql-server - 删除 docker 容器而不丢失卷中的数据
- postgresql - 添加查询参数时,Postman 中的 POST 请求不起作用
- bash - bash :在线恢复信息
- blogger - 如何在博文中插入多个 AdSense 单元
- docker - 应该使用反向代理和 https+auth 保护内部 docker 服务吗?
- python - 如何消除绘图中不可用数据的差距
- ruby-on-rails - 如何根据另一个集合的选定字段填充集合?
- javascript - 如何等待对不是承诺但包含承诺的函数的调用结果?