일반 사용자가 RHEL에서 제한된 명령 세트를 실행하지 못하도록 제한하는 방법은 무엇입니까?
답변1
사용자에게 강제로 사용하도록 할 수 있습니다.제한된 껍질.
옵션 1 -방법: 제한된 셸(rssh)을 사용하도록 사용자 계정 구성
옵션 #2 -여기설명입니다레드햇에서 제작RHEL에서 이를 수행하는 방법
면책조항: 이것은 단지 해킹일 뿐이며 실제 프로덕션 용도로는 권장되지 않습니다.
일반 사용자에게는 /bin/ 및 /usr/local/bin/에서 사용 가능한 특정 명령을 실행할 수 있는 권한이 부여되었으므로 이러한 권한을 제거하고 사용자가 특정 명령 세트만 실행하도록 제한하려면 다음 단계가 유용합니다.
제한된 쉘을 생성하십시오.
# cp /bin/bash /bin/rbash
쉘의 대상 사용자를 제한된 쉘로 수정하십시오.
사용자를 생성할 때:
# useradd -s /bin/rbash localuser
기존 사용자의 경우:
# usermod -s /bin/rbash localuser
이에 대한 자세한 내용은 KBase 기사 8349를 확인하세요.
그런 다음 사용자 localuser는 루트가 변경되어 홈 디렉토리인 /home/localuser 외부의 링크에 액세스할 수 없습니다.
/home/localuser/ 아래에 프로그램과 같은 디렉터리를 만듭니다.
# mkdir /home/localuser/programs
이제 확인하면 사용자 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에 바인딩되므로 바꾸십시오.
이제 사용자는 사용자 이름 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
이제 사용자 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 명령을 사용하는 예입니다.
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
사용자가 .bash_profile을 변경할 수 있으므로 사용자가 .bash_profile을 수정하지 못하도록 제한하는 단계를 추가할 수도 있습니다.
다음 명령을 실행하여 사용자 localuser의 .bash_profile 파일을 변경할 수 없게 만드십시오. 그러면 루트가 변경할 수 없는 권한을 제거할 때까지 root/localuser가 파일을 수정할 수 없습니다.
# chattr +i /home/localuser/.bash_profile
불변 태그를 제거하려면,
# chattr -i /home/localuser/.bash_profile
사용자 localuser가 환경 경로를 변경할 수 없도록 .bash_profile 파일을 변경할 수 없도록 만듭니다.