一般ユーザーがRHELで制限されたコマンドセットのみを実行するように制限する方法は?

一般ユーザーがRHELで制限されたコマンドセットのみを実行するように制限する方法は?

一般ユーザーがRHELで制限されたコマンドセットを実行しないように制限する方法は?

ベストアンサー1

ユーザーに強制的に使用させることができます。限られた殻

オプション1 -方法:制限付きシェル(rssh)を使用するようにユーザーアカウントを構成する


オプション#2 -ここ説明ですRed Hatで制作RHELでこれを行う方法

免責事項:これは単なるハッキングであり、実際の本番用途にはお勧めできません。

一般ユーザーには、/bin/ および /usr/local/bin/ で使用可能な特定のコマンドを実行する権限が付与されているため、これらの権限を削除してユーザーが特定のコマンドセットのみを実行するように制限するには、次の手順が役立ちます。

  1. 制限されたシェルを作成します。

    # cp /bin/bash /bin/rbash
    
  2. シェルのターゲットユーザーを制限されたシェルに変更します。

ユーザーを作成するとき:

    # useradd -s /bin/rbash localuser

既存のユーザーの場合:

    # usermod -s /bin/rbash localuser

詳細についてはKBaseの記事8349をご覧ください。

その後、ユーザーlocaluserはルートが変更され、ホームディレクトリである/home/localuser以外のリンクにアクセスできなくなります。

  1. /home/localuser/ 以下にプログラムのようなディレクトリを作成します。

    # mkdir /home/localuser/programs
    
  2. これで、ユーザーlocaluserは実行が許可されているすべてのコマンドにアクセスできます。これらのコマンドは、/home/localuser/.bash_profile で設定された環境 PATH 変数から取得されます。次のように修正してください。

    # cat /home/localuser/.bash_profile  
    # .bash_profile  
    
    # Get the aliases and functions  
    if [ -f ~/.bashrc ]; then  
    . ~/.bashrc  
    fi  
    # User specific environment and startup programs  
    PATH=$HOME/programs  
    export PATH
    

ここで PATH 変数は ~/programs ディレクトリに設定されます。 /usr/local/bin は /home/username/bin にバインドされ、/bin は /home/username/bin にバインドされます。

  1. これで、ユーザーはユーザー名localuserとしてログインした後に単純なコマンドを実行できなくなります。出力は次のとおりです。

    [localuser@example ~]$ ls  
    -rbash: ls: command not found  
    [localuser@example ~]$ less file1  
    -rbash: less: command not found  
    [localuser@example ~]$ clear  
    -rbash: clear: command not found  
    [localuser@example ~]$ date  
    -rbash: date: command not found  
    [localuser@example ~]$ ping redhat.com  
    -rbash: ping: command not found
    
  2. これで、ユーザーlocaluserが/home/localuser/programsディレクトリから必要なコマンドを実行できるように、ソフトリンクを作成します。

    # ln -s /bin/date /home/localuser/programs/  
    # ln -s /bin/ls /home/localuser/programs/  
    # ll /home/localuser/programs/  
    total 8  
    lrwxrwxrwx 1 root root 9 Oct 17 15:53 date -> /bin/date  
    lrwxrwxrwx 1 root root 7 Oct 17 15:43 ls -> /bin/ls
    

以下は、dateコマンドとlsコマンドを使用した例です。

  1. localuserユーザーとして再度ログインし、コマンドを実行してみてください。

    [localuser@example ~]$ date  
    Mon Oct 17 15:55:45 IST 2011  
    [localuser@example ~]$ ls  
    file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 programs  
    [localuser@example ~]$ clear  
    -rbash: clear: command not found
    
  2. ユーザーが.bash_profileを変更できるため、ユーザーが.bash_profileを変更できないように制限する手順を追加することもできます。

次のコマンドを実行して、ユーザーlocaluserの.bash_profileファイルを変更できないようにします。これにより、root / localuserはrootが変更できない権限を削除するまでファイルを変更できません。

    # chattr +i /home/localuser/.bash_profile

不変タグを削除するには、

    # chattr -i /home/localuser/.bash_profile

ユーザーlocaluserが環境パスを変更できないように.bash_profileファイルを変更できないようにします。

おすすめ記事