rbash - 특정 명령을 허용하고 자동 완성을 수정하는 방법은 무엇입니까?

rbash - 특정 명령을 허용하고 자동 완성을 수정하는 방법은 무엇입니까?

특정 사용자에게 제한된 셸을 제공해야 합니다.

이는 다음을 통해 달성됩니다.

sudo ln -s /bin/bash /bin/rbash
sudo useradd test1 -s /bin/rbash

새로운 사용자는 괜찮습니다. 기본적으로 제한된 셸에 들어가게 되지만, cd허용되지 않는 경우가 짜증나고 자동 완성이 작동하지 않습니다. 예를 들면 다음과 같습니다.

test1@hostone [ ~ ]$ cd /
-rbash: cd: restricted
test1@hostone [ ~ ]$ sudo cd /con<TAB pressed here>-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a3': invalid number specifier
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a0': invalid number specifier
^C
test1@hostone [ ~ ]$ sudo cd /config
sudo: cd: command not found
test1@hostone [ ~ ]$ docker logs ag<TAB pressed here>-rbash: /dev/null: restricted: cannot redirect output
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a3': invalid number specifier
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a0': invalid number specifier
^C
test1@hostone [ ~ ]$ 

예를 들어 별도의 명령을 허용하는 방법은 무엇입니까 cd? 자동완성을 어떻게 수정해야 하나요?

운영체제가 Photon OS인지 궁금하시다면.

답변1

bash첫째, 버전 5.0.3 현재로서는 rbash여전히 안전하지 않습니다. 실행 중이나 실행 중에 Ctrl/C를 비활성화하지 않습니다. 즉, .profile기본값이 적절하게 제한되기 .bash_profile전에 쉘 프롬프트에 도달할 가능성이 매우 높다는 의미입니다. $PATH이 시점에서는 실행하기 쉽고 깨끗한 쉘을 얻을 수 있습니다 dash.bash

cd명령은 의도적으로 거부되었습니다. 자세한 내용을 보려면 읽고 rbash(참조 man bash및 검색 ), 다음과 같은 거부된 작업 목록이 짧은 목록에 포함되어 있습니다.rbash

  • 디렉토리 변경cd
  • SHELLPATH, ENV또는 값을 설정하거나 설정 해제합니다.BASH_ENV
  • "/"를 포함하는 명령 이름을 지정하십시오.
  • >, >|, <>, >&및 리디렉션 연산자 &>를 사용하여 >>출력 리디렉션
  • 제한 모드를 끄려면 set +r 또는 set +o strict를 사용하세요.

불행하게도 자동 완성은 사용자 컨텍스트에서 실행되며 특정 명령의 출력을 /dev/null.

다른 쉘(예: rsh( sh))은 실행 중에 잠금을 올바르게 구현하여 .profileCtrl/C가 일시적으로 비활성화되지만 Ctrl/C에 대한 제한은 cd여전히 ​​존재합니다.

당신은 cd직업이 필요하다고 말합니다. 이 경우 제한된 쉘을 사용할 수 없습니다. 물론 요구 사항에 따라 chroot 환경을 사용하는 것이 더 나을 수도 있습니다. 아니면 필요한 작업을 수행하는 스크립트로 충분할 수도 있습니다. 액세스 가능한 디렉터리에 넣을 수 있으면 $PATH사용자는 스크립트를 직접 사용할 수 있습니다.

관련 정보