อะไรคือความแตกต่างระหว่าง 'su -', 'sudo bash' และ 'sudo sh'?


29

ฉันต้องการทราบว่าอะไรคือความแตกต่างระหว่าง

  • su -
  • sudo bash
  • sudo sh

ฉันไม่สามารถเข้าสู่ระบบเป็นรากในขณะที่ทำsu -เพราะผมไม่ได้มีรหัสผ่านราก - ฉันหมายความว่าฉันมีของฉันรหัสผ่านของผู้ใช้กับที่ฉันสามารถsudo "command" แต่รหัสผ่านนี้ไม่ได้ทำงานให้su - ฉันสามารถเข้าสู่ระบบเป็นรากที่มีsudo bashกับผู้ใช้ของฉันรหัสผ่านและฉันสามารถเข้าสู่ระบบในขณะที่ ทำsudo shแต่ฉันได้รับคำสั่งในรูปแบบนี้ #

คำตอบ:


27

พื้นหลัง

ในลินุกซ์ (และ Unix ทั่วไป) มีSuperUserชื่อราก SuperUser สามารถทำทุกอย่างและทุกอย่างดังนั้นการทำงานประจำวันเนื่องจาก SuperUser อาจเป็นอันตรายได้ คุณสามารถพิมพ์คำสั่งไม่ถูกต้องและทำลายระบบ เป็นการดีที่คุณจะทำงานในฐานะผู้ใช้ที่มีเพียงสิทธิพิเศษที่จำเป็นสำหรับงานในมือ ในบางกรณีนี่เป็นรูท แต่ส่วนใหญ่เป็นผู้ใช้ปกติ

ซู -

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

ดูวิธีการเปิดใช้งานบัญชีราก

sudo sh

คำสั่งนี้รัน "sh" ในฐานะผู้ใช้ขั้นสูง
ยูทิลิตี sh คือตัวแปลภาษาคำสั่งที่จะเรียกใช้คำสั่งที่อ่านจากสตริงบรรทัดคำสั่งอินพุตมาตรฐานหรือไฟล์ที่ระบุ

sudo bash

คำสั่งนี้รัน "bash" ในฐานะผู้ใช้ขั้นสูง
Bash คือเชลล์หรือล่ามภาษาคำสั่ง Bash เป็นเปลือกที่เข้ากันได้กับ sh ที่รวมเอาคุณสมบัติที่มีประโยชน์จาก Korn เชลล์ (ksh) และ C เชลล์ (csh) มันมีวัตถุประสงค์เพื่อให้สอดคล้องกับมาตรฐาน IEEE POSIX P1003.2 / ISO 9945.2 เชลล์และเครื่องมือ มันมีการปรับปรุงการทำงานมากกว่า SH สำหรับทั้งการเขียนโปรแกรมและการใช้งานแบบโต้ตอบ นอกจากนี้สคริปต์ส่วนใหญ่ sh สามารถเรียกใช้โดย Bash โดยไม่มีการดัดแปลง

อ้างอิง: 1 , 2 , 3


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

6

su -:

สิ่งนี้จะเปลี่ยนตัวระบุผู้ใช้ของคุณและสืบทอดตัวแปรสภาพแวดล้อมราวกับว่าคุณได้เข้าสู่ระบบด้วยผู้ใช้รายนั้น โดยปกติคุณจะใช้รูปแบบsu - <userid>เพื่อเข้าสู่ระบบในฐานะผู้ใช้ หากคุณปล่อย "userid" มันจะถือว่าคุณพยายามเข้าสู่ระบบในฐานะ root - ซึ่งคุณไม่สามารถทำได้ (เว้นแต่คุณจะเปลี่ยนรหัสผ่านรูท)

sudo bash& sudo sh:

อะไรก็ตามหลังจาก sudo เป็นโปรแกรมที่จะทำงาน - ดังนั้นในกรณีนี้คุณจะต้องรัน shell สองตัว - bash และ dash ตามลำดับ ใช้man bashและman shสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเชลล์ที่แตกต่างกัน


คำถามที่เกี่ยวข้อง:


ตกลงขอบคุณที่ตอบกลับ แต่รหัสผ่านเริ่มต้นสำหรับรูทนั้นคืออะไร? หาได้ที่ไหน
Patryk

@lordmonkey root ไม่มีรหัสผ่านและไม่จำเป็นต้องใช้ sudo -iจะให้เชลล์ล็อกอินแก่คุณอย่างที่su -อยากยกเว้น sudo ขอรหัสผ่านไม่ใช่รูท
geirha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.