Linuxコマンドで私が間違っているのでしょうか? [コピー]

Linuxコマンドで私が間違っているのでしょうか? [コピー]

他の人が実行権限を持たずに自分だけを持つことができるように、自分のグループから新しいファイルをそれぞれ継承したいのですが、新しいファイルを作成しようとすると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設定された権限はビットオフ状態(書き込みなど)になり、他の権限はビットオフ状態(書き込み)になります。002222

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

引用する

おすすめ記事