他の人が実行権限を持たずに自分だけを持つことができるように、自分のグループから新しいファイルをそれぞれ継承したいのですが、新しいファイルを作成しようとすると664権限が与えられます。この問題をどのように解決しますか?
sudo adduser $USER cyber_espionage
sudo chown $USER:cyber_espionage ~/Documents/tool
sudo chmod 775 ~/Documents/tool
sudo chown $USER:cyber_espionage -R ~/Documents/tool
sudo chmod 2700 -R ~/Documents/tool
sudo find ~/Documents/tool -type d -exec chmod 775 "{}" \;
sudo find ~/Documents/tool -type f -name "*.py,*.sh" -exec chmod +x "{}" \;
sudo find ~/Documents/tool -type f -name "*.sh" -exec chmod +x "{}" \;
ベストアンサー1
背景
このコマンドを使用してファイル権限モードマスクを設定する必要がありますumask
。これにより、そのディレクトリにコピーされたすべての新しいファイルに権限が設定され、アクティブな権限ビットのみがumask
新しくコピーされたファイルに伝播されます。
$ umask
0022
# -or- symbolically
$ umask -S
u=rwx,g=rx,o=rx
上記の権限は省略g=w
できますo=w
(無効、有効)。次のタイトルのU&L Q&Aをご覧ください。ビットを実行して読み出します。 Linuxでは、ディレクトリ権限はどのように機能しますか?不明な場合は、権限の詳細をご覧ください。
ノートUnix はumask
マスクであるため、多少混乱するトピックである可能性があるため、許可ビットをマスクして使用するビットを指定する代わりに、望ましくないビットを伝えます。
より簡潔に:
生成されたファイルの許可ビットにのみ追加の
umask
マスクを適用します。ファイルの許可ビットは、主にファイルを生成したプログラム、特に次のように決定されます。モードパラメータcreat()
またはシステムコールopen()
。これ実行ビット通常、理由がない場合(例:実行可能ファイルの生成)は設定されません。どの値も、umask
作成者が指定しないビットを追加することはできません。umask
ビットリセット。
あなたの問題
それでは質問に戻り、次のようにしますtouch afile
。
$ touch afile
$ ls -l afile
-rw-r--r-- 1 vagrant vagrant 0 Jul 8 11:45 afile
指定されたグループに対して上でumask
設定された権限はビットオフ状態(書き込みなど)になり、他の権限はビットオフ状態(書き込み)になります。0022
2
2
umask
に設定0007
して削除し、もう一度タッチすると次のようになりますafile
。
$ umask 0007; rm -f afile; touch afile; ls -l
total 0
-rw-r----- 1 vagrant vagrant 0 Jul 8 11:56 afile
他のユーザーがファイルにアクセスできないように許可されました(0007)。これは、他のコンポーネントに対する権限のすべてのビット(rwx)をオンにし、設定によって設定されないようにumask
「保護」したためです。
Unix権限を介して他のユーザーのディレクトリアクセスを制限するには、umask 0007
「その他」のユーザーグループを制限する権限を設定します。
メモ:他の人は自分が属するUnixグループに設定されている場合でもファイルにアクセスできます。これを制限するには、umask
に設定しますumask 0077
。