ฉันมีเซิร์ฟเวอร์ Debian ที่โฮสต์ เมื่อฉันเข้าสู่ระบบผ่าน ssh ฉันได้รับการต้อนรับด้วยสภาพแวดล้อมที่ดวลจุดโทษ ฉันจะเปลี่ยนเพื่อให้ฉันเริ่มต้นในสภาพแวดล้อมทุบตีได้อย่างไร
ฉันมีเซิร์ฟเวอร์ Debian ที่โฮสต์ เมื่อฉันเข้าสู่ระบบผ่าน ssh ฉันได้รับการต้อนรับด้วยสภาพแวดล้อมที่ดวลจุดโทษ ฉันจะเปลี่ยนเพื่อให้ฉันเริ่มต้นในสภาพแวดล้อมทุบตีได้อย่างไร
คำตอบ:
ในฐานะผู้ใช้ทั่วไปคุณสามารถเปลี่ยนเชลล์ล็อกอินเริ่มต้นโดยใช้chsh
คำสั่ง นี่คือตัวอย่าง:
chsh -s /bin/bash
ตัวเลือกอื่นคือใช้ usermod เป็น root:
usermod -s /bin/bash username
adduser
ควรตั้งค่าเป็นทุบตีตามค่าเริ่มต้น /etc/adduser.conf
เริ่มต้นการกำหนดค่าใน useradd
มิฉะนั้นระบุเปลือกอย่างชัดเจนด้วย
คุณแก้ไข/etc/passwd
ตำแหน่งที่รายการสุดท้ายเป็นเชลล์เริ่มต้น /bin/bash
ทำให้มัน
หรือคุณสามารถแก้ไขค่าเริ่มต้นของระบบที่/bin/sh
ไม่ใช่การทุบตี
/bin/sh
/bin/dash
และสำหรับสิ่งที่คุ้มค่าคำตอบอีกสองคำนั้นเหมือนกันและทำให้ได้ผลลัพธ์ที่ต่างกัน อะไรก็ตาม
/etc/passwd
มีกำลังใจอย่างมาก ข้อผิดพลาดในการแก้ไขอาจทำให้การเข้าสู่ระบบของผู้ใช้ทุกคนต้องใช้สื่อการกู้คืนหรือการบูตเป็นโหมดผู้ใช้คนเดียวเพื่อซ่อมแซม มีเครื่องมือเช่นสำหรับการเปลี่ยนแปลงusermod
/etc/passwd
/etc/passwd
ไม่เคยถูกจับ
/bin/bash
เช่น/bin/sh
เดียวกับการดำเนินการด้วย--posix
ซึ่งอาจมีผลลัพธ์ที่ไม่พึงประสงค์
/bin/bash
เป็นเครื่องเชลล์มาหลายปีแล้วในทุกเครื่อง คุณต้องการอาร์กิวเมนต์ที่เป็นรูปธรรมมากขึ้น
คุณต้องแก้ไขโปรไฟล์ผู้ใช้ของคุณคุณสามารถทำได้โดยตรงโดยการแก้ไข/etc/passwd
ไฟล์หรือคุณสามารถใช้usermod
คำสั่งเพื่อทำเพื่อคุณ ไวยากรณ์ที่คุณต้องการมีลักษณะดังนี้:
usermod -s /bin/bash joeuser
เปลือกระบบเริ่มต้นในรุ่นอูบุนตูที่ผ่านมามีการกำหนดให้เป็น/bin/sh
/bin/dash
เพียงแค่เรียกใช้คำสั่งต่อไปนี้:
sudo dpkg-reconfigure dash
/bin/bash
คุณสามารถเปลี่ยนกลับไปเริ่มต้นเก่า
ด้วยสิ่งนี้คุณสามารถสร้างเอฟเฟกต์ที่ต้องการของการbash
เป็นเชลล์เชิงโต้ตอบได้โดยไม่ต้องเปลี่ยนการตั้งค่าของผู้ใช้ (ไม่ใช่chsh
หรือusermod
) และมันจะใช้ได้กับผู้ใช้ทุกคนที่ตั้งค่าเชลล์ไว้/bin/sh
แล้ว
ข้อเสียเล็ก ๆ น้อย ๆ เพียงอย่างเดียวคือเวลาบูตของ Ubuntu อาจเพิ่มขึ้นเล็กน้อยเนื่องจากdash
ใช้หน่วยความจำน้อยกว่าในการโหลดและทำงานได้เร็วขึ้นเล็กน้อย (ไม่น่าแปลกใจเลยเพราะมีข้อ จำกัด ด้านฟีเจอร์) แต่ฉันคิดว่ามันจะค่อนข้างยากที่จะวัดผลนี้โดยเฉพาะอย่างยิ่งสำหรับการโฮสต์สภาพแวดล้อม
นอกจากนี้ก็เป็นที่น่ารำคาญในบางครั้งจะเห็นเชลล์สคริปต์ที่ล้มเหลวในการทำงานอย่างถูกต้องเพราะพวกเขาใช้บางคุณลักษณะขั้นสูงที่ไม่ได้รับการสนับสนุนโดยbash
dash
การใช้สูตรนี้จะทำให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้น
สำหรับข้อมูลเพิ่มเติมโปรดดู Ubuntu wiki เกี่ยวกับปัญหานี้
/bin/sh
ใช้เป็นล่ามสำหรับสคริปต์เชลล์ที่เข้ากันได้กับ POSIX - มันไม่จำเป็นต้องเป็นเชลล์แบบโต้ตอบที่ดีที่สุด หากคุณต้องการที่bash
จะเป็นเปลือกระบบของคุณคุณควรตั้งค่าเข้าสู่ระบบเปลือกที่คุณต้องการโดยใช้chsh
หรือadduser
โทรเหมาะสม การใช้dpkg-reconfigure
เป็นตัวเลือกที่ไม่ถูกต้องหาก userA ต้องการ zsh และ userB ต้องการ bash และทั้งคู่ยืนยันว่ามี / bin / sh เป็นเชลล์เริ่มต้น
zsh
และ userB bash
จะต้องมี หาก userC ได้รับการกำหนดค่าให้sh
เขาจะมีbash
ซึ่งเป็นค่าเริ่มต้นปัจจุบันของ Ubuntu สำหรับผู้ใช้ใหม่อยู่แล้ว
dpkg-reconfigure zsh
ตั้งค่าzsh
เป็น / bin / sh จากนั้นdpkg-reconfigure dash
ตั้งค่าdash
เป็น / bin / sh ซึ่งเป็นประเภท deadlock ฉันส่วนใหญ่บอกว่ามันเป็นอย่างดีกว่าการตั้งค่าเข้าสู่ระบบเชลล์เพื่อเปลือกหนึ่งต้องการใช้มากกว่าจะผ่านห่วงเพื่อให้ / bin / sh เป็นเปลือกเข้าสู่ระบบที่ดี
dpkg-reconfigure dash
สามารถทำให้sh
ชี้ไปมากกว่าพิการbash
dash
กระสุนอื่น ๆ ทั้งหมดจะยังคงอยู่เหมือนเดิม
สำหรับกรณีที่คุณกำลังพยายามใช้บัญชีที่ใช้ร่วมกัน (ไม่ว่าด้วยเหตุผลใดก็ตาม) และไม่สามารถเปลี่ยนเชลล์เริ่มต้นได้จากนั้นคุณสามารถเรียกใช้
ssh -t <user@hostname> bash -l
หากคุณต้องการป้องกันสภาวะแวดล้อมของคุณจากเชลล์อื่นคุณสามารถรันเชลล์นั้นก่อน ตัวอย่างเช่น
ssh -t <user@hostname> ksh -c bash -l
-l
ตัวเลือก?
ไม่ใช่chsh
หรือusermod
ทำงานให้ฉัน แต่ฉันพบว่าคุณสามารถทำได้ผ่าน PuTTY
ไปConnection > SSH
และการตั้งค่าไปRemote command
bash
โปรดทราบว่าคุณจะไม่สามารถexit
เชลล์เริ่มต้นของคุณมันจะปิดการเชื่อมต่อ