ฉันมีเซิร์ฟเวอร์ 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 commandbash
โปรดทราบว่าคุณจะไม่สามารถexitเชลล์เริ่มต้นของคุณมันจะปิดการเชื่อมต่อ