最近、openSUSEを使用して非常に単純なテスト環境を構築しました。
共有ディレクトリを構成しようとするといいえACLを使用していますが、何らかの理由でそのディレクトリでSetGIDを使用すると、ユーザーごとのデフォルトのumaskが022(たとえば、ディレクトリでは755、ファイルでは644)に設定されていることがわかりました。
これはで行われました/etc/login.defs
。
私は通常のユーザーにはumask 002(775個のディレクトリ/ 664個のファイル)を使用し、rootユーザーには022を使用することに慣れています。
将来のすべてのuseraddのデフォルト値に設定するには、上記のファイルでuseraddのumask値を変更する必要がありますか?システム内のすべての既存ユーザーのumaskをどのように変更しますか(もちろん、rootアカウントを除く)。
答え1
umask 022
(または0022
)は、UNIXシステムで一般的に使用されるumaskです。伝統的なスタイルのユーザーアカウントの管理。従来のアカウント管理スタイルでは、ユーザーが作成されると、ユーザーにチームや部門などの基本的なグループが提供されるか、「ユーザー」のように単純化できます。 setgidディレクトリ(「チームディレクトリ」と呼ぶことができます)は、ユーザーが明示的に書き込み可能に設定しない限り、他のチームメンバーがそのファイルに書き込むことができないため、期待どおりに機能しません。これはあまり実用的ではありません。特に、gitリポジトリの場合のように、ファイルがユーザーに透過的でない場合にはさらにそうです。 ACLはこれに完全なソリューションを提供するため、これは問題とは見なされません。
umask 002
(または0002
)は、UNIXシステムで一般的に使用されるumaskです。UPG - ユーザー個人グループ。 UPG システムにユーザーを追加すると、システムはユーザー名とユーザー ID と同じ名前とグループ ID を持つグループを作成します。 UPGは、ユーザーアカウントの管理に対するDebianに触発されたアプローチです。私が経験したように、UPGは、ユーザーがumaskをオーバーライドしない限り、setgidディレクトリに比べていくつかの利点があります。 ACLは上書きされません。
最善の解決策は、ユーザーとグループのアカウントを再構成し、UPGを有効にすることです。それでは「安全」です。
警告する!ショートカットを選択してumaskを(or)ではなく(or)/etc/login.defs
に変更するだけで、デフォルトでは、すべてのユーザーが作成したすべてのファイルが同じグループの他のすべてのユーザーに書き込まれることに注意してください。これは002
0002
022
0022
セキュリティリスクだから、これはほとんど確かにあなたが望むものではありません。
UPGシステムを導入した理由の1つは、管理者がsetgidビット(002
または0002
)の代わりにumask 022
(または0022
)を設定することで、説明されたセキュリティリスクなしにプロジェクトのコラボレーションを容易に促進できることです。
私が知っている限り、OpenSUSEはインストール中またはYaST中にUPGを有効にする方法を提供しません。 UPGを使用する唯一の方法は、コマンドラインを使用してユーザーアカウントを作成し、必要な変更を加えること/etc/login.defs
ですUSERGROUPS_ENAB yes
。ここに問題があります。 UPGは、ユーザーIDとグループIDが同じ場合にのみ正常に機能します。実行中のシステムを変更する場合は、まず既存のグループのIDを変更する必要があります。これには、そのグループを含むすべてのファイルにグループを再割り当てすることが含まれます。
以下は、私がsetgidとumaskとUPGのトピックに最初に触れたときに役に立ったトピックに関する追加資料です。
答え2
スレッドの質問に答えるには:OpenSuSEは、umask
他のLinuxディストリビューションで採用されているDebianベースの設定ではなく、既存のUnix設定を使用します。
編集/etc/login.defs
だけで十分です。これは現在ログインしているユーザーには影響を与えず、現在実行中のプログラムに強制的に変更を適用する方法もありません。また、これをオーバーライドするユーザー~/.profile
(またはシェルなど.bash_profile
によって)には影響しません。.login
useradd
これには関与しません。これはプロセス固有の設定であり、デフォルトはログイン中に設定されます(したがってlogin.defs
そうではありません/etc/default/useradd
)。
答え3
ほとんどのUnixシステムには022 umaskがあります。これは、デフォルトではユーザーだけがファイルに書き込むことができることを意味します。
各ユーザーが自分のプライマリグループに属しているシステムでは、002 umaskを持つことが便利です。しかし、このウマスクには危険があります。これは書き込み可能な多くのディレクトリに対するサポートの問題を引き起こす.ssh
ため、SSHデーモンでは無視されます。これにより、個人ファイルが共有グループに属しているときに公開されます。多くのファイルが間違ったグループに属するため、デフォルトではグループ書き込み可能に設定するのは良い考えではありません。
当時は、umaskとsetgidディレクトリがユーザー間のファイル共有を容易にする唯一の方法だったので、やや面倒でした。現在のACLは、次のように優れたパフォーマンスを発揮できます。
- 権限ビットは特定のグループに関連付けられます(グループ権限セットを個別に設定し、その権限が適用されるグループを選択する代わりに)。
- ファイル権限は、ユーザーが上書きできるユーザー設定に依存せず、ディレクトリ権限にのみ依存します。
- ファイルは複数のグループの権限を設定できます。
- グループ化されていないユーザー間でファイルを共有できます。
Umaskは廃止されました。 ACLを使用してください。
答え4
たとえば、RHELと(オープン)SuSEの1つの違いは、RHELが次に従うことです.ユーザーのプライベートグループスキーム各ユーザーのデフォルトグループは、ユーザー名と同じ名前を持つプライベートグループです。
(open)私の記憶が正しい場合、SuSEはすべてのユーザーのプライベートグループを「users」に設定します。
もちろん、ユーザーグループのメンバーがすべてのファイルを読み取ることを許可するumaskは、他のユーザーがグループのメンバーである場合は安全ではありません。これが(オープン)SuSE、RHEL、および他のシステム間でデフォルトのumaskが異なる理由です。
したがって、システム全体のumaskを変更する前に、セキュリティに与える影響を確認してください。