ファイルが作成されたときに設定された権限を持つように、マスクに基づいて権限をデフォルト値にリセットする方法
私が達成したいものの例:
umask
0022に設定して
touch file
mkdir directory
今ファイルの権限rw-r--r--
これで、ディレクトリの権限は次のようになります。rwxr-xr-x
chmod 777 file
chmod 777 directory
今ファイルの権限rwxrwxrwx
これで、ディレクトリの権限は次のようになります。rwxrwxrwx
ファイルとrw-r--r--
ディレクトリの権限をデフォルト値にリセットする方法はありますか?rwxr-xr-x
chmod
ベストアンサー1
マイナスの使用は、特定のumask値に対してのみ正確です。たとえば、次のように使用することをお勧めします。mode & ~umask
PSkocikの答えから、またはchmod =rw
(またはchmod =rwx
ディレクトリの場合)、標準指定のumaskを適用します。ilkkachuがコメントで指摘したように、。
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では、次のように8進数の出力を強制する必要があります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