เปลี่ยนเชลล์เริ่มต้นเมื่อผู้ใช้ไม่ได้อยู่ใน / 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เหมือนเครื่องมือที่จะยอมรับมัน
muru

คำตอบ:



1

เดี๋ยวก่อนมันเป็นผู้ใช้ LDAP มีการตั้งค่าใน LDAP ที่ให้คุณเปลี่ยนเชลล์เริ่มต้นสำหรับผู้ใช้ในพวกเขา

คุณสามารถติดตั้งldap-account-managerซึ่งให้ webfrontent สำหรับการกำหนดค่า ldap

apt install ldap-account-manager

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้สามารถทำได้บนเซิร์ฟเวอร์ใด ๆ ที่คุณต้องการจัดการกับการกำหนดค่า เนื่องจากคุณจะต้องกำหนดค่าเซิร์ฟเวอร์ในไฟล์กำหนดค่าต่อไป แต่ฉันขอแนะนำให้คุณติดตั้งบนเซิร์ฟเวอร์ที่มี ldap ใช้งานอยู่จริง ๆ เพื่อให้คุณสามารถจดจำได้ง่ายขึ้น


-1

ที่จะพูด ajmitch นี่ ,

คุณสามารถตั้งค่า fish เป็นเชลล์เริ่มต้นของคุณโดยการเรียกใช้ chsh -s which fish จากนั้นออกจากระบบและกลับเข้ามาใหม่ (ในการตั้งค่ากลับไปเป็น bash คุณต้องใช้ไวยากรณ์ Fish แน่นอนเช่น chsh-s นี้ (ซึ่งทุบตี)

เพียงใช้chsh -s which fishและตรวจสอบให้แน่ใจว่าได้ออกจากระบบและกลับเข้าสู่ระบบหรือเริ่มคอมพิวเตอร์

โดยวิธีนี้อาจเป็นไปได้ซ้ำที่นี่: ฉันจะตั้งค่าปลาเป็นเปลือกเริ่มต้นได้อย่างไร


Hmm..chsh ทำงานได้ก็ต่อเมื่อผู้ใช้ใน / etc / passwd $ chsh -s `which fish` Password: chsh: user 'jaan' does not exist in /etc/passwd
Abhishek Bhatia

อ่า ... ใช่ ... ฉันไม่เห็นส่วนนั้นเลย ...
สูงสุด

1
สิ่งนี้ไม่ทำงานเมื่อจัดการบัญชีโดย LDAP -1
David Foerster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.