컴퓨터를 설정하는 시작 스크립트에서 실행하고 싶습니다.
chsh -s /bin/zsh
그러나 이것은 사용자의 비밀번호를 요구합니다. 비밀번호를 매개 변수로 어떻게 전달합니까? 아니면 sudo power가 있다면 어떻게 든 그 단계를 우회 할 수 있습니까? 아니면 기본 시작 셸을 변경하는 다른 방법이 있습니까?
답변
다음은 잠긴 계정이 셸을 변경하지 못하게하고, 사람들이 선택적으로 chsh
sudo 또는 su없이 사용할 수 있도록 합니다.
여전히 안전한 간단한 설정 :
-
이것을 맨 위에 추가하십시오
/etc/pam.d/chsh
:# This allows users of group chsh to change their shells without a password. # # Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script # auth sufficient pam_wheel.so trust group=chsh
-
chsh 그룹을 작성하십시오.
groupadd chsh
셸을 변경할 수있는 사용자의 경우 :
usermod -a -G chsh username
머니 샷 :
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$
답변
chsh는 / etc / passwd에서 사용자와 관련된 행을 실제로 변경하지만, 사용자는 / etc / passwd에서 자신의 ‘줄’만 변경할 수 있습니다. 따라서 다른 사용자의 쉘을 변경하려면 passwd가 필요합니다.
당신이 정말로 그것을 원한다면 (Lorenzo의 게시물의 우려와 가능한 보안 문제를 감안할 때) 다음과 같이하십시오.
#visudo
루트 권한이 필요합니다.
현재 “alice”로 실행 중이고 비밀번호없이 “bob ‘s”쉘을 변경하려고한다고 가정하십시오.
파일에 추가하십시오.
Cmnd_Alias SHELL = /usr/bin/chsh
Runas_Alias SH = Bob
alice ALL = (SH) NOPASSWD: SHELL
이렇게하면 SHELL의 명령 그룹에 비밀번호없이 SH 그룹의 사용자로서 모든 호스트에서 ‘alice’를 실행할 수 있습니다.
아마도 이런 식으로하기 위해 조금 가져 왔을 수도 있지만 가능합니다.
sudores 파일을 ‘visudo’, 특히 보안 관련 메시지로 변경하기 전에 “man sudoers”를 읽으십시오!
답변
사용자 이름을 전달해야합니다. 이를 통해 sudo
(또는 루트로) 이 작업을 수행 하면 이전 비밀번호를 묻지 않고 사용자 비밀번호 / 쉘을 설정할 수 있습니다. 자세한 내용 man chsh
을 확인 하십시오.
이제 제 질문은 : 왜 그렇게 하시겠습니까? 설정 스크립트 인 경우 생성시 (예 : 시작시 adduser
) 사용자 셸만 변경하면 안 됩니까? 시스템을 원격으로 복제하는 경우 /etc/passwd
먼저 변경하지 않아야 합니까? 전체 설치 프로세스를 자동화하고 설치할 셸 선택이 첫 번째 사용자를 만든 후가 아니라면 스크립트를 통해이를 수행 할 이유가 없습니다.
답변
명령 /etc/password
을 사용하여 파일 에서 사용자의 셸을 변경할 수 있다고 생각합니다 passwd
. 아직 읽지 않았지만 유용 할 수 있습니다 : UNIX 셸 차이점 및 셸 변경 방법 .
답변
sudo chsh -s /bin/zsh
다음을 시도하십시오 .
- 서버 종료
- 터미널을 다시 시작
- 서버에 로그인하여 확인하십시오
echo $SHELL
– 성공한 경우 변경 🙂