다음을 사용하여 사용자를 생성한 도커 이미지에 연결합니다.
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
.