제한된 셸을 사용하여 Linux 사용자가 할 수 있는 작업을 제한하는 방법

0
459

Linux 시스템의 터미널 창.
Fatmawati Achmad Zaenuri/Shutterstock

제한된 셸은 사용자 계정이 Linux에서 수행할 수 있는 작업을 제한합니다. 제한된 사용자는 디렉토리를 변경할 수 없으며 액세스 권한이 있는 명령을 제어할 수 있습니다. Linux에서 제한된 셸을 설정하는 방법은 다음과 같습니다.

제한된 껍질

제한된 셸은 다른 셸이 아닙니다. 표준 쉘의 다른 모드입니다. Bash, Korn, Fish 및 기타 셸은 모두 제한된 셸 모드에서 시작할 수 있습니다. 이 기사에서는 Bash를 사용할 것이지만 다른 쉘에도 동일한 원칙이 적용됩니다.

제한된 셸은 표준 셸을 사용하는 또 다른 방법이므로 쉽게 설정할 수 있습니다. 설치할 것이 없으며 Linux가 있는 곳이면 어디에서나 사용할 수 있습니다.

제한된 셸도 스크립트에 적용할 수 있습니다. 이렇게 하면 잘못 작성된 경우 발생할 수 있는 손상이 제한된 세계로 제한되고 전체 컴퓨터에 액세스할 수 없습니다.

그러나 제한된 껍질이 완전히 탈출할 수 있는 것은 아니라는 점에 유의하십시오. 충분한 지식을 가진 사람은 제한된 껍질을 벗어날 수 있습니다. 일반 사용자에게 안전한 경계를 설정하는 데는 적합하지만 프로덕션 시스템의 실제 보안을 위해 제한된 셸에 의존하지 마십시오.

관련: Bash, Zsh 및 기타 Linux 셸의 차이점은 무엇입니까?

제한된 배쉬

Bash를 제한된 셸로 실행하면 사용자는 일부 기능이 제거됩니다. 구체적으로 사용자 할 수 없다:

  • 사용하다 cd 작업 디렉토리를 변경합니다.
  • 의 값을 변경합니다. $PATH , $SHELL , $BASH_ENV , 또는 $ENV 환경 변수(그러나 현재 값을 읽을 수 있음).
  • 읽기 또는 변경 $SHELLOPTS 쉘 환경 옵션.
  • 명령의 출력을 리디렉션합니다.
  • 경로를 찾는 명령을 호출하십시오. 즉, 슬래시가 하나 이상 있는 명령을 실행할 수 없습니다./“에.
  • 호출 exec 쉘을 다른 프로세스로 대체합니다.
  • 스크립트에서 제한된 기능을 사용하십시오.
광고

다음을 사용하여 제한된 Bash 셸을 호출할 수 있습니다. -r (제한된) 옵션. 작업 디렉토리를 변경하는 것과 같은 간단한 작업을 시도하는 것은 금지되어 있습니다. 간결한 메시지가 알려줍니다. cd 제한됩니다.

bash -r
cd Documents

Bash 셸은 “bash” 대신 “rbash”를 사용하여 호출된 시간을 감지할 수도 있습니다. 이로 인해 제한된 셸로도 시작됩니다. 이것은 우리가 곧 사용할 특정 사용자의 기본 셸을 설정하는 편리한 방법을 제공합니다.

우리가 사용하는 경우 whereis Ubuntu에서 명령을 찾아 rbash 파일을 보면 실행 파일이 “usr/bin” 디렉토리에 있음을 알 수 있습니다. 매뉴얼 페이지는 “/usr/share/man/man1” 디렉토리에 있습니다.

사용 ls 명령 -l (긴) 옵션은 다음을 나타냅니다. rbash 실제로 에 대한 심볼릭 링크입니다. bash .

whereis rbash
ls -l /usr/bin/rbash

Manjaro와 Fedora에서는 rbash 심볼릭 링크를 만들어야 했습니다. 이것은 두 배포판 모두에서 작동합니다.

whereis rbash
sudo ln -s /bin/bash /bin/rbash
whereis rbash

광고

두 번째로 사용할 때는 whereis 명령, 그것은 찾습니다 rbash “/usr/bin” 디렉토리에 있습니다.

사용자 제한

“Minnie”라는 새 사용자 계정을 만들어 보겠습니다. 우리는 그들의 셸을 다음을 사용하여 제한된 셸로 설정할 것입니다. -s (쉘) 옵션 useradd 명령. 또한 다음을 사용하여 계정의 비밀번호를 설정합니다.passwd 명령을 실행하고 홈 폴더를 만듭니다.

그만큼 -p (부모) 플래그 mkdir 명령은 말한다 mkdir 대상 디렉토리와 생성해야 하는 모든 상위 디렉토리도 생성합니다. 따라서 “/home/minnie/bin” 디렉토리를 생성함으로써 동시에 “/home/minnie” 디렉토리를 생성합니다.

sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin

minnie가 로그인하면 제한된 쉘에서 실행됩니다.

cd

그녀는 슬래시 “를 포함해야 하는 명령을 호출할 수 없습니다./“:

/usr/bin/ping

그러나 그녀는 여전히 경로에 있는 명령을 실행할 수 있습니다.

ping

광고

그것은 당신이 예상했던 행동이 아니며 확실히 우리가 원하는 것이 아닙니다. 제한을 더 강화하려면 minnie의 셸이 명령을 찾는 데 사용할 경로를 변경해야 합니다.

규제 강화

minnie의 홈 디렉토리 “/home/minnie”를 생성할 때 “/home/minnie/bin” 디렉토리도 생성했습니다. 여기에서 해당 디렉토리가 작동합니다.

minnie의 “.bash_profile” 파일을 편집하고 해당 디렉토리만 가리키도록 경로를 설정할 것입니다. 루트만 편집할 수 있도록 minnie의 “.bash_profile” 파일도 제한합니다. 즉, 다른 사용자는 해당 파일을 편집하고 경로를 변경할 수 없습니다.

sudo gedit /home/minnie/.bash_profile

기존 “PATH=”를 편집하거나 다음 줄을 추가합니다.

PATH=$HOME/bin

파일을 저장합니다. 다음을 사용하여 파일 소유자를 루트로 변경합니다. chown 명령을 사용하여 파일 권한을 변경합니다. chmod 명령. 루트 사용자만 파일을 편집할 수 있습니다.

sudo chown root:root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile

다음에 사용자 minnie가 로그인할 때 그녀의 경로는 단일 폴더를 가리킵니다.

광고

제한된 사용자 minnie는 다음과 같은 Bash 내장 명령만 사용할 수 있습니다. echo, alias, 그리고 logout. 그녀는 사용할 수도 없습니다 ls!

ls

그들이 유용한 일을 할 수 있게 하려면 우리의 목을 조르는 것을 조금 느슨하게 해야 할 것입니다. minnie의 “bin” 디렉토리에서 minnie가 사용할 수 있게 하려는 명령에 대한 몇 가지 심볼릭 링크를 만들 것입니다.

sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin

minnie가 다음에 로그인하면 Bash 내장 명령과 연결된 명령을 사용할 수 있다는 것을 알게 될 것입니다.

ls
pinky dave
uptime

기존 사용자 제한

새로운 사용자로 minnie를 만들었습니다. 기존 사용자의 셸을 변경하려면 다음을 사용할 수 있습니다. -s (쉘) 옵션 usermod 명령.

sudo usermod -s /bin/rbash mary

당신은 사용할 수 있습니다 less “/etc/passwd” 파일에서 명령을 실행하여 사용자의 기본 셸로 설정된 셸을 빠르게 확인할 수 있습니다.

less /etc/passwd

사용자 mary가 다음에 로그인할 때 제한된 쉘을 사용할 것임을 알 수 있습니다.

광고

다른 변경 사항을 적용하여 $PATH 환경 변수를 설정하고 사용자 mary가 실행할 수 있는 명령을 설정합니다.

스크립트 제한

제한되지 않은 일반 사용자는 제한된 셸에서 실행되는 스크립트를 실행할 수 있습니다. 다음 줄을 복사하여 편집기에 붙여넣습니다. 파일을 “restricted.sh”로 저장하고 편집기를 닫습니다.

#!/bin/bash

# script starts in normal Bash shell
echo "## In UNrestricted mode! ##"

echo
echo "Current directory: `pwd`"
echo "Changing directory"
cd /usr/share
echo "Now in directory: `pwd`"
echo "Changing to home directory"
cd ~
echo "Now in directory: `pwd`"

# Setting restricted mode
set -r

echo
echo "## In restricted mode! ##"

echo
echo "Current directory: `pwd`"
echo "Changing directory to /home/"
cd /home
echo "Still in directory: `pwd`"

echo
echo "Trying to start another shell"
/bin/bash

echo
echo "Trying to redirect command output"
ls -l $HOME > my_files.txt
cat my_files.txt
echo

exit 0

우리는 사용할 필요가 chmod 명령 +x (실행) 플래그를 사용하여 스크립트를 실행 가능하게 만듭니다.

chmod +x restricted.sh

스크립트의 첫 번째 부분은 일반 셸에서 실행됩니다.

./restricted.sh

스크립트의 두 번째 부분(“set -r” 줄 뒤 비트)은 제한된 셸에서 실행됩니다.

스크립트의 제한된 부분에서 시도한 작업 중 어느 것도 성공하지 못합니다.

광고

다음을 추가하여 전체 스크립트를 제한된 쉘에서 실행하도록 만들 수 있습니다. -r 첫 번째 줄에:

!#/bin/bash -r

후디니 기억하기

제한된 쉘은 유용하지만 완전히 오류가 없는 것은 아닙니다. 충분히 숙련된 사용자는 탈출할 수 있습니다. 그러나 신중하게 사용하면 특정 계정에 대한 일련의 제한 사항을 설정하는 데 유용한 방법입니다.