sudo または acl または setuid/setgid?

sudo または acl または setuid/setgid?

よく分からない理由で、誰もがすべてに対して sudo を要求します。職場では、ログファイルを読み取る方法と同じ数のエントリがあります (head/tail/cat/more、...)。

ここでは sudo が負けていると思います。

私は setgid/setuid ディレクトリを組み合わせて使用​​し、ACL をあちこちに追加したいのですが、開始する前にベスト プラクティスが何であるかを実際に知っておく必要があります。

私たちのサーバーには、%admin、%production、%dba、%users など、多数のグループと多数のユーザーが存在します。各サービス (mysql、apache など) には権限をインストールする独自の方法がありますが、%production グループのメンバーは構成ファイルやログ ファイルを参照できる必要があります。適切なグループ (mysql など) に追加して適切な権限を設定するという解決策はまだあります。ただし、すべてのユーザーを usermod したくありません。アップグレードのたびに変更される可能性があるため、標準の権限を変更したくありません。

一方、ディレクトリ上で ACL を設定したり、setuid/setgid を混在させたりすることは、標準ディストリビューションを「汚す」ことなく簡単に実行できます。

あなたはこのことについてどう思いますか ?

mysql の例を挙げると、次のようになります。

setfacl d:g:production:rx,d:other::---,g:production:rx,other::--- /var/log/mysql /etc/mysql

これは良い方法だと思いますか、それとも必ず usermod -G mysql を実行して標準の権限システムで操作するべきでしょうか?

ありがとう

答え1

ベスト プラクティス: sudoers ファイルを維持し、sudo を使用します。

私の個人用マシンでは、setuid/gid を好みますが、私のコンピュータには私しかいません。また、 のような明らかに危険なものには setuid/gid を実行しませんrm

答え2

ベストプラクティス(そして最も一般的なもの)は、 を使用することですsudo。Sudo はきめ細かな制御を提供し、構成によって複数のマシンを一度に処理できます。

ACL を使用すると、これを補完できます。sudoつまり、操作をルートとして処理します。ACL は、ディレクトリとファイルへの権限をユーザーとグループに付与したり、剥奪したりします。setgid と setuid が何らかの適切な処理を実行するとは期待できません。

また、ホイール グループも実装します。これにより、セキュリティが向上します。suプログラムがホイール グループをサポートしているかどうかを確認してください。

もう 1 つ:ログファイルを読み取る方法としてviewまたは を使用している場合はless、危険にさらされます。これらのプログラムは両方ともシェル アクセスを提供します。

答え3

sudoers オプションは、setuid/setguid/ACL よりも少しコンパクトであるように思われます。

ユーザーをグループ化しないと、ACLS が非常に長くなります。ユーザーをグループ化すると、開始時と同じ状態に戻ります。

より大きな問題は、何らかの集中管理がなければ、アクセス制御がファイルシステム全体に広がることです。もちろん、マクロ、テンプレート、構成管理などを使用して簡単に回避できます。しかし、それは複雑さを軽減する役に立たないまったく別のレイヤーです。

私の小さな Drupal ショップでは、すべての作業ファイルに ACL をかなり広範囲に使用していますが、すべての管理アクセスには sudo を使用しています。私が使用している構成管理レイヤーは Ansible ですが、その優れた点は、ユーザーとその役割、つまりユーザーがどのグループに所属するか、どのマシンに所属するかなどを簡単にテンプレート化できることです。Sudoers も同様に管理されています。これは私にとっては最も透明性が高いため、かなりベスト プラクティスのように思えます。

もちろん、私はあなたほど多くのユーザーやグループを持っていないかもしれません。構成管理にも ACL を配置することは考えられます。しかし、私には、その方法で多数のマシン、多数のユーザー、多数のグループを管理する簡単な方法がわかりません。

関連情報