อะไรคือความแตกต่างระหว่าง sudo -i และ sudo su -


คำตอบ:


30

พวกมันอาจให้ฟังก์ชั่นใกล้เคียงกับสิ่งเดียวกัน แต่ดูเหมือนว่า 'sudo -i' นั้นมีน้ำหนักเบากว่าและช่วยให้การอ้างอิงกลับมีประโยชน์ในสภาพแวดล้อมของคุณ

คุณสามารถดูกระบวนการพิเศษได้โดยดูที่ 'ps auxf' (f ทำให้คุณมีมุมมองฟอเรสต์)

sudo -i ให้ต้นไม้กระบวนการนี้

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su -ให้ต้นไม้กระบวนการนี้

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

โปรดทราบว่าพวกเขากำลังเริ่มต้นจากกระบวนการ bash เดียวกัน pid, 4482 แต่ su - ดูเหมือนว่าจะเกิดอีกขั้นตอนหนึ่ง)

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

อีกวิธีในการตรวจสอบนี้คือการรันทั้งสองคำสั่งด้วย strace -f

strace -f -o sudoi sudo -i

VS

strace -f -o sudosu sudo su -

ถ้าคุณทำให้ทั้งสองสเตรตแตกต่างกันคุณจะเห็นว่ามีการวิ่งของ exudo มากกว่าสำหรับ sudo su

อีกหนึ่งสิ่ง.

sudo -iรักษาตัวแปรสภาพแวดล้อมพิเศษที่กำหนดโดย SUDO

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - clobbers ตัวแปรเหล่านั้น


ขอบคุณฉันโหวตให้คุณเป็นคำตอบที่ถูกต้อง อีกหนึ่งคำถามที่sudo su -ไม่มีจุดหมายดังนั้น?
Howard

หากคุณต้องการปิดกั้นการอ้างอิง SUDO ย้อนกลับมันอาจมีประโยชน์ ดังนั้นอย่าไร้ประโยชน์ในกรณีนั้น
Joel K

นอกจากนี้ยังมีความแตกต่างใหญ่ในการจัดการอาร์กิวเมนต์การจัดการตัวแปรสภาพแวดล้อมและความปลอดภัยเมื่อเป็นผู้ใช้ที่ไม่ใช่รูท ดูสิ่งที่ฉันเพิ่มที่นี่: serverfault.com/q/601140/102814
Craig Ringer

1

คำตอบ Shot:ไม่พวกเขาไม่เหมือนกัน

คำตอบยาว: sudo และ su - เป็นโปรแกรมที่แตกต่างกันซึ่งทำงานเดียวกันนั่นคือการยกระดับคุณไปสู่สิทธิ์ของรูท

suเคยเป็นวิธีที่แท้จริงของการกลายเป็นรากบนระบบ Linux อย่างไรก็ตามมีความจำเป็นต้องแยกสิทธิพิเศษและทิ้งข้อมูลการตรวจสอบไว้ นอกจากนี้เมื่อคุณทำซู -ทุกสิ่งที่คุณทำนั้นเป็นเหมือนรากและเป็นอันตรายที่จะมีพลังมาก นี่คือที่ที่ sudo เข้ามาช่วย

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

sudo rm /root/someFile

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

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

เมื่อคุณทำsu -หรือsudo -iคุณทำสิ่งเดียวกัน นั่นคือการรูต แต่จำไว้ว่าsuและsudoนั้นแตกต่างกันโดยสิ้นเชิงและมอบเครื่องมือต่าง ๆ ให้คุณในฐานะผู้ดูแลระบบ ส่วนตัวฉันไม่เคยเรียกใช้ su - และนโยบาย pamของฉันห้ามไม่ให้มีใครทำงานได้ ในระบบของฉันคุณจะต้องใช้สาเหตุ sudo ของผลประโยชน์เพิ่ม

ข้อมูลเพิ่มเติม: การใช้และการเปิดใช้งาน sudo


suยังสามารถเรียกใช้เพียงคำสั่งเดียว:su -c 'command ...'
Eliah Kagan

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