任何人都可以向我指出编写 shell 脚本的代码或教程,该脚本可以递归地遍历整个目录结构(从当前工作目录开始,或者给出从哪里开始的必需参数)并且可以:
- 确定一个项目是否是一个目录,如果是,则
chmod 755
它,或者... - 确定一个项目是否是一个文件(不是目录),以及
chmod 644
它。
我正在寻找与 Ubuntu、Debian、基于 RHEL 等的兼容性,因此我不会使用任何特定语言来标记它。我希望在 Bash 中这样做,但如果您有 ZSH 脚本,那也可以。
答案1
我习惯了这一行命令(将从当前工作目录开始递归)
find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +
解释:
find . # starting in curdir find
-type d # any directory
-exec chmod 0755 '{}' # and chmod it to 755
+ # (variant of -exec look find man page)
-or # or
-type f # any file
-exec chmod 0644 '{}' # and chmod it to 644
+ # (as above)
答案2
简单的答案:
chmod -R a+rX .
+X
(注意大写的X)意味着如果某个用户已经存在执行权限,则授予执行权限。如果您的目录树具有所有者的正确权限,并且您希望每个人都可以访问它,那么这是正确的命令。它不仅使目录可以全局执行,还可以使文件成为可执行文件。
如果您还想仅将写入权限重置为所有者并清除任何 setuid/setgid 位,请执行以下操作
chmod -R a-ws,u+w,a+rX .
如果您不想使任何文件可执行,则必须使用 zsh 两行代码:
chmod 755 **/*(/)
chmod 644 **/*(.)