GNU/Linux >> Linux の 問題 >  >> Linux

特定のユーザーに対して Linux で特定のコマンドをブロックする

bash でそれを行う方法はわかりませんが、ユーザー環境を制限する別のシェルを知っています:lshell (制限付きシェル)。

構成の概要

Lshell は、INI ファイルを介して構成されます。デフォルトでは、許可されたコマンドのホワイトリストを保持していますが、ユーザーが特定のコマンドを使用することを禁止するように簡単に構成できます.

この構成 (デフォルト conf /etc/lshell.conf ) ユーザー foo を禁止します mkdir の使用から :

[foo]
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']

デフォルトで lshell を使用するようにユーザー アカウントを構成するには、次のことを行う必要があります。

 chsh -s /usr/bin/lshell foo

Lshell では、次のようなことができます:

  • 3 レベルの粒度:ユーザー、グループ、すべて
  • システム内の特定のパスへのアクセスを制限できます。
  • 特定の文字の使用を制限できます (| など) ).
  • SSH 経由でのみ特定のコマンドの使用を制限できます。

更新 1# 追加されたテスト結果:

rahul:~$ which bash
/bin/bash
rahul:~$ dd if=$(which bash) of=my_bash
*** forbidden syntax: dd if=$(which bash) of=my_bash
rahul:~$ bash
*** forbidden command: bash
rahul:~$ cp /bin/bash my_bash
*** forbidden path: /bin/bash
rahul:~$ /bin/bash
*** forbidden command: /bin/bash
rahul:~$ sh
*** forbidden command: sh
rahul:~$ dash
*** forbidden command: dash
rahul:~$ env bash
*** forbidden command: env
rahul:~$ cp /bin/mkdir mycreatedir
*** forbidden path: /bin/mkdir

私が通常この種の制限を実装する方法では、いくつかの条件が満たされている必要があります。それ以外の場合、制限は簡単に回避できます:

  • ユーザーは wheel に属していません su の使用を許可された唯一のグループ (PAM 経由で強制)
  • ユーザーには適切に保護された rbash が与えられます プライベート ~/bin を指す読み取り専用の PATH を使用 、この ~/bin/ ディレクトリには、簡単なユーティリティへのリンクが含まれています:

    $ ll ~/bin
    total 0
    lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
    lrwxrwxrwx. 1 root dawud  7 Sep 17 08:58 df -> /bin/df*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
    lrwxrwxrwx. 1 root dawud  8 Sep 17 08:58 env -> /bin/env*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
    lrwxrwxrwx. 1 root dawud  9 Sep 17 08:58 grep -> /bin/grep*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
    lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
    lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
    
  • ユーザーには制限付きの読み取り専用環境が与えられます (LESSSECURE のようなものを考えてください) 、 TMOUTHISTFILE 変数)

  • ユーザーは SELinux ユーザー staff_u にマップされます sudo を介して、必要に応じて他のユーザーとしてコマンドを実行する権限が付与されます .
  • ユーザーの /home/tmp おそらく /var/tmp /etc/security/namespace.conf を介してポリインスタンス化されます :

    /tmp       /tmp/.inst/tmp.inst-$USER-     tmpdir:create   root
    /var/tmp   /tmp/.inst/var-tmp.inst-$USER- tmpdir:create   root
    $HOME      $HOME/$USER.inst/              tmpdir:create   root
    

    また、/etc/security/namespace.init root が所有し、ユーザーに対してすべてのスケルトン ファイルを読み取り専用にします。 .

このようにして、$USER かどうかを選択できます mkdir を実行できます 彼/彼女自身に代わって (プライベート ~/bin のリンク経由で) ディレクトリ、/etc/skel 経由でプロビジョニング 、上記で説明したように)、他のユーザーに代わって (sudo 経由) ) またはまったくありません。


ダミー グループを追加し、ユーザーをそのグループに追加します chown root:somegroup /bin/mkdirchmod g-x /bin/mkdir .これは、ユーザーがグループを変更できないことに依存していることに注意してください。 IIRC これは GNU/Linux では当てはまりますが、他の一部の Unice では当てはまりません。


Linux
  1. すべてのユーザーに必要な20のLinuxコマンド

  2. Linuxマシンでrootユーザーのリモートログインを無効にする方法

  3. Linuxsuコマンド

  1. LinuxでユーザーのSudo権限を設定する方法

  2. Linux で特定のユーザーに対して特定のコマンドを無効にする方法

  3. Linux での login コマンドの例

  1. Linuxユーザー向けの12のIPコマンド例

  2. Linux での adduser コマンドの例

  3. Linux での sudo コマンドの例