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

引用する

答え2

これを行うと、私には実行権限があり、他の人はいません。

...
chmod 2700 -R ~/Documents/tool

やめれば十分だ。このコマンドによれば、ユーザー(およびスーパーユーザー)だけがその中のファイルrootにアクセスできます。~/Documents/tool/

内部ファイルをアクセスモードに変更する必要はありません700。したがって、ここでは-Rオプションを使用する必要はありませんchmod。そして、あなたはあなたのものを操作する必要はありませんumask

まず、現在使用されている製品はすでに汎用用途に適していますumask0002

第二に、頼る場合によっては、GNOMEファイル、テキストエディタなどがリセットされていることをumask発見すると、気分が良くなりますumask(たとえば、GDMで始まるFedora 28のGnome 3の内部)。これらのアプリケーションはsystemd --userサービス内部で実行されるため(startupから起動されますdbus.service)、次のシステム問題の影響を受けます。https://github.com/systemd/systemd/issues/6077 残念ながら、これを安定して再構成する方法はありません。

特定の他のユーザーをそのグループに追加してアクセス権を付与する必要がない限り、新しいグループを作成する必要はありません。

グループに別のユーザーを追加し、それを使用して読み取り(および実行)または読み取り+書き込みアクセスを許可する場合は、いくつかの異なる手順が必要です。で終わるパターンは、700所有ユーザーにのみアクセスを許可するため、使用しません。

グループ書き込みアクセスの場合、GNOMEのように動作するアプリケーションを使用してこれらのファイルを生成するには、システムの問題に対する回避策も実装する必要があります。システムユーザーサービスの問題は、umaskを0022逆にリセットすることです。繰り返します。安定して再構成できる方法はありません。

関連情報