Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

มีหลายวิธีในการรับเซสชันรูทในเทอร์มินัล Linux สิ่งนี้อาจสร้างความสับสน เนื่องจากผู้ใช้เริ่มต้นส่วนใหญ่ที่ต้องการรับสิทธิ์การใช้งานรูทอาจไม่คุ้นเคยกับวิธีที่แต่ละคำสั่งเข้าถึงรูท แตกต่างกันอย่างไร และความแตกต่างเหล่านี้มีความสำคัญเมื่อใด ในที่นี้ เราจะแยกคำสั่งต่างๆ มากมายที่ใช้ในการเข้าถึงรูทในเทอร์มินัล อธิบายว่าคำสั่งเหล่านี้ได้รับรูทอย่างไร เมื่อใดจึงจะใช้คำสั่งเหล่านั้น และทุกอย่างในระหว่างนั้น

su

su คำสั่งแทนที่ผู้ใช้ปัจจุบันที่ระบบใช้ในเชลล์

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

คุณสามารถเปลี่ยนไปใช้ผู้ใช้คนใดก็ได้โดยพิมพ์ su และเพิ่มชื่อผู้ใช้หลังจากนั้น สิ่งนี้จะบอกระบบให้เปลี่ยน (และออกจากระบบเป็นหลัก) ผู้ใช้ปัจจุบันเป็นผู้ใช้ที่ระบุ หรืออีกทางหนึ่ง su คำสั่งเข้าถึงรูทได้โดยป้อน su โดยไม่ระบุสิ่งใดหลังคำสั่ง

“su” ใช้ดีที่สุดเมื่อผู้ใช้ต้องการเข้าถึงบัญชีรูทบนระบบโดยตรง ไม่ผ่าน sudo หรืออะไรทำนองนั้น คุณจะถูกขอให้ป้อนรหัสผ่านของผู้ใช้รูทแทนเพราะคุณกำลังเข้าสู่ระบบอย่างแท้จริง นอกจากนี้ วิธีอื่นๆ ในการเข้าถึงรูทจะไม่มีประโยชน์ในการเข้าถึงไดเร็กทอรีหลักของรูทและสภาพแวดล้อมของรูทด้วย

sudo su

คำสั่งนี้จะขอรหัสผ่านของผู้ใช้ปัจจุบันแทนการรูท

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

โดยพื้นฐานแล้วมันเหมือนกับการเรียกใช้ su ในเปลือก บันทึกความแตกต่างที่สำคัญอย่างหนึ่ง แทนที่จะบอกให้ระบบ "เปลี่ยนผู้ใช้" โดยตรง คุณกำลังบอกให้ระบบเรียกใช้คำสั่ง "su" เป็นรูท เมื่อ sudo su ถูกเรียกใช้ “.profile” “.bashrc” และ “/etc/profile” จะเริ่มทำงาน เหมือนกับการเรียกใช้ su (หรือ su root ). หากเรียกใช้คำสั่งใดๆ ด้วย sudo ข้างหน้ามันจะได้รับสิทธิ์รูท

แม้ว่า “sudo su” กับ “su” จะไม่มีความแตกต่างกันมากนัก sudo su ยังคงเป็นคำสั่งที่มีประโยชน์มากด้วยเหตุผลสำคัญประการหนึ่ง:เมื่อผู้ใช้เรียกใช้ "su" เพื่อเข้าถึงรูทบนระบบ พวกเขาต้องรู้รหัสผ่านรูท รูทจะได้รับด้วย sudo su โดยขอรหัสผ่านของผู้ใช้ปัจจุบัน ทำให้สามารถรับรูทได้โดยไม่ต้องใช้รหัสผ่านรูทซึ่งจะช่วยเพิ่มความปลอดภัย

sudo -i

การใช้ sudo -i แทบจะเหมือนกับ sudo su คำสั่งโดยมีข้อยกเว้นหนึ่งข้อ:จะไม่โต้ตอบกับผู้ใช้รูทโดยตรง

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

เหมือน sudo su , -i แฟล็กอนุญาตให้ผู้ใช้รับสภาพแวดล้อมรูทโดยไม่ต้องรู้รหัสผ่านบัญชีรูท sudo -i ก็คล้ายกับการใช้ sudo su . มาก เนื่องจากจะอ่านไฟล์สิ่งแวดล้อมทั้งหมด (.profile ฯลฯ) และตั้งค่าสภาพแวดล้อมภายในเชลล์

ที่ซึ่งแตกต่างจาก “sudo su” คือ sudo -i เป็นวิธีที่สะอาดกว่าในการรับรูทและสภาพแวดล้อมรูทโดยไม่ต้องโต้ตอบกับผู้ใช้รูทโดยตรง เพื่อชี้แจง:ด้วย sudo su คุณกำลังใช้ setuid root รูทมากกว่าหนึ่งเครื่อง คำสั่งในพื้นหลัง สิ่งนี้ทำให้มีความท้าทายมากขึ้นในการค้นหาว่าตัวแปรสภาพแวดล้อมใดจะถูกเก็บไว้และตัวแปรใดที่จะเปลี่ยนแปลง (เมื่อสลับไปยังสภาพแวดล้อมรูท) สิ่งนี้ไม่เป็นความจริงกับ sudo -i . ด้วยเหตุนี้ คนส่วนใหญ่จึงมองว่าเป็นวิธีที่ต้องการรับรูทโดยไม่ต้องลงชื่อเข้าใช้โดยตรง

sudo -s

คำสั่งนี้เรียกเชลล์ด้วยตัวแปร $SHELL ของคุณ

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

-s สวิตช์สำหรับคำสั่ง "sudo" อ่านตัวแปร $SHELL ของผู้ใช้ปัจจุบันที่ดำเนินการคำสั่ง คำสั่งนี้ทำงานเหมือนกับว่าผู้ใช้กำลังเรียกใช้ sudo /bin/bash . Sudo -s เป็นเชลล์สไตล์ "ไม่ล็อกอิน" ไม่เหมือนกับคำสั่งเช่น sudo -i หรือ sudo su , ระบบจะไม่อ่านไฟล์สิ่งแวดล้อมใดๆ เมื่อผู้ใช้บอกให้เชลล์รัน sudo -s จะได้รับรูทแต่จะไม่เปลี่ยนผู้ใช้หรือสภาพแวดล้อมของผู้ใช้ บ้านของคุณจะไม่ใช่บ้านราก ฯลฯ

ความแตกต่างระหว่าง Su, Sudo Su, Sudo -s และ Sudo -i

คำสั่งนี้ใช้ดีที่สุดเมื่อผู้ใช้ไม่ต้องการเปลี่ยนไปใช้รูท แต่ต้องการเชลล์แบบโต้ตอบที่มีค่าสภาพแวดล้อม $SHELL คำสั่งอื่นๆ ที่กล่าวถึงข้างต้นจะเข้าถึงรูทได้ แต่ให้แตะไฟล์สภาพแวดล้อมของรูท และอนุญาตให้ผู้ใช้เข้าถึงรูทได้เต็มที่ (ซึ่งอาจเป็นปัญหาด้านความปลอดภัย)

คำถามที่พบบ่อย

1. ฉันควรใช้คำสั่งใด

แต่ละคำสั่งมีกรณีการใช้งาน สิ่งสำคัญในที่นี้คือการทำความเข้าใจว่าแต่ละคำสั่งทำอะไรและควรใช้เมื่อใด ตามที่แสดงไว้ sudo -i เป็นวิธีที่ปฏิบัติได้จริงและสะอาดที่สุดเพื่อให้ได้สภาพแวดล้อมการรูท ในทางกลับกัน ผู้ที่ใช้ sudo -s จะพบว่าพวกเขาสามารถได้รับรูทเชลล์โดยไม่ต้องสัมผัสกับสภาพแวดล้อมรูท ซึ่งเป็นสิ่งที่เพิ่มประโยชน์ด้านความปลอดภัย

2. การเข้าถึงรูทสามารถทำร้ายระบบของฉันได้หรือไม่

ในบางกรณีใช่ เว้นแต่คุณจะแน่ใจจริงๆ ว่าต้องการเข้าถึงรูทสำหรับทุกอย่างในเทอร์มินัลเซสชันเฉพาะ มักจะดีกว่าที่จะพิมพ์ sudo ตามด้วยคำสั่งถ้าคุณต้องการเข้าถึงรูทสำหรับคำสั่งนั้น ๆ เช่น พิมพ์ sudo apt install vlc ใน Linux เวอร์ชันที่ใช้ Debian ใด ๆ จะบอกระบบปฏิบัติการให้เข้าถึงรูทเพียงเพื่อเรียกใช้ตัวจัดการแพ็คเกจ APT เพื่อติดตั้ง VLC

ข้อแม้ที่สำคัญอย่างหนึ่งในการรัน sudo -i หรือตัวแปรอื่น ๆ ที่เราได้กล่าวถึงก่อนหน้านี้เมื่อเทียบกับการพิมพ์ sudo ก่อนที่แต่ละคำสั่งที่คุณต้องการเรียกใช้ในฐานะ root คือคำสั่งเดิมจะไม่บันทึกประวัติคำสั่งของคุณลงใน /var/log/auth.log . หากคุณทำพลาด คุณจะไม่สามารถย้อนกลับไปตรวจสอบสิ่งที่คุณทำลงไปเพื่อจะได้แก้ไข คุณจะต้องใช้หน่วยความจำไม่เพียงพอ เนื่องจากเซสชันรูทจะไม่ถูกบันทึก

3. เมื่อฉันพิมพ์ “sudo” ก่อนคำสั่ง ฉันกำลังเรียกใช้ “sudo su” รุ่นใดอยู่

โดยพิมพ์ sudo เพื่อรันคำสั่ง (เช่น คุณกำลังพิมพ์คำสั่งในบรรทัดเดียวกับคำสั่งที่คุณต้องการเรียกใช้) คุณจะต้องรันคำสั่งนั้นภายใต้รูทเชลล์แบบโต้ตอบ นี่คือสิ่งที่ sudo -s คำสั่งแบบสแตนด์อโลนทำได้

บทสรุป

ไม่มีคำสั่งใดในรายการนี้ที่ดีที่สุด 100% เมื่อผู้ใช้คุ้นเคยกับบรรทัดคำสั่งมากขึ้น พวกเขาจะต้องพิจารณาแต่ละวิธีในการรับรูท (และมีอยู่มากมาย) และชั่งน้ำหนักข้อดีข้อเสียและดำเนินการตามนั้น ฉันหวังว่าด้วยความช่วยเหลือของบทความนี้การตัดสินใจเหล่านี้จะง่ายขึ้น หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง โปรดอ่านบทความนี้เกี่ยวกับคำสั่ง Linux ที่มีประโยชน์เพื่อแสดงรายการเนื้อหาของไดเรกทอรี