Chmod
將權限重置為預設值
如何根據遮罩將權限重置為預設值,以便在剛剛創建文件時設置權限
我想要實現的範例:
umask
設置為 0022 所以touch file mkdir directory
文件的權限現在是
rw-r--r--
目錄的權限現在是
rwxr-xr-x
chmod 777 file chmod 777 directory
文件的權限現在是
rwxrwxrwx
目錄的權限現在是
rwxrwxrwx
有沒有辦法將 perms 重置為預設值,以便文件
rw-r--r--
和目錄rwxr-xr-x
使用chmod
?
使用減法僅對某些 umask 值是正確的 - 最好使用,例如在 PSkocik 的答案中,或者(或對於目錄)應用標準指定的 umask,正如 ilkkachu 在評論中指出的那樣。
*mode* & ~*umask*``chmod =rw``chmod =rwx
在某些情況下,您只需
umask
從0666
文件和0777
目錄中減去即可獲得預設權限:$ printf "%04d\n" "$((0777 - $(umask)))" 0755 $ printf "%04d\n" "$((0666 - $(umask)))" 0644
因此,您可以申請
chmod
:chmod $((0666 - $(umask))) file chmod $((0777 - $(umask))) directory
在 bash 中,您必須使用
printf
以八進制強制輸出:$ printf "%04d\n" "$((0777 - $(umask)))" 0493 $ printf "%04o\n" "$((0777 - $(umask)))" 0755
另一種方法是創建一個新文件和目錄,並將它們用作參考:
touch file2 mkdir directory2 chmod --reference=directory2 directory chmod --reference=file2 file