テストマシンの1つにアクセスできsudo
、私を制限するコマンドは次のとおりです。
user_sree@sel8585:~> sudo -l
user_sree's password:
User user_sree may run the following commands on this host:
(ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod,
!/usr/sbin/visudo
これは私が走ることができないvisudo
ことを意味します/usr/sbin/visudo
。私はこれを確認しました:
user_sree@sel8585:~> sudo /usr/sbin/visudo
Sorry, user user_sree is not allowed to execute '/usr/sbin/visudo' as root on sel8585.
これで好奇心にシンボリックリンクを作成しました/usr/sbin/visudo
。
ln -s /usr/sbin/visudo myvi`
このソフトリンクを呼び出してsudoersファイルにアクセスしようとしましたが、うまくいきました。
user_sree@sel8585:~> sudo /home/user_sree/myvi
myvi: /etc/sudoers.tmp unchanged
同様に、ソフトリンクを生成して他の制限されたコマンドを実行できます。
他の人のために設定したい場合は、sudo
他の人が設定できないようにするにはどうすればよいですか?私は彼らがソフトリンクを生成することを制限したくありません。
user_sree@sel8585:~> sudo -l | grep bash
(ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod,
同様に:
user_sree@sel8585:~> sudo sh -c 'ls'
Sorry, user user_sree is not allowed to execute '/usr/bin/sh -c ls' as root on sel8585.
これでシンボリックリンクはmybash
次のようにリンクされます/bin/bash
。 (私のシステムでは、/usr/bin/sh
次のように接続されています/bin/bash
。)
user_sree@sel8585:~> sudo /home/user_sree/mybash -c 'ls'
空のmybash myvi sudoers.back test.pp
user_sree@sel8585:~> ll my*
lrwxrwxrwx 1 user_sree users 9 Jul 16 14:10 mybash -> /bin/bash
lrwxrwxrwx 1 user_sree users 16 Jul 16 14:13 myvi -> /usr/sbin/visudo
添付:
Cmnd_Alias NSHELLS = /bin/sh,/bin/bash,/bin/ksh
Cmnd_Alias NSU = /bin/su
Cmnd_Alias NCMDS = /usr/bin/passwd,/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod,/usr/sbin/visudo
user_sree ALL=(ALL) ALL, !NSHELLS, !NSU, !NCMDS
/etc/sudoers
上記はファイルのエントリです。
答え1
正直なところ、ユーザーがいくつかのコマンドを除いてすべてを実行することを許可した場合、問題が発生します。
user*
たとえば、コマンドへのアクセスを無効にしても、ユーザーはvipw
テキストエディタを使用してパスワードとシャドウファイルを実行または編集できます。たとえば、アクセスをロックすると、vi
他のテキストエディタをインストールして使用するのを防ぐのはなぜですか?または、cat
組み込みシェルを使用してecho
新しいユーザーを追加できますか?
sudo
「このコマンドを除くすべて」にアクセスできません。代わりにALL
、エントリを削除して許可されるエントリを定義してから、許可されたコマンドにのみアクセス権を付与してください。