명령을 차단하는 방법, 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 (limited shell)을 알고 있습니다.
구성에 대한 간단한 개요
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은 다음과 같이 더 많은 작업을 수행 할 수 있습니다.
- 세 가지 수준의 세분성 : 사용자, 그룹, 모두
- 시스템의 특정 경로에 대한 액세스를 제한 할 수 있습니다.
- 와 같은 특정 문자의 사용을 제한 할 수 있습니다
|
. - 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
개인에 읽기 전용 PATH을 가리키는를~/bin
,이~/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
변수). - 사용자는 SELinux 사용자
staff_u
에게 맵핑되며을 통해 다른 사용자로서 명령을 실행할 수있는 권한이 부여됩니다sudo
. -
사용자는의
/home
,/tmp
그리고 아마도/var/tmp
통해 polyinstantiated 있습니다/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를 사용하는 가장 좋고 안전한 방법입니다.
1 단계 (별칭 파일 작성)
[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"
저장 및 종료
2 단계 (프로파일 로더 작성)
/etc/profile.d/이 위치에는 bash 완료를위한 파일이 있습니다.
[root@newrbe ~]# vim /etc/profile.d/customsource.sh
파일 아래에 아래 줄을 추가하십시오.
if [ `whoami` == "user1" ] && [ `whoami` == "user2" ]; then
source /etc/customalias.sh
fi
저장하고 종료
이제 종료하고 다시 로그인
감사합니다 -Mansur
답변
sudoers를 설치하고 그 사용자와 what 명령을 구성하십시오.