로그인 셸 사용자로 /bin/false로 명령을 실행할 수 없는 이유는 무엇입니까?

로그인 셸 사용자로 /bin/false로 명령을 실행할 수 없는 이유는 무엇입니까?

다음을 사용하여 사용자를 생성한 도커 이미지에 연결합니다.

RUN useradd -r -u 200 -m -c "nexus role account" -d /nexus-data -s /bin/false nexus

해당 사용자로 명령을 실행하고 싶지만 아무 일도 일어나지 않습니다. 이 문제를 해결하려고 시도하면서 로그인한 사용자로 /bin/false를 사용하여 아무것도 실행할 수 없다는 것을 발견했습니다.

# useradd xxx
# su xxx -c 'ls >>/t/t1'
# ls /t
t1
# useradd -s /bin/false
# su xxx1 -c 'ls >>/t/t2'
# ls /t
t1

. -​Google 검색을 통해 추가하면 명령을 실행할 수 있다는 것을 알았는데 -s /bin/bash, 왜 이런 일이 발생합니까? su 옵션은 -"로그인 쉘 사용"을 의미합니다. 로그인 쉘은 관련이 있지만 왜 그렇지 않습니까 -?

답변1

지정하지 않거나 -s다음 --preserve-environment경우표적사용자의 쉘을 사용하십시오. 귀하의 예에서는 이것이 실행되지만 /bin/false -c 'ls >> /t/t2'물론 유용한 것은 실행되지 않습니다.

"로그인 셸"은 특정한 의미를 가지며 일반 셸(예: sh또는 ) bash이 로그인 스크립트(예: .profile.

관련 정보