대화식 쉘을 얻을 수없는 사용자 작성 대화식 및 비 대화식 셸이란

대화식 및 비 대화식 셸이란 무엇입니까?

질문 : 대화식 쉘을 가져서는 안되는 사용자 john을 작성하십시오.

우리는 어떻게 이것을 할 수 있습니까?



답변

/etc/passwd파일은 사용자 라인의 마지막 항목으로 로그인시 실행할 프로그램이 있습니다. 일반 사용자의 경우 일반적으로 /bin/sh다른 쉘 (예 : bash, zsh)로 설정됩니다.

전통적으로 프로세스 나 파일 또는 기타 리소스를 소유하는 데 사용되는 ID는 “쉘”을 다음과 /bin/false같이 설정합니다 .

syslog:x:101:102::/home/syslog:/bin/false

의사 사용자 syslog는 /var/log/syslog해당 파일에 대한 쓰기 권한이있는 유일한 UID를 소유 하지만 실행할 명령 인터프리터가 없으므로 사용자 syslog로 로그인 할 수 없습니다.


답변

당신이 대답하려는 질문에 관해서 :

대화식 쉘을 가져서는 안되는 사용자 john을 작성하십시오.

이 질문은 ” john로그인 할 수없는 사용자를 셸에서 만들 수 있습니다”라는 의미입니다. 대화식은 쉘이 작동하는 방식을 설명합니다. 사용자는 무언가를 입력하고 쉘은 그에 따라 무언가를 수행합니다 (사용자와 쉘 사이에는 일종의 통신이 있습니다). “interactive”라는 단어는 사용자가 명령을 입력하는 한 쉘 세션은 대화식이므로 질문에 정보를 추가하지 않습니다.

비 대화식 모드도 있습니다.이 모드에서는 사용자가 파일에서 실행하려는 일련의 명령 (쉘 스크립트)을 저장 한 후 파일을 실행합니다. 쉘이 대화식으로 실행되는지 비 대화식으로 실행되는지에 따라 일부 명령이 다르게 작동합니다. 여기에서 더 많은 것을 읽을 수 있습니다 (이 문서는 용 bash이지만 동일한 개념이 다른 쉘에도 적용됩니다).

당신은을 통해 탈지 경우 이러한 사용자를 생성하는 방법에 대한 man useradd로그인 쉘을 설정하는 옵션이 있습니다 -s또는 --shell. 어쨌든 원하는대로 (사용자가 이미 알고 있다고 생각합니까?) 사용자를 정상적으로 만든 다음 msw의 답변/etc/passwd 에서처럼 편집 할 수 있습니다.


답변

예, 비밀번호 파일 (/ etc / passwd) 의 쉘을 쉘 이스케이프를 허용 하지 않는 일부 프로그램으로 변경하십시오 .

당신이 bofh / bin / false가되고 싶다면 정확하게 원하는 것을 수행 할 것입니다.