これumask
は、ファイルではなくプロセスの属性です。これは UNIX アーキテクチャの一部であり、Bash やその他のシェル プログラムとは関係ありません。
実際の問題は、使用しているプログラムでは、作成時に権限を変更できないことです。たとえば、C ではmkdir
、2 番目のパラメータであるmodeがあります。
ただし、C を記述する必要はありません。Python と Perl を使用すると、低レベルのインターフェイスを使用できます。アクセス許可はプロセスによって変更されるため、変更が不要な場合はゼロumask
に設定してください。unmask
/home/user1> umask 000
/home/user1> python -c 'import os;os.mkdir("mydir",0701)'
/home/user1> ls -ld mydir
drwx-----x 2 user1 QAPLADV 4096 Sep 16 10:28 mydir
/home/user1> python -c 'import os;os.open("myfile",os.O_CREAT,0604)'
/home/user1> ls -l myfile
-rw----r-- 1 user1 QAPLADV 0 Sep 16 10:32 myfile
この時点ではまだ 000 であることを忘れないでくださいumask
。同じプロセスで他の作業を行っている場合は、以前の値に戻すことをお勧めします。
必要に応じて、Perl バージョンを次に示します。
perl -e "mkdir mydir,0701"
perl -MFcntl -e 'sysopen(my $h,"myfile",O_EXCL|O_CREAT,0604)'
もちろん、多数のファイルがあり、これを頻繁に実行する可能性が高い場合は、Perl または Python プログラムを作成してその作業を行う方がはるかに優れています。ファイルごとに perl または python を呼び出すのは少し非効率的です。 .