Max*_*mov 19 permissions directory
我需要为root用户设置对目录subfolderN及其所有父文件夹的读写权限,直到root.
我可以手动完成:
$ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN
$ sudo chmod +rx /root/subfolder1/subfolder2
$ sudo chmod +rx /root/subfolder1
$ sudo chmod +rx /root
Run Code Online (Sandbox Code Playgroud)
但如果N大我累了。如何通过一个命令自动完成?
win*_*ner 25
这可以在 shell 中轻松完成,从子目录开始并向上移动:
f=/root/subfolder1/subfolder2/subfolderN
while [[ $f != / ]]; do chmod +rx "$f"; f=$(dirname "$f"); done;
Run Code Online (Sandbox Code Playgroud)
这从您设置 f 的任何文件/目录开始,并在每个父目录上工作,直到遇到“/”(或您在循环条件中设置的任何字符串)。它不会 chmod "/"。确保f循环条件下的目录和目录都是绝对路径。
随着csh,tcsh,ksh,zsh,bash,fish或yash -o braceexpand:
sudo chmod +rx /root{,/subfolder1{,/subfolder2{,/subfolderN}}}
Run Code Online (Sandbox Code Playgroud)
与zsh:
f=/root/subfolder1/subfolder2/subfolderN
until [[ $f = / ]] {chmod +rx $f; f=$f:h;}
Run Code Online (Sandbox Code Playgroud)
或者你可以定义一个 glob 限定符函数,如:
explode() {
reply=()
until [[ $REPLY = [./] ]] {
reply+=$REPLY
REPLY=$REPLY:h
}
}
Run Code Online (Sandbox Code Playgroud)
例如用作:
$ echo chmod +rx subfolder1/subfolder2/subfolderN(+explode)
chmod +rx subfolder1 subfolder1/subfolder2 subfolder1/subfolder2/subfolderN
Run Code Online (Sandbox Code Playgroud)
请注意,chmod +rx受 umask 影响。如果您umask不包含007,它将使/root目录世界可读和可访问,这是一个坏主意。/root通常用于超级用户的私人事物,暴露它是个坏主意。
| 归档时间: |
|
| 查看次数: |
14039 次 |
| 最近记录: |