일반 사용자가 RHEL에서 제한된 명령 세트만 실행하도록 제한하는 방법은 무엇입니까?

일반 사용자가 RHEL에서 제한된 명령 세트만 실행하도록 제한하는 방법은 무엇입니까?

일반 사용자가 RHEL에서 제한된 명령 세트를 실행하지 못하도록 제한하는 방법은 무엇입니까?

답변1

사용자에게 강제로 사용하도록 할 수 있습니다.제한된 껍질.

옵션 1 -방법: 제한된 셸(rssh)을 사용하도록 사용자 계정 구성


옵션 #2 -여기설명입니다레드햇에서 제작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가 파일을 수정할 수 없습니다.

    # chattr +i /home/localuser/.bash_profile

불변 태그를 제거하려면,

    # chattr -i /home/localuser/.bash_profile

사용자 localuser가 환경 경로를 변경할 수 없도록 .bash_profile 파일을 변경할 수 없도록 만듭니다.

관련 정보