私はシステム管理に初めて触れました。サーバーとクライアントコンピュータを備えたラボをセットアップしました。クライアントコンピュータには、中央サーバー上のすべてのユーザーのワークスペースを持つLDAPユーザーがあります。したがって、ユーザーがログインするたびに、そのワークスペースはNFSサービスを介してクライアントシステムにマウントされ、ログアウトするとすべてのタスクがサーバーに保存されます。
これで、サーバーのローカルユーザーに制限されたルートアクセスを提供したいと思います。私はこのローカルユーザーがすべてのLDAPユーザーのホームディレクトリだけを見ることができるようにしたいと思います。サーバーでラウンドユーザーを探しているようです。また、サーバーのローカルユーザーに制限されたルートアクセスを許可するには、visudoファイルをいくつか変更する必要があると思います。
user1, %operator ALL= /home/users
ローカルユーザーuser1のvisudoファイルに上記のコマンドを追加してみました。以下のようにホイールグループにもユーザーを追加しました。
usermod -G 10 user1
しかし、何の変化も見えません。私の仕事の方法が望む結果を得られないのはなぜですかsudo
?
このアプローチがうまくいかないようで、次のように尋ねます。ユーザーが他のユーザーのホームディレクトリを読むことを許可する
答え1
いくつか:
このコマンドは、
sudo
ユーザーが(1)所有者ではないか(2)そのグループに対する読み取り権限を持つグループのディレクトリへのアクセス権を取得するのではなく、コマンドまたはコマンドセットのより高いレベルの資格情報で自分自身を昇格します。するために使用されます。ディレクトリ、または(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
ホイールチャンネル
私はあなたがroot権限をユーザーに与える古い方法であるuser groupsに言及していると思いますwheel
(私が知っている限り)su -
。この記事では、次のタイトルでこのグループの使用に関する良い議論を提供します。Linuxシステム管理。
アクセス権を付与しますか/home/<user>
?
私が知っている限り、制限したい他の方法でそのユーザーに高い権限を与えることなくこれを行うための体系的な方法はありません。この方法でアクセスする責任がある特定のユーザーを信頼しない場合、その人はおそらくその仕事に適した人ではないでしょう!
グループ
例えば。学生2人と調教1人がいるとしましょう。学生(ユーザー1とユーザー2)調教(ユーザー3)。
したがって、グループは次のようになります。
- レベル1
- vboxユーザー1
したがって、上記のユーザー(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つのアプローチ」です!
答え2
これで、サーバーのローカルユーザーに制限されたルートアクセスを提供したいと思います。
これは悪い考えのように聞こえます。
まず、データプライバシーの問題があります。このユーザーが完全なrootアクセス権を持っていることを信頼していない場合、なぜ彼はユーザーデータを持っていると思いますか?
第二に、何らかの方法でこのユーザーに制限されたルートアクセス権を与えても/home
(これは不可能だと思います)、予期しないフルルートアクセス権を付与する方法はいくつかあります。
彼はシンボリックリンクを作ることができます
/
:cd /home ln -s / evil-symlink
/home/evil-symlink/
これでルートファイルシステムがあるので、ルートのようにルートファイルシステムの内容にアクセスできます/home
。彼は
setuid
その中に実行可能ファイルを作成することができます/home
。/bin/bash
にコピーし/home/bash
て実行するchmod u+s /home/bash
と、自分だけのroot
シェルができます。
私が考えることができる権限に関係なく、ユーザーを特定のディレクトリに制限する唯一の方法は、chroot
ルートディレクトリが中断される可能性がある場合ですchroot
。
答え3
まず、何を間違っていますか?
user1, %operator ALL= /home/users
これにより、user1
ディレクトリ内のすべてのコマンドをすべてのユーザーとして実行できます。/home/users
ディレクトリに実行可能なプログラムがない場合、ルールは実際には何もしません。実行可能なプログラムがある場合は、ルールに基づいてuser1
そのプログラムを実行できます。
sudo
ユーザーにファイルへのアクセス権を付与するためには使用できず、他のユーザーとしてコマンドを実行する権限のみを付与できます。
バラよりユーザーが他のユーザーのホームディレクトリを読むことを許可するあなたがしたいことを達成する方法を見つけてください。