私はシステム管理に不慣れです。サーバーとクライアントマシンがあるラボがセットアップされています。クライアントマシンには、集中サーバー内のすべてのユーザーの作業領域を持つLDAPユーザーがいます。したがって、ユーザーがログインするたびに、ユーザーの作業領域はクライアントマシンのNFSサービスを介してマウントされ、ユーザーがログアウトすると、すべての作業がサーバーに保存されます。
ここで、サーバー内のローカルユーザーに制限付きのrootアクセスを許可したいと思います。このローカルユーザーがすべてのLDAPユーザーのホームディレクトリを表示できるようにしたいのですが、それ以外は何も表示できません。サーバーでホイールユーザーを探していると思います。また、サーバー内のローカルユーザーに制限付きのルートアクセスを許可するために、visudoファイルにいくつかの変更を加える必要があると思います。
user1, %operator ALL= /home/users
ローカルユーザーuser1のvisudoファイルに上記のコマンドを追加してみました。また、以下のようにユーザーをホイールグループに追加しました。
usermod -G 10 user1
ただし、変化は見られません。 Sudo
を使用したアプローチが機能しなかったのはなぜですか?
このアプローチは機能していないように思われるので、私は尋ねました: ユーザーに他のユーザーのホームディレクトリの読み取りを許可する
いくつかのこと:
コマンドSudo
は、コマンドまたはコマンドセットのいずれかについて、より高いレベルの資格情報に昇格するためのものであり、(1)所有者でもないディレクトリへのアクセスを取得するためのものではありません。上記のディレクトリへの読み取り権限を持つグループ内、または(3)ディレクトリに他の権限が公開されていない。
ファイル/etc/sudoers
は、特定のシステムのすべてのルールを含み、どのユーザー、ユーザーのグループが、通常はroot
として、または他のユーザーとしてどのコマンドを昇格して実行できるかを規定するファイルです。アカウント。通常、このファイルを直接編集したくない[〜#〜]しない[〜#〜]ことはできますが、編集しないことをお勧めします。
コマンドvisudo
は、/etc/sudoers
ファイルを編集するための所定の方法です。
ユーザーがアクセスできるSudo資格情報を確認する場合、最も簡単な方法は、そのユーザーになり、コマンドSudo -l
を実行することです。
$ Sudo -l
Matching Defaults entries for saml on this Host:
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User saml may run the following commands on this Host:
(ALL) ALL
(root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root) /usr/lib/jupiter/scripts/resolutions, (root)
/usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root) /usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
あなたはユーザーのグループwheel
を参照していると思います。これは、(私の知る限り)su -
を介してrootになる権限をユーザーに付与する古い方法です。この記事は、このグループの使用法について、次のように説明しています。 Linuxシステムの管理 。
/home/<user>
へのアクセスを許可しますか?私の知る限り、制限しようとしている他の方法でこのユーザーに昇格された特権を与えずにこれを行う体系的な方法はありません。この特定のユーザーがこの方法でアクセスする責任を信頼していない場合、彼らはおそらくこの作業を行うのに適切な人物ではないと思います。
例えば。 2人の学生と1人のTAがいるとします。学生(user1&user2)TA(user3)。
したがって、グループは次のようになります。
したがって、上記のユーザー(1〜3)のいずれかとしてシステムにログインすると、グループは次のようになります。
$ groups
users vboxusers class1
このグループは、学生の自宅のディレクトリにも設定する必要があります。
$ ls -l /home/user1 | head -3
total 37784
drwxrwxr-x 2 saml class1 4096 May 16 22:02 alsa
drwxrwxr-x 31 saml class1 4096 Mar 26 12:09 apps
これは1つのアイデアにすぎず、このアプローチには問題がありますが、提供した情報を考えると、「それを行う1つの方法」です。
ここで、サーバーのローカルユーザーに制限付きのルートアクセスを許可したいと思います。
これは悪い考えのように聞こえます。
まず、データプライバシーの問題があります。このユーザーが完全なルート権限を持っていると信頼していない場合、なぜユーザーのデータで彼を信頼するのでしょうか。
第二に、どういうわけかこのユーザーに/home
への制限付きルートアクセスを許可することに成功したとしても(これは不可能だと思います)、おそらく予期しない完全なルートアクセスを取得する方法がいくつかあります。 :
彼は/
へのシンボリックリンクを作成できます。
cd /home
ln -s / evil-symlink
これで、ルートファイルシステムは/home/evil-symlink/
内にあるため、ルートとして/home
としてルートファイルシステムのコンテンツにアクセスできます。
彼は/home
内にsetuid
実行可能ファイルを作成できます。 /bin/bash
を/home/bash
にコピーし、chmod u+s /home/bash
を実行すると、独自のroot
シェルが作成されます。
私が思いつくことができる権限に関係なく、ユーザーを特定のディレクトリに制限する唯一の方法はchroot
であり、rootがchroot
から抜け出すことができることは一般的な知識です。
まず、あなたが間違ったこと:
user1, %operator ALL= /home/users
これにより、user1
はディレクトリ/home/users
内の任意のコマンドを任意のユーザーとして実行できます。そのディレクトリに実行可能プログラムがない場合、ルールは事実上何もしません。そこに実行可能プログラムがある場合、ルールはuser1
がそれらを実行することを許可します。
Sudo
を使用して、ユーザーにファイルへのアクセス許可を与えることはできません。別のユーザーとしてコマンドを実行する許可のみを与えることができます。
実行しようとしていることを実行する方法については、 ユーザーが他のユーザーのホームディレクトリを読み取れるようにする を参照してください。