ユーザーがsudoを介して他のユーザーのホームディレクトリを表示できるようにする

ユーザーがsudoを介して他のユーザーのホームディレクトリを表示できるようにする

私はシステム管理に初めて触れました。サーバーとクライアントコンピュータを備えたラボをセットアップしました。クライアントコンピュータには、中央サーバー上のすべてのユーザーのワークスペースを持つLDAPユーザーがあります。したがって、ユーザーがログインするたびに、そのワークスペースはNFSサービスを介してクライアントシステムにマウントされ、ログアウトするとすべてのタスクがサーバーに保存されます。

これで、サーバーのローカルユーザーに制限されたルートアクセスを提供したいと思います。私はこのローカルユーザーがすべてのLDAPユーザーのホームディレクトリだけを見ることができるようにしたいと思います。サーバーでラウンドユーザーを探しているようです。また、サーバーのローカルユーザーに制限されたルートアクセスを許可するには、visudoファイルをいくつか変更する必要があると思います。

user1, %operator ALL= /home/users

ローカルユーザーuser1のvisudoファイルに上記のコマンドを追加してみました。以下のようにホイールグループにもユーザーを追加しました。

usermod -G 10 user1

しかし、何の変化も見えません。私の仕事の方法が望む結果を得られないのはなぜですかsudo

このアプローチがうまくいかないようで、次のように尋ねます。ユーザーが他のユーザーのホームディレクトリを読むことを許可する

答え1

いくつか:

  1. このコマンドは、sudoユーザーが(1)所有者ではないか(2)そのグループに対する読み取り権限を持つグループのディレクトリへのアクセス権を取得するのではなく、コマンドまたはコマンドセットのより高いレベルの資格情報で自分自身を昇格します。するために使用されます。ディレクトリ、または(3)ディレクトリには、世界中に公開されている他の権限はありません。

  2. このファイルには、/etc/sudoers特定のシステムに関するすべてのルールが含まれており、どのユーザー、ユーザーグループがどのコマンドを昇格した権限(root通常は以下に示す)で実行できるか、または他のユーザーアカウントを指定します。普段やりますいいえこのファイルを直接編集することはできますが、そうしないことをお勧めします。

  3. このコマンドはvisudoファイルを編集するための規定された方法です/etc/sudoers

  4. ユーザーがアクセスできる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ユーザーにファイルへのアクセス権を付与するためには使用できず、他のユーザーとしてコマンドを実行する権限のみを付与できます。

バラよりユーザーが他のユーザーのホームディレクトリを読むことを許可するあなたがしたいことを達成する方法を見つけてください。

関連情報