sudoersファイルを編集してユーザーのコマンドを制限する


8

sudoersファイルを編集して、ユーザーが指定したコマンド以外のコマンドでsudoを使用できるようにすることはできますか?私は真実だと思います。sudoersファイルは、ユーザーが特定のコマンドリストのみを実行できるように設定できると思います。

編集:私が本当に奪いたいコマンドは停止と再起動です...これは私に停止と再起動のための特別なシステムコールがあると思います。システムコールをユーザーから削除できますか?そうでない場合、それはunix許可システムがシステムコールを抽象化してこれを無視しているためですか?

回答:


5

別の見方をすると、ユーザーがほとんど無制限のrootアクセスを持っている場合、簡単に完全なrootアクセスを取得できるということです。

あなたは何かをうまくできるかもしれませんが、それは簡単に回避されます。

しかし、SElinuxは可能な方法ですが、学ぶにはかなりの時間がかかります。


3

やりたいことを実行するには(ユーザーフォームを停止、再起動、シャットダウンを実行し続ける)、SElinuxを調べて、ユーザーがこれらのシステムコールを実行できないようにする必要があります。それ以外の場合、ユーザーは最初に/ bin / shを実行してから、sudoを実行せずに/ bin / haltを実行します。


2
または、シェルを取得できるジリオンプログラムのいずれか、または独自のスクリプト。
ロナルドポトル2009

3

彼らがsudoを介して行うすべてのことをログに記録します。おそらく、再度それを行わないように要点を伝える何らかの方法があるでしょう。

Defaults logfile=/var/log/sudolog 

彼らが実行するすべてのコマンドをログに記録します。詳細については、Googleで少し調べてください。


一元化されたロギングが必要であり、シェルを実行している場合はそれらを叫ぶ必要があります。シェルは、たとえばエディターから取得できます。または男性男性など
ジェームズ

3

はいといいえ...ユーザーが特定のファイルの前に強打(!)を付けることで、そのファイルを実行できないようにすることができます。

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

別のユーザーとして特定のファイルへのアクセスを許可する


上記の「シェル」を設定する方法の例:Cmnd_Alias SHELLS = / bin / sh、/ bin / ksh、/ bin / bash、/ bin / zsh、\ / bin / csh、/ bin / tcsh、\ / usr / bin / login、/ usr / bin / su
プルチャー

一連のユーティリティを使用すると、コマンドをrootとして実行できます(tar、リンク、頭の上からnmap)。本当の解決策は、a)rootとして実行するコマンドをホワイトリストに登録するか、b)単に雇うことだと思いますあなたが信頼する誰か
一部のLinux Nerd

2

ユーザーが本当に再起動したい場合は、方法を見つけます。sudo -ssudo -isudo $EDITOR /etc/sudoers...あなたの制限を削除するために使用することができます。

また、Unixライクなシステムでは、root(uid 0)である限り、システムを再起動できます。これらのシステムコールを制限する方法を見つけたら、これを行うことができます:

user $ echo b | sudo tee / proc / sysrq-trigger

またはそのバリエーション。または、カーネルパニックを引き起こして再起動します。または...

最後に、rootアクセスを持つことで、通常、適用されている制限を削除することができます。


Linuxがもはやセキュアレベルを持っていないのは残念です。完璧ではありませんでしたが、簡単に設定できました。それらは再起動を妨げませんでしたが、他の多くのものを妨げました。そして、それらは非常に簡単だったので、すべてのシステムで使用できました。微調整などは必要ありません。
トーマス

LinuxではなくBSDにありませんか?
user1686 2009

1

ルートとしてvisudoを呼び出して、「ユーザー」が/ sbin / haltを実行できないようにします。

user ALL=(ALL) NOPASSWD: !/sbin/halt

リクエストは、ユーザーが実行を許可されていないコマンドのリストに対するものであったと思います
ウェイン

1

この方法にはリスクがあります。多くの場合、同じアクションを実行する方法がいくつかあります。たとえば、telnit 6またはinit 6も再起動します。カーネルを強制的にコアダンプして再起動する方法もあるかもしれません。


1

次の行は、ユーザー「jim」が/ usr / bin / killと/ usr / bin / su以外のすべてを実行できるようにする必要があります。

jim          ALL= !/usr/bin/kill,!/usr/bin/su

0

これはテストされておらず、YMMVですが、実行したくないコマンドのcmd_listを設定してから、指定したグループ/ユーザーに対して!cmd_listを使用するのはどうですか?

私はこれをテストするためのアクセス権がなく、Sudoersマニュアルのオンラインマニュアルページを見ただけなので、一部の専門家が私が間違っている場合はここで修正します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.