사용자 계정이 리눅스에서 할 수있는 제한된 쉘 제한. 제한된 사용자는 디렉토리를 변경할 수 없습니다, 당신은에 액세스 할 수있는 명령을 제어. 여기에 리눅스에 제한된 쉘을 설정하는 방법입니다.
제한된 쉘
제한된 쉘은 다른 쉘이 아니다. 그것은 다른 모드입니다 표준 쉘 ...에 NS 세게 때리다 , 콘 , 생선 및 기타 쉘은 모든 제한된 쉘 모드에서 시작할 수 있습니다. 우리는이 문서에서 Bash를 이용한있을거야,하지만 같은 원칙은 다른 조개에 적용됩니다.
제한된 쉘 표준 쉘을 사용하는 또 다른 방법입니다 때문에, 그들은 쉽게 설정할 수 있습니다. 이 설치 아무것도 없다, 리눅스는 어디서든 사용할 수있어.
제한된 쉘도 스크립트에 적용 할 수 있습니다. 그들이 잘못 기록 된 한 경우가 일으킬 수있는 피해가 제한된 세계의 범위로 제한되어 있고 그들이 당신의 전체 컴퓨터에 액세스 할 수없는 것을 보장한다.
제한된 쉘을 완전히 탈출 증거를되지 않습니다,하지만,주의하십시오. 충분한 지식을 가진 사람이 제한된 쉘을 피할 수 있습니다. 그들은 캐주얼 사용자에 안전 경계를 착용하는있는 거 좋은,하지만 생산 시스템에 어떤 실제 보안을 위해 제한된 쉘에 의존하지 않습니다.
관련된: 배쉬, zsh을, 그리고 다른 리눅스 쉘의 차이는 무엇입니까?
제한된 배쉬
당신이 제한된 셸 배쉬를 실행하면, 사용자는 그들로부터 제거 몇 가지 기능이 있습니다. 즉, 사용자 할 수 없다 :
-
사용하다
CD작업 디렉토리를 변경합니다. -
의 값을 변경
$ Path.,$ SHELL,$ BASH_ENV, 또는$ ENV환경 변수 (그러나 그들은 현재 값을 읽을 수 있습니다). -
읽기 또는 변경
$의 SHELLOPTS환경 옵션을 쉘. - 명령의 출력을 리디렉션합니다.
-
를 찾을 경로를 필요로하는 명령 호출. 즉, 하나 이상의 슬래시 "이 명령을 발행 할 수 없습니다
...에 /"그것입니다. -
부르다
간부쉘에 대해 서로 다른 과정을 대체합니다. - 스크립트에서 제한된 기능 중 하나를 사용합니다.
당신은을 사용하여 제한된 bash 쉘을 호출 할 수 있습니다
-NS
(제한) 옵션을 선택합니다. 작업 디렉토리를 변경하는 등의 간단한 작업을하려고하는 것은 금지되어 있습니다. 간결한 메시지가 있음을 알려줍니다
CD
제한됩니다.
떠들썩한 파티 -r
CD 문헌
이 대신 "rbash"사용하여 호출되었을 때 배쉬 쉘도 감지 할 수 있습니다 "bash는." 이것은 너무 제한된 쉘로 시작됩니다. 이것은 우리가 곧 사용합니다 특정 사용자의 기본 쉘을 설정하는 편리한 방법을 제공합니다.
우리가 사용하는 경우
어디에
을 찾기 위해 우분투 명령
rbash
파일, 우리는 실행 파일이 "USR / 빈"디렉토리에있는 것을 볼 수 있습니다. 남자 페이지 "는 / usr / share / 사람 / man1에"디렉토리에 있습니다.
그를 사용하여
LS
그 새 명령
-엘
(긴) 옵션 것을 알 수
rbash
~이다
실제로 심볼릭 링크
에게
세게 때리다
...에
whereis rbash
LS -l / USR / 빈 / rbash
에 Manjaro 페도라의
rbash
심볼릭 링크가 생성되어야했다. 이 두 배포판에서 작동합니다 :
whereis rbash
는 sudo LN -s / 빈 / 떠들썩한 파티 / 빈 / rbash
whereis rbash
우리가를 사용하는 두 번째 시간
어디에
명령, 그것은 발견
rbash
은 "은 / usr / bin에"디렉토리한다.
사용자 제한
하자
새 사용자 계정을 만들
"미니."라는 우리는을 사용하여 제한된 쉘을 할 자신의 쉘을 설정합니다
-NS
(쉘)의 옵션을
useradd와
명령. 우리도 우리가 될 것입니다
계정 암호를 설정하십시오
그를 사용하여
passwd.
명령을 사용하면 홈 폴더를 만들 것입니다.
NS
-NS
(부모)의 국기
마스크
명령은 말한다
마스크
대상 디렉토리와 생성 해야하는 상위 디렉토리를 만들려면됩니다. 따라서 "/ 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
그러나 그녀는 여전히 경로에서 발견되는 명령을 실행할 수 있습니다.
핑
그것은 당신이 기대했던 행동이 아니며 확실히 우리가 원하는 것이 아닙니다. 제한 사항을 더 강화하기 위해 Minnie의 쉘이 명령을 찾는 데 사용할 경로를 변경해야합니다.
제한을 조이십시오
Minnie의 홈 디렉토리 "/ home / minnie"를 만들었을 때 "/ home / minnie / bin"디렉토리도 만들었습니다. 이 디렉토리가 재생되는 곳입니다.
Minnie의 ".bash_profile"파일을 편집하고 해당 디렉토리 만 지적하도록 경로를 설정합니다. 또한 루트 만 편집 할 수 있도록 MINIE의 ".bash_profile"파일을 제한합니다. 즉, 다른 사용자가 해당 파일을 편집하고 경로를 변경할 수 있음을 의미합니다.
sudo gedit /home/minnie/.bash_profile
기존 "경로 ="을 편집하거나 다음 줄을 추가하십시오.
PATH = $ HOME / BIN
파일을 저장하십시오. 잘
파일의 소유자를 변경하십시오
루트를 사용하여
쇼 타로
명령 및
파일 사용 권한을 변경하십시오
그를 사용하여
chmod.
명령. 루트 사용자 만 파일을 편집 할 수 있습니다.
sudo chown root : root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
다음 번에 사용자 미니가 로그인하면 경로가 하나의 폴더를 가리 킵니다.
당사의 제한된 사용자 Minnie는 Bash 내장 명령 만 사용할 수 있습니다.
에코
,
별명
, 그리고
로그 아웃
...에 그녀는 또한 사용할 수 없습니다
Ls.
...에!
LS
우리가 우리가 모든 것을 유용하게 할 수 있도록하기를 원한다면 우리의 매력을 조금 줄일 필요가 있습니다. Minnie의 "bin"디렉토리에서 미니니를 사용할 명령을 원하는 명령으로 만들 수 있습니다.
sudo ln -s / bin / ls / home / minnie / bin
sudo ln -s / bin / top / home / minnie / bin
sudo ln -s / bin / 가동 시간 / home / minnie / bin
sudo ln -s / bin / pinky / home / minnie / bin
Minnie가 다음 로그인하면 Bash Bath-in 명령과 연결된 명령을 사용할 수 있음을 알 수 있습니다.
LS
핑키 데이브
가동 시간
기존 사용자를 제한합니다
우리는 Minnie를 새로운 사용자로 만들었습니다. NS
기존의 껍질을 변경하십시오
사용자, 우리는 그를 사용할 수 있습니다
-NS
(쉘) 옵션의 옵션
usermod.
명령.
sudo usermod -s / bin / rbash mary
당신은 그를 사용할 수 있습니다
더 적은
"/ etc / passwd"파일의 명령을 사용하여 쉘이 사용자의 기본 셸로 설정된 것을 신속하게 확인하십시오.
/ etc / passwd
우리는 사용자 메리가 다음 로그인 할 때 사용자 메리가 제한된 쉘을 사용할 것을 볼 수 있습니다.
다른 변경 사항을 적용하여 제한을 위해 제한해야합니다
$ Path.
환경 변수 및 사용자가 Mary를 실행할 수있는 명령을 설정합니다.
스크립트 제한
일반적인 사용자가 제한된 쉘에서 실행되는 스크립트를 시작할 수 있습니다. 다음 행을 복사하여 편집기에 붙여 넣으십시오. 파일을 "Restricted.sh"로 저장하고 편집기를 닫습니다.
#! / bin / bash. # 스크립트는 일반 bash 쉘에서 시작됩니다 echo "## 무제한 모드에서! ##" 에코 echo "현재 디렉토리 :`pwd`" 에코 "디렉토리 변경" CD / USR / Share. echo "지금 디렉토리 :`pwd`" echo "홈 디렉토리로 변경" CD ~ echo "지금 디렉토리 :`pwd`" # 제한된 모드 설정 -r. 에코 echo "## 제한 모드에서! ##" 에코 echo "현재 디렉토리 :`pwd`" echo "디렉토리 변경 / home /" CD / Home. 에코 "아직 디렉토리 :`pwd`" 에코 echo "다른 쉘을 시작하려고 시도" / bin / bash. 에코 echo "명령 출력을 재 지정하려고" ls -l $ home & gt; my_files.txt. cat my_files.txt. 에코 0 번 출구 0
우리는 그를 사용해야합니다
chmod.
그 새 명령
+ X.
(실행) 스크립트를 실행 파일로 만드는 플래그.
chmod + x restricted.sh
스크립트의 첫 번째 부분은 일반 셸에서 실행됩니다.
./ restricted.sh
스크립트의 두 번째 부분 - 제한된 쉘에서 "set -r"라인이 실행 된 후 비트입니다.
스크립트의 제한된 부분에서 시도 된 동작 중 누구도 성공하지 못합니다.
추가하여 제한된 쉘에서 전체 스크립트를 만들 수 있습니다.
-NS
첫 번째 줄에 :
! # / bin / bash -r
Houdini를 기억하십시오
제한된 쉘은 유용하지만 완전히 틀리지는 않습니다. 충분히 숙련 된 사용자가 이탈 수 있습니다. 그러나 현명하게 사용될 때, 그들은 특정 계정에 대한 한계를 수립하는 유용한 방법입니다.