コマンドをブロックする方法、特定のユーザーに対してmkdir
としましょう?
読み取り専用関数を作成してユーザープロファイルに保存したのは、~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
テスト:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
だから私の質問はこれを達成する方法は何ですか?これのためのツールはありますか?
Update 1#しかし、ユーザーが賢い場合は、mkdirバイナリをコピーして名前を変更して使用できます。これを達成するにはどうすればよいですか?
Bashでそれを行う方法はわかりませんが、ユーザー環境を制限する別のシェル lshell(制限付きシェル) を知っています。
構成の概要
LshellはINIファイルを介して構成されます。デフォルトでは、許可されたコマンドのホワイトリストを保持しますが、ユーザーが特定のコマンドを使用できないように簡単に構成できます。
この構成(デフォルトの設定/etc/lshell.conf
)は、ユーザーfoo
がmkdir
を使用することを禁止します:
[foo]
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']
デフォルトでlshellを使用するようにユーザーアカウントを構成するには、以下を行う必要があります。
chsh -s /usr/bin/lshell foo
Lshellは次のようなことができます。
|
など)の使用を制限できます。もっと。
更新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によって強制されます)。ユーザーには、プライベート~/bin
を指す読み取り専用のPATHで適切に保護されたrbash
が与えられます。この~/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
、TMOUT
、HISTFILE
変数などを考えてください)。
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/mkdir
、chmod g-x /bin/mkdir
。これは、ユーザーがグループを変更できないことに依存していることに注意してください。 IIRCこれはGNU/Linuxには当てはまりますが、他の一部のUnicesには当てはまりません。
私がテストした最高の方法は、Profile.dを使用することです。
[root@newrbe ~]# vim /etc/customalias.sh
下の行を追加:
alias rm="echo remove contenet is restricted"
alias poweroff="echo Poweroff is restricted"
alias chmod="echo Change Permission is restristed"
保存して終了
/etc/profile.d/この場所にはbash補完用のファイルが含まれています
[root@newrbe ~]# vim /etc/profile.d/customsource.sh
ファイルの下に以下の行を追加します。これらの行は、以下のユーザーのために言及されたコマンドをブロックします
if [ `whoami` == "user1" ] && [ `whoami` == "user2" ]; then
source /etc/customalias.sh
fi
保存して終了
終了して再ログインします
よろしく、-Mansur