사용자가 / etc / passwd에 없을 때 기본 쉘 변경


8

껍질을 생선으로 바꾸는 방법에 대한 아이디어가 있습니까?

$ sudo usermod -s /usr/bin/fish jaan
usermod: user 'jaan' does not exist in /etc/passwd
$ getent passwd $USER
jaan:x:15466:94:Jaan Altosaar:/home/jaan:/bin/zsh

관련 질문 : 기본 쉘을 변경하려고 할 때 사용자가 / etc / passwd에 존재하지 않습니다 . ldap을 사용하는 것처럼 보입니다.

$ cat /etc/nsswitch.conf
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

# Having the NOTFOUND=return bit was breaking dns resolution on web1 and web2. But we probably
# don't want any of the mdns stuff so let's get rid of it all.
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts:          files dns

networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       ldap
automount:      ldap

그래서 ldap 관련 패키지를 설치했습니다.

$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: /usr/bin/fish
Traceback (most recent call last):
  File "/usr/bin/chsh.ldap", line 69, in <module>
    constants.NSLCD_USERMOD_SHELL: shell,
  File "/usr/share/nslcd-utils/nslcd.py", line 128, in usermod
    assert con.get_response() == constants.NSLCD_RESULT_BEGIN
  File "/usr/share/nslcd-utils/nslcd.py", line 103, in get_response
    return self.read_int32()
  File "/usr/share/nslcd-utils/nslcd.py", line 71, in read_int32
    return _int32.unpack(self.read(_int32.size))[0]
struct.error: unpack requires a string argument of length 4
$ which fish
/usr/bin/fish
$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: "/usr/bin/fish"
/usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid shell
$ /usr/bin/fish
(standard_in) 1: syntax error
Welcome to fish, the friendly interactive shell

가능합니까?
George Udosen

@George 편집을 확인하십시오.
Abhishek Bhatia


@George이 작동하지 않습니다.
Abhishek Bhatia

쉘 경로에 있어야 /etc/shells하기위한 chsh-like 도구를 적용합니다.
muru

답변:


1

힌트는 다음과 같습니다 /usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid shell. 당신이 추가해야 것 같습니다 /usr/bin/fish/etc/shells.


아름다운 하하, chsh.ldap -s /usr/bin/zsh myusername나을 제공합니다 Segmentation fault.
jchook

그런 다음 여기에보고해야합니다. launchpad.net/ubuntu/+source/nss-pam-ldapd/+bugs
pim

1

LDAP 사용자 인 LDAP에 사용자의 기본 쉘을 변경할 수있는 설정이 있습니다.

ldap-account-manager 를 설치 하면 ldap 구성을위한 웹 프론트가 제공됩니다.

apt install ldap-account-manager

여기에 이미지 설명을 입력하십시오

구성을 처리하려는 모든 서버에서 수행 할 수 있습니다. 어쨌든 구성 파일에서 서버를 구성해야하기 때문입니다. 그러나 실제로 ldap이 실행되는 서버에 설치하는 것이 좋습니다. 쉽게 기억할 수 있습니다.


-1

여기서 ajmitch를 인용하면 ,

chsh -s를 실행하여 fish를 기본 쉘로 설정할 수 있습니다. which fish 그런 다음 로그 아웃 한 후 다시 로그인하십시오. 다시 bash로 설정하려면이 chsh -s (bash)와 같은 Fish 구문을 사용해야합니다.

사용 chsh -s which fish하고 컴퓨터에서 로그 아웃했다가 다시 로그인하거나 컴퓨터를 다시 시작하십시오.

그건 그렇고 여기에 가능한 복제가 될 수 있습니다 : 물고기를 기본 껍질로 어떻게 설정합니까?


Hmm..chsh는 / etc / passwd의 사용자 인 경우에만 작동합니다. $ chsh -s `which fish` Password: chsh: user 'jaan' does not exist in /etc/passwd
Abhishek Bhatia

아 ... 네 ... 그 부분을 보지 못했습니다 ...
Max

1
계정이 LDAP로 관리되면 작동하지 않습니다. -1
David Foerster '
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.