chsh -s /bin/zsh
루트 없이 비밀번호 없이 실행할 수 있는 방법이 있나요 ? 나는 이것을 루트에 의해 호출되지 않는 비대화형 스크립트에 넣고 싶습니다.
답변1
로그인 셸을 변경할 권한이 없으면 bash(bash가 로그인 셸이라고 가정함)에 이를 zsh로 바꾸도록 지시할 수 있습니다. yours에 ~/.bash_login
다음 줄을 추가하세요.
exec /bin/zsh --login
답변2
귀하의 버전에 chsh
비밀번호가 필요한 경우(제가 그랬습니다) 특별한 권한을 사용하여 sudo를 설정해야 합니다. 다음과 같이 비밀번호를 묻지 않고 모든 프로그램에 액세스할 수 있도록 구성할 수 있습니다.
user ALL=(ALL) NOPASSWD:/usr/bin/chsh
여기서 "user"는 사용자 이름(또는 % 접두사가 붙은 그룹 이름)입니다. chsh
이렇게 하면 사용자가 루트로 다른 것을 실행할 수는 없지만(스크립트 포함) 바이너리는 비밀번호 없이 루트로 실행될 수 있으므로 사용자 비밀번호 프롬프트를 우회할 수 있습니다 .
답변3
특정 요구 사항에 따라 긴 스크립트를 실행하고 있고 해당 질문 중간에 중단되는 것을 원하지 않기 때문에 이 작업을 수행하려는 경우 미리 암호를 요청한 다음 권한을 chsh
사용하여 실행할 수 있습니다. sudo
의 비밀번호입니다 stdin
.
read -p 'What is your password?' sudo_password
# rest of the script here
sudo -S chsh -s '/bin/zsh' "${USER}" <<< "${sudo_password}"
-S
sudo
에서 비밀번호를 읽 습니다 stdin
. 깨닫다가능한 보안 위험이 접근 방식을 사용하십시오(그러나 나는 이것을 재현할 수 없었으며 필요에 따라 문제가 되지 않을 수도 있습니다).