제한된 쉘이 있는 기본이 아닌 편집기에서 Crontab -e 사용(변수를 내보내거나 편집기를 실행할 수 없음)

제한된 쉘이 있는 기본이 아닌 편집기에서 Crontab -e 사용(변수를 내보내거나 편집기를 실행할 수 없음)

권한이 심각하게 제한된 사용자가 있습니다.

crontab을 수정할 수 있지만 기본 편집기는 입니다 nano. vi이는 익숙해지고 프로덕션 환경을 중단하고 싶지 않을 때 실제 문제가 될 수 있습니다.

변수를 내보내거나 선언할 수 없으므로 export EDITOR='vi'작동 EDITOR=vi crontab -e하지 않습니다. vi(또는 nano)를 직접 실행할 수도 없으므로 실제로 어떻게 처리하는지 모르겠습니다.

이러한 제한을 우회할 수 있는 방법이 있습니까?


내 제한 사항에 대한 아이디어를 제공하기 위해 로그인 메시지는 다음과 같습니다.

You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands

"?"의 결과 명령은 다음과 같습니다.

cd  clear  crontab  exit  help  history  lpath  ls  lsudo  php  pwd

편집: 내 OS 버전을 찾는 것을 잊어버렸습니다.

/proc/version에 따르면
Linux 버전 2.6.26-2-amd64(Debian 2.6.26-29)([이메일 보호됨]) (gcc 버전 4.1.3 20080704 (사전 릴리스) ( Debian 4.1.2-25)) #1 SMP Sun Mar 4 2012 21:48:06 UTC

...그리고 cat /etc/debian_version 말해 보세요 5.0.10(뭐?!)

이제 우분투에 더 익숙해졌지만 여전히 조금 놀랐습니다.

답변1

사용법 메시지로 판단하면 실행 중입니다.껍데기. 이것은 bash, ksh, zsh, BusyBox 등과 같은 Bourne 스타일 쉘이 아닙니다. rksh나 rbash와 같은 제한된 쉘도 아닙니다. 특정 매개변수를 사용하여 고정된 명령 세트를 실행하는 것 외에는 변수, 리디렉션 또는 기타 기능이 없습니다.

vi를 실행할 수 있다면 lshell에 버그나 구성 오류가 있다는 의미입니다. 임의의 명령이 실행되는 것을 방지하도록 설계되었습니다.

이제 실행할 수 있으므로 php문제를 해결할 수 있습니다. 하지만 분명히 관리자는 당신이 그렇게 하는 것을 원하지 않습니다.

crontab은 일반적으로 매우 짧으므로 다른 편집기로 편집하려면 충분히 큰 터미널을 열고 GUI 클립보드를 통해 전체 내용을 로컬 시스템에 복사한 다음 편집하고 다른 방향으로 복사하세요. nano에서는 자동 단어 줄바꿈( Alt+ L로 전환) 및 (그러나 crontab에서는 중요하지 않음) 자동 들여쓰기( Alt+ ) 를 꺼야 합니다 I.

답변2

시스템과 파일을 주고받을 수 있으면 현재 crontab을 백업하세요.

$ crontab -l >crontab.txt

리디렉션을 수행할 수 없는 경우 crontab -lcrontab을 복사하여 붙여넣으면 됩니다(모든 것이 동일한지 확인).

그런 다음 덜 잠긴 시스템에서 crontab 텍스트 파일을 사용하여 편집기에서 업데이트하십시오.

파일을 다시 전달하고 실행하십시오.

$ crontab crontab.txt

작업 사양이 올바른지 여부를 포함한 적절한 테스트를 프로덕션 서버에서 구현하기 전에 동일한 개발 서버에서 수행해야 합니다. crontab이런 식으로 crontab을 로드하는 것에 주의하세요현재 crontab 교체.

나는 책임을 지지 않습니다.

관련 정보