อะไรคือความแตกต่างระหว่างสองคำสั่งผู้ใช้ขั้นสูงsu -s
และsudo -s
?
พวกเขาทั้งสองให้เชลล์กับการเข้าถึงบัญชี superuser
อะไรคือความแตกต่างระหว่างสองคำสั่งผู้ใช้ขั้นสูงsu -s
และsudo -s
?
พวกเขาทั้งสองให้เชลล์กับการเข้าถึงบัญชี superuser
คำตอบ:
ในทางปฏิบัติพวกเขาทั้งสองจะทำให้คุณเป็น superuser อย่างไรก็ตามพวกเขาทำสิ่งที่แตกต่างกันเล็กน้อยในรูปแบบที่แตกต่างกันเล็กน้อย
ก่อนอื่นให้su -
คุณเปลี่ยนไปใช้เชลล์ล็อกอินในขณะที่sudo -s
ไม่มี ในทางปฏิบัตินี้มักจะหมายความว่าตัวแปรสภาพแวดล้อมของคุณจะไม่สลับไปroot
's sudo -s
สำหรับ โปรดทราบว่าคุณสามารถเรียกใช้เพียงsu
เพื่อไม่ได้เชลล์การเข้าสู่ระบบหรือsudo -i
เพื่อรับเชลล์การเข้าสู่ระบบ [ไม่ใช่ในทุกรุ่น]
ประการที่สองsu
และsu -
เปลี่ยนเป็นผู้ใช้ใหม่โดยขอให้คุณตรวจสอบสิทธิ์ในฐานะผู้ใช้ใหม่ sudo -s
และsudo -i
(และปกติsudo foo
) ให้คุณเรียกใช้คำสั่งที่คุณได้รับอนุญาตล่วงหน้า [ดู/etc/sudoers
] อาจเป็นไปได้โดยขอให้คุณยืนยันID ปัจจุบันของคุณ
หากคุณต้องการที่จะน่ารักจริงๆคุณสามารถเรียกใช้sudo su -
ซึ่งจะขอให้เข้าสู่ระบบในฐานะ root ( su -
) ดำเนินการโดยผู้ใช้รูท ( sudo
ส่วน)
หากผู้ใช้รูทถูกล็อค (เช่นบน Ubuntu) คุณจะไม่สามารถเข้าสู่ระบบโดยใช้รูทsu
ได้ ในกรณีนี้คุณจะต้องใช้sudo -s
หรือsudo -i
su -s
จะเปลี่ยนไปใช้ผู้ใช้ (ในกรณีนี้รูท) และเรียกใช้เชลล์ที่คุณระบุหรือหนึ่งในวิธีการอื่นในการพิจารณาเชลล์ สิ่งนี้มีประโยชน์ถ้าคุณต้องการใช้ zsh หรือเชลล์อื่นเป็นรูทอย่างรวดเร็วจริง ๆ ... และด้วยเหตุผลบางอย่างที่คุณไม่ได้ใช้ sudo
sudo -s
เพียงแค่เรียกใช้เชลล์โดยใช้ sudo ซึ่งจะให้รูทเชลล์แก่คุณ คุณสามารถส่งเชลล์ไปยังมันได้เช่นกัน
su -s เก่ากว่าเก่ากว่ามากแล้วคำสั่ง sudo -s ฉันเดาว่าผู้พัฒนาพยายามทำให้ง่ายที่สุดเท่าที่จะทำได้เพื่อสลับไปใช้ sudo
su คือคำสั่งให้เปลี่ยนผู้ใช้รายอื่นไม่ว่าจะรันเชลล์หรือรันคำสั่งเฉพาะ คุณต้องตรวจสอบสิทธิ์ในฐานะผู้ใช้รายอื่น หากคุณต้องการ su ถึง root คุณต้องมีรหัสผ่านรูท
sudo เป็นคำสั่งในการดำเนินการคำสั่งอื่น (เป็นทางเลือกเชลล์) ในฐานะผู้ใช้ที่แตกต่างกัน คุณต้องตรวจสอบเป็นผู้ใช้ของคุณเอง สิทธิ์ในการใช้งาน sudo (และสิ่งที่คุณสามารถทำได้) ถูกระบุโดยผู้ดูแลระบบในไฟล์ sudoers
หากคุณให้สิทธิ์การเข้าถึง su แก่บุคคลอื่น (ตัวอย่างเช่นให้รหัสผ่านรูทแก่พวกเขา) พวกเขาสามารถทำอะไรกับมันได้ - เรียกใช้คำสั่งอื่นเปิดเปลือกเปลี่ยนรหัสผ่านล็อกอินจากระยะไกลผ่าน ssh และอื่น ๆ คุณเป็นหลักให้พวกเขาเข้าถึงบัญชีอื่นโดย 'ซู' เป็นเพียงสิ่งเดียวที่พวกเขาสามารถทำได้
sudo ละเอียดยิ่งขึ้น คุณสามารถให้สิทธิพิเศษแก่ผู้ใช้หรือกลุ่ม คุณสามารถอนุญาตให้ผู้ใช้หรือกลุ่ม sudo ภายในกรอบเวลาที่กำหนด (เช่นวันจันทร์ถึงวันศุกร์ 9.00 น. ถึง 17.00 น.) คุณสามารถระบุรายการคำสั่งเฉพาะที่อนุญาตให้เรียกใช้ (เช่นเฉพาะ / usr / local / bin / run_backup) หรือคุณสามารถระบุผู้ใช้เฉพาะที่พวกเขาได้รับอนุญาตให้เรียกใช้คำสั่งเป็น (เช่น www, backup, staff ฯลฯ )
นอกจากความยืดหยุ่นแล้ว sudo ยังเป็นทางออกที่ดีกว่าในทุกกรณีเพราะไม่ต้องการการเข้าถึงสิ่งที่ผู้ใช้ยังไม่มี หากคุณให้สิทธิ์การเข้าถึง sudo กับใครบางคนคุณสามารถเพิกถอนได้โดยลบบรรทัดของพวกเขาในไฟล์ sudoers หรือลบออกจากกลุ่ม sudoers หากคุณลบบัญชีของพวกเขาการเข้าถึงของพวกเขาจะหายไป
หากคุณให้รหัสผ่านรูทแก่พวกเขาแม้จะสมมติว่าพวกเขาไม่ได้ทำอะไรที่ไม่พึงประสงค์ก็ตามพวกเขาจะรู้ได้ตลอดไป หากคุณมีหลายคนที่ต้องการการเข้าถึงรูทสำหรับงานการดูแลระบบนี่หมายถึงการเปลี่ยนรหัสผ่านรูททั้งหมดเมื่อใดก็ตามที่มีคนออกไป
จากWikipedia :
su (ย่อมาจากผู้ใช้สำรองหรือผู้ใช้สวิตช์) เป็นคำสั่ง Unix ที่ใช้เพื่อรันเชลล์ของผู้ใช้รายอื่นโดยไม่ต้องออกจากระบบ
คำสั่งที่เกี่ยวข้องที่เรียกว่าsudo เรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น แต่สังเกตชุดของข้อ จำกัด เกี่ยวกับผู้ใช้ที่สามารถดำเนินการคำสั่งที่ผู้ใช้รายอื่น (โดยทั่วไปในไฟล์กำหนดค่าชื่อ / etc / sudoers ซึ่งแตกต่างจาก su, sudo รับรองความถูกต้องผู้ใช้กับรหัสผ่านของตัวเองมากกว่าของผู้ใช้เป้าหมาย (เพื่อให้การมอบหมายคำสั่งเฉพาะให้กับผู้ใช้เฉพาะในโฮสต์ที่เฉพาะเจาะจงโดยไม่ต้องใช้รหัสผ่านร่วมกันในหมู่พวกเขา
สิ่งหนึ่งที่ไม่ได้รับการกล่าวถึงอย่างสมบูรณ์คือสิ่งนี้สิ่งที่คุณสามารถใช้ได้บ่อยขึ้นอยู่กับการกระจายที่คุณใช้และผู้ที่ทำงาน อย่างใดอย่างหนึ่ง ( su
หรือsudo
) อาจไม่ได้ตั้งค่าสำหรับการใช้งานเต็มรูปแบบโดยค่าเริ่มต้น ตัวอย่างเช่นตามที่บางคนกล่าวถึง OS X และ Ubuntu จะปิดใช้งานบัญชีรูท ( su
) ตามค่าเริ่มต้น อย่างเท่าเทียมกัน Debian ไม่ให้ผู้ใช้ปกติสิทธิพิเศษใด ๆ sudo
ที่จะเริ่มต้น (ในทุกระบบคุณสามารถเปลี่ยนค่าเริ่มต้นเหล่านี้ได้ แต่ถ้าคุณมีสิทธิ์ระดับผู้ดูแลระบบบางอย่างเพื่อเริ่มต้นฉันคิดว่าเรากำลังพูดถึงสถานการณ์ที่ไม่ใช่เซิร์ฟเวอร์และคุณดูแลเครื่องเนื่องจากเราใช้ SU แทน มากกว่า SF แต่ในกรณีนี้)
สุดท้ายหากคุณต้องการที่จะใช้sudo
ในทางที่มีรายละเอียดเพิ่มเติมที่คุณควรดูman sudoers
สำหรับวิธีการแก้ไขetc / sudoers /แฟ้ม อย่างไรก็ตามคุณไม่ควรแก้ไขด้วยมือ ใช้โปรแกรมvisudo - มันจะป้องกันคุณจากการบันทึกการแก้ไขของคุณเว้นแต่พวกเขาจะมีสติอย่างน้อยที่สุด มันเป็นระบบป้องกันที่ดีเยี่ยมสำหรับข้อผิดพลาดแบบง่าย ๆ ซึ่งสามารถล็อคคุณจากสิทธิ์ผู้ดูแลระบบของคุณเอง
ในระบบที่บัญชี superuser ถูกปิดใช้งานเช่น Mac OS X su
จะไม่ทำงาน sudo -s
จะ.
นอกจากนี้ยังปรากฏว่าไม่มีsu -s
อยู่อย่างน้อยในเครื่องของฉัน
sudo
(ซึ่งไม่ได้ติดตั้งไว้เสมอ)
บทนำนี้อาจช่วยคุณได้ su
เป็นการจดชวเลขsu root
และคุณรักษาสิทธิ์ของคุณในฐานะผู้ใช้รายอื่นอย่างไม่มีกำหนด อันตรายยิ่งขึ้น แต่ยังสะดวกกว่าถ้าคุณทำคำสั่งรูทเข้ามากมายในช่วงระยะเวลาหนึ่ง
โดยทั่วไปแล้ว su จะสร้างเชลล์ล็อกอินใหม่พร้อมสิทธิ์ผู้ใช้อื่น (ล็อกอิน) sudo จะอนุญาตให้คุณดำเนินการคำสั่งชั่วคราวโดยใช้ผู้ใช้ที่คุณระบุ ในบาง UNIX เช่น FreeBDS ไม่มีตัวเลือก '-s'
sudo
ไม่ได้ให้สิทธิ์พิเศษสำหรับผู้ใช้ปกติ ในระบบเหล่านั้นsu
เป็นเพียงตัวเลือกเดียว