ユーザーが/ 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

それは可能ですか?
ジョージウドセン2017

@ジョージ編集を確認してください。
Abhishek Bhatia 2017


@ジョージこれは動作しません。
Abhishek Bhatia 2017

のようなツールがそれを受け入れる/etc/shellsためには、chshシェルパスが必要です。
muru 2017

回答:



1

ちょっと待ってください。それはLDAPユーザーです。LDAPには、ユーザーのデフォルトシェルを変更できる設定があります。

ldap-account-managerをインストールすると、LDAP構成のWebfrontentが提供されます。

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
デビッドフォースター2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.