これは必ずしも直接的なコンピュータサイエンスの質問ではありませんが、密接に関連しています。
これを行う方法はありますか?.
Z Shellzshを使用しています。
フォルダにいるときはいつでも設定したい
〜/何とか
私が作成するものはすべて、パーミッション770(私とグループのすべてのアクセスwrx)を使用して作成されます。基本的に、そのフォルダーで行うことはすべて、それらのアクセス許可を持っている必要があります。
さらに、そのファイルのグループ化も同じ方法で行う必要があります。しかし、それは許可のプロセスと同じプロセスです。
誰でも?
このテーマに関する素敵な記事を見つけました: 「umask」とは何ですか?どうすれば設定できますか?
umask
は、新しいファイルが取得するアクセス許可を定義します-またはそれ以上:取得しないアクセス許可。[...]
特定のディレクトリに
umask
を定義する場合(例:大学と一緒に使用するディレクトリのグループ書き込み権限)、umaskコマンドを使用すると、すべての人に常に有効であるため、汗をかきます。ディレクトリ。この問題の解決策は、デフォルトACLを設定することです。次のコマンドは、
/home/shared/
内のすべての新しいファイルに、グループのすべてのアクセス許可(書き込みアクセス許可を含む)が設定されていることを確認します。setfacl -d -m mask:007 /home/shared/
また、ディレクトリのsgid-bitを設定し、chgrpを使用して目的のグループを選択する必要があります。
chgrp the_team /home/shared/ chmod g+s /home/shared/
/home/shared/
にすでにサブディレクトリが含まれている場合は、それらの権限も変更する必要があります。ヒント:言及されているすべてのコマンドは-Rオプションを知っています。
セットする
umask 006
あなたの~/.bash_profile
デフォルトの022とは異なります。また設定します
chgrp staff # or some other group you pick
chmod g+s blah
ディレクトリのスティッキービットを有効にします。これで、その下に作成するすべてのものが、グループだけでなくモードも保持するはずです。
umask
は、作成するすべてのファイルとディレクトリのデフォルトのアクセス許可を変更しますが、この動作を特定のディレクトリのみに適用する必要がある場合は、アクセス制御リストのACLを確認してください。man acl(5)
詳細については。
シェルのcwdが変更されるたびに実行されるchpwd()関数を定義できます。その中で、ディレクトリをテストし、umaskを適切に設定します。
function chpwd {
[[ $PWD == $HOME/blah ]] && { umask 007; return }
# or, if more tests here, use case $PWD in ... esac
umask 022
}
アクセス制御リストを使用するには、ファイルシステムに「acl」フラグを設定する必要があることを忘れないでください。それ以外の場合、setfaclコマンドは「操作はサポートされていません」を返します。
たとえば、これは私のfstabファイル(/ etc/fstab)のエントリです:-
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sdb1 /media/DataDrive ext3 acl 0 0