特定のユーザーまたはグループがパスワードなしで/bin/dateへのrootアクセス権を持つことを許可する

特定のユーザーまたはグループがパスワードなしで/bin/dateへのrootアクセス権を持つことを許可する

マニュアルページで定義されているすべての種類のパラメータを含む、/bin/dateコマンドへのフルルートアクセス権をユーザーまたはグループに付与したいと思います。

明示的なコマンド定義が必要であることを理解しているので、/etc/sudoers現在は次のようになります。

%some_group ALL=(root) NOPASSWD: /bin/date

たとえば、some_groupのすべてのユーザーが次のことを実行できるとします。

sudo /bin/date +%T "12:34:56"

さらに、他の多くの主張の組み合わせもあります。

私の質問は、正規表現や安全な(安全に焦点を当てます!)ワイルドカードを使用してより細かく細分化する方法はありますか?

修正する

私はCmnd_Aliasに似たものを達成しました。これがなければうまくいかない理由は、もっと読む時間とsudoerの内部操作をsudo除いてミステリーです。

あなたの構文は完全に受け入れられていませんが、次のことで必要なことを達成しました。

Cmnd_Alias DATE=/bin/date
%some_group ALL=(root) NOPASSWD: DATE

これがまさに定義グループのメンバーとして私に必要なものです。

ベストアンサー1

GNU / Linuxを使用していて、特定のユーザーが「新しい」ものを使用できると感じている場合は、pam_cap.so通常のユーザーはCAP_SYS_TIMEまたはなしでシステム時間を変更できます。デフォルトでは、認証(または何でも)のためのセッションモジュールとして設定し、必要なユーザー/機能を追加してから操作を実行します。ただし、pam_capはまだグループ操作を実行できないため、これを実行したいユーザーごとにコピー/貼り付けする必要があります。sudosusshlogin/etc/security/capability.confsetcap CAP_SYS_TIME+ei /bin/date

すべてのシステムユーザーがシステム時間を変更できるようにするには、すべてのpam_capエントリを忘れて、setcap CAP_SYS_TIME+ep /bin/date本質的に機能的に同様の操作を実行してsetuidビットをバイナリに追加するだけです(つまり、スクリプトではそれを実行できません)。 (実行ファイルを作成すると、機能フラグとsetuid / setgidビットがカーネルによってクリアされます。)

datesudoを介して実行するのはかなり安全です(直接交換に加えて、これらの単純なユーティリティを悪用する方法はあまりありませんが、攻撃者はrootのみの書き込みアクセス権を持つディレクトリに書き込む方法を見つける必要があります)。ただし、この機能を使用すると、エンドユーザーに権限を付与する方がスムーズに見えます。 (「ああ、これをsudoしなければならない」と思う必要はなく、ただ好きなようにすれば動作します。) )と制限付き(特定の昇格された権限セットのみを付与する) sudoはsetuid専用メカニズム(少なくとも現在では)であり、これまたはその実行ファイルの観点からのみ考えることができます。これらのファイルが何であれ(バイナリであっても作成したスクリプトであれ)、それに関係なく使用できます。これを行うには、root権限が必要であり、ユーザーに実行可能ファイルへのアクセス権を付与した理由に関連しない権限も含まれます。

setuidは古いものです古いほとんどのGNU / LinuxとUnixの実装では本質的に消えました。フルルートアクセスを許可するのは鳥のためのものです。ユーザーがシステム時間を変更できるようにするには、なぜCAP_SYS_ADMINまたはCAP_NET_ADMINを付与するのですか?もちろん、悪いことをするためにそれを悪用する方法を考えることはできませんが、ほとんど/bin/dateの悪用は発見され実証されるまで直感的ではありません(ソフトウェアに明らかな悪用が含まれていないことを願っています)。

*BSD または Solaris を使用する場合、「機能」の代わりに「権限」という同じ概念があります。 「機能」はすでにそのプラットフォームのセキュリティ関連メカニズム名であるためです(およそLxCに似ています)。またはSELinux、FWIW)。実装の詳細は権限とLinuxの機能によって異なりますが、基本的な概念は同じです(Solaris 11が「rootとしての役割」セキュリティモデルを実装する方法)。

おすすめ記事