기본 쉘을 변경하려고 할 때 사용자가 / etc / passwd에 존재하지 않습니다


22

기본 쉘을 tcsh에서 bash로 변경하고 싶습니다. 그래서 나는 시도했고 이것이 일어난 일입니다.

>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

사실, 나는 / etc / passwd에 없습니다. 이유를 모르겠습니다.

내가 무엇을 할 수 있을지?


11
시스템이 분산 인증 (예 : kerberos / winbind)을 사용하고 있습니까? 이 경우 사용자 세부 정보가 로컬 / etc / passwd 파일에 나타나지 않지만 (을 사용하여 볼 수 있어야합니다 getent passwd <userid>). chsh이 경우 달리기 가 지원 되는지 여부 는 다음과 같은 설정에 따라 달라질 수 있습니다./etc/pam.d/
steeldriver

답변:


15

내 컴퓨터는 분산 인증을 사용하는 네트워크의 일부이므로 사용자 세부 정보가 로컬 / etc / passwd 파일에 나타나지 않지만 getent passwd userid를 사용하여 볼 수 있습니다. (@steeldriver 덕분에) 내 경우에는 핵심 컴퓨터에서 chsh를 수행해야했습니다.


11
"핵심 기계"가 무엇인지 설명 할 수 있습니까?
Nerrve

제 경우에는 학생들이 로그인하여 사용할 수있는 네트워크 내부의 대학에서 제공하는 전용 기계 세트를 말합니다. 내 사무실에있는 내 컴퓨터와 달리
rmp251

4
@ rmp251 이것은 정확히 내 시나리오입니다. 코어 머신에 액세스 할 수 없습니다. 그렇지 않으면 쉘을 바꾸는 방법을 찾았습니까?
Geek

@Geek 당신은 그것을 해결하는 방법을 찾았습니까?
milushov

13

다음에 대한 해결 방법이 있습니다 gnome-terminal.

  1. 로 이동하여 편집 -> 프로필 환경 설정 -> 제목 및 명령
  2. 확인 내 쉘 대신 실행을 사용자 정의 명령을
  3. 제공 bash은 AS 사용자 정의 명령 (또는 fish, 또는 아무것도)

감사! 설정을 통해 터미널 (또는 새 터미널 탭)을 열 때 즉시 실행할 명령을 제공하면 나에게 도움이되었습니다.
cacoder

이것은 KDE의 Konsole 및 yakuake에서도 작동합니다.
xgdgsc

6

PAM 등으로 LDAP 인증을 사용하는 경우 LDAP 서버에서 답을 찾아야합니다. Microsoft AD를 목표로하겠습니다.이 경우 /etc/passwd로그인 할 때 도메인 계정이 없지만 AD에서 사용자 속성을 볼 수 있습니다 getent passwd | grep user.

마지막에 쉘이 /bin/csh이면 AD에 속성이 있기 때문입니다. 따라서 AD에 관리자 계정이 있으면 직접 수정할 수 있습니다. 그렇지 않으면 AD 관리자에게 Active Directory 사용자 및 컴퓨터보기> 사용자 속성> UNIX 특성 에서 고급 기능을 활성화하도록 지시 하십시오 . 로그인 쉘을로 변경할 수 있습니다 /bin/bash.

다음을 실행하는 것을 잊지 마십시오.

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

소스 : 기본 쉘을 변경하려고 할 때 사용자가 / etc / passwd에 없습니다 .


1
질문은 한 사용자의 쉘을 변경하는 반면 pbis 구성은 모든 사용자의 변경입니다.
kubanczyk

5

사용자의 쉘을 변경하려면 루트가 될 필요가 없습니다. 그냥 입력하십시오 :

chsh

없는 sudo및 인수없이.


참조 man chsh:

chsh 명령은 사용자 로그인 쉘을 변경합니다. 이것은 이름을 결정합니다
사용자의 초기 로그인 명령 일반 사용자는
자신의 계정에 대한 로그인 쉘 ; 수퍼 유저가 로그인을 변경할 수 있습니다
모든 계정에 쉘.

내가 sudo를 사용한 이유는 그것 없이는 아무것도하지 않았기 때문입니다. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

그것이 작동하는 이유는 chsh가 kerberos에서 작동하지 않기 때문입니다
Lennart Rolland

2

사용자 이름을 잊어 버린 경우 whoami명령을 사용 하여 기억할 수 있습니다.

따라서 다음을 시도하십시오.

sudo chsh $(whoami)

실제로 /etc/passwd파일 에서 사용자 이름으로 시작하는 행이 존재하지 않는 경우 (해당 할 수없는 것 같음) 다음과 같이 새 행을 추가 할 수 있습니다.

username : x : 1000 : 1000 : 실명 ,, :: / home / username : / bin / bash

/ etc / passwd 파일 형식 이해를 참조하십시오 .


1
/ etc / passwd에 사용자가 없을 수있는 한 가지 이유는 해당 시스템에서 인증이 처리되지 않는 경우 (예 : ldap)
MatrixManAtYrService

1

도메인 사용자가있는 원격 호스트로 ssh하려고하면 chsh@Masoud가 언급 한대로 셸을 변경하지 못할 수 있습니다 . 그러나이 경우에 대한 간단한 해결 방법은 다음과 같습니다. 시스템에 ssh 할 때마다 다음을 수행하십시오.

ssh my-host -t "zsh --login"

또는

ssh my-host -t "cd /data/repos; zsh --login"

다른 작업 디렉토리에 직접 로그인하려는 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.