権限をデフォルト値にリセット

権限をデフォルト値にリセット

ファイルが作成されたときに設定された権限を持つように、マスクに基づいて権限をデフォルト値にリセットする方法

私が達成したいものの例: umask0022に設定して

touch file
mkdir directory

今ファイルの権限rw-r--r--

これで、ディレクトリの権限は次のようになります。rwxr-xr-x

chmod 777 file
chmod 777 directory

今ファイルの権限rwxrwxrwx

これで、ディレクトリの権限は次のようになります。rwxrwxrwx

ファイルとrw-r--r--ディレクトリの権限をデフォルト値にリセットする方法はありますか?rwxr-xr-xchmod

ベストアンサー1

マイナスの使用は、特定のumask値に対してのみ正確です。たとえば、次のように使用することをお勧めします。mode & ~umaskPSkocikの答えから、または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

おすすめ記事