บริการ sudo ทำอะไร


17

เท่าที่ฉันรู้และดูเหมือนว่าคนอื่น ๆ มีความคิดเห็นแบบเดียวกัน sudoคือคำสั่งที่ดำเนินการบางอย่างด้วยสิทธิ์ระดับผู้ดูแลระบบ

อย่างไรก็ตามเมื่อฉันเรียกใช้rcconfฉันสามารถดูบรรทัดนี้:

[*] sudo    Provide limited super user privileges to specific users

ดังนั้นจุดที่มีบริการนี้คืออะไร? หรือนี่คือบริการแม้แต่?


นี่คือสิ่งที่ฉันพบขณะค้นหา google-> Sudo
adi

"นี่คือที่ที่ sudo เข้ามา - อนุญาตให้ผู้ใช้ที่ได้รับอนุญาต (ปกติ" ผู้ดูแลระบบ "สำหรับข้อมูลเพิ่มเติมโปรดดูที่ AddUsersHowto) เพื่อรันโปรแกรมบางโปรแกรมเป็นรูทโดยไม่ต้องรู้รหัสผ่านรูท" - นั่นคือสิ่งที่ฉันพูดในคำถามของฉัน
s3v3n

3
คำถามเกี่ยวกับบริการไม่ใช่คำสั่ง
s3v3n

คำตอบ:


22

คำตอบสั้น ๆ

หากต้องการเพิกถอนการดำเนินการรับรองความถูกต้อง 'แคช' ของผู้ใช้เมื่อรีบูต ไม่ใช่ daemon เพียงสคริปต์รันในเวลาบูต


คำตอบที่กว้างขวาง

ด้วยการตรวจสอบไฟล์ init /etc/init.d/sudoที่ 'เริ่มบริการ' คุณสามารถเห็นสิ่งที่กำลังทำอยู่:

case "$1" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

ดังนั้นโดยพื้นฐานแล้วมันแค่แตะไฟล์บางไฟล์ในตอน/var/lib/sudoเริ่มต้นของระบบเพื่อให้มันมีการประทับเวลาการแก้ไขที่เก่ามาก ดังนั้นการดำเนินการรับรองความถูกต้องที่ได้รับ 'แคช' จะถูกเพิกถอนเมื่อเริ่มต้นบริการ (ซึ่งเกิดขึ้นเมื่อบูต)

รายละเอียดเพิ่มเติมเกี่ยวกับ/var/lib/sudoไดเรกทอรีและการประทับเวลาเหล่านั้นได้ไหม จากแผนที่ของsudo(8):

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps

คำตอบที่สมบูรณ์แบบ :)
s3v3n

12

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


คำอธิบายโดยละเอียดเกี่ยวกับ sudo

คำอธิบายทั้งหมดด้านล่างนี้เพื่อรับข้อมูลทั้งหมดสำหรับทุกคนที่อ่านคำถามนี้แล้วอธิบายว่าไฟล์ sudo ในโฟลเดอร์บริการกำลังทำอะไรที่นั่น

เมื่อคุณติดตั้ง Ubuntu หรือ distro อื่น ๆ ที่ใช้sudoความแตกต่างระหว่างการเป็นrootและเป็นผู้ใช้ที่ใช้sudoเพื่อรับสิทธิ์ "root like" (การดูแลระบบหรือสิทธิ์ของผู้ใช้ขั้นสูง) มีดังต่อไปนี้:

ในฐานะที่เป็นราก

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

ในฐานะที่เป็น sudo

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

ทำไมถูกสร้าง SUDO

การสร้างSUDOเสร็จแล้วเพราะในอดีตการใช้รูทสร้างปัญหามากกว่าโซลูชัน ผู้ใช้ที่มีสิทธิ์ทั้งหมดซึ่งหมายความว่าถ้าพวกเขาไม่ทำความสะอาดฤดูใบไม้ผลิและตัวอักษรที่ถูกลบ/usr, /libและ/binโฟลเดอร์ (เพราะพวกเขาคิดว่าพวกเขาไม่จำเป็นต้องใช้พวกเขา) .. คาดเดาสิ่งที่จะเกิดขึ้น ปัญหาหลายอย่างในอดีตเป็นเพราะผู้ใช้ไม่ทราบถึงพลังที่พวกเขามีเมื่อใช้รูท โดยพื้นฐานแล้วพวกเขามีรูท แต่ไม่เข้าใจลีนุกซ์, ลำดับชั้นของระบบไฟล์, ไฟล์ใดที่สำคัญ ฯลฯ (บางอย่างเช่นมีเฟอร์รารีและไม่รู้วิธีขับ ... ในทางหลวง!)

SUDOยังใช้งานโดยแอพ GUI (เช่น Update Manager) เมื่อพวกเขาต้องการสิทธิ์ระดับผู้ดูแลระบบชั่วคราวในการทำบางสิ่ง พวกเขาต้องการเพียงแค่จำนวนคำสั่งที่เฉพาะเจาะจง (โดยทั่วไป 1) จากนั้นพวกเขากลับไปที่สิทธิ์ระดับผู้ใช้ นี่คือการหลีกเลี่ยงการมีสิทธิ์ใช้งานรูทตลอดเวลาและเพื่อหลีกเลี่ยงข้อผิดพลาดหากผู้ใช้ตัดสินใจที่จะลบส่วนสำคัญบางส่วนของระบบ

นอกจากนี้ยังให้ความปลอดภัยที่ดีขึ้นเนื่องจากผู้ใช้รูทถูกปิดใช้งานโดยค่าเริ่มต้น

สุดท้ายถ้าคุณมีพีซีตั้งโต๊ะหรือเซิร์ฟเวอร์คุณไม่ต้องการให้ทุกคนรูทหรือมีสิทธิ์ผู้ดูแลระบบทั้งหมด ความคิดที่แย่มาก ๆ ถ้าน้องสาวหรือน้องชายของคุณเริ่มสงสัยว่าจะเกิดอะไรขึ้นถ้า/bootเจอDELกุญแจ นี่คือที่sudoมาเพื่อลดโอกาสที่สิ่งเลวร้ายเกิดขึ้น

การให้สิทธิ์ผู้ใช้ขั้นสูงแบบ จำกัด สำหรับผู้ใช้บางรายหมายความว่าอย่างไร

ผู้ใช้ sudo หรือ sudoers มีไฟล์การกำหนดค่าที่บอกพวกเขาถึงวิธี จำกัด หรือเปิดคำสั่ง sudo สำหรับผู้ใช้ที่เฉพาะเจาะจง ไฟล์/etc/sudoersมีข้อมูลทั้งหมดเพื่อ จำกัด หรือให้สิทธิ์การเข้าถึงแก่ผู้ใช้ sudo โดยค่าเริ่มต้นมันมาพร้อมกับการเข้าถึงทุกอย่าง แต่คุณสามารถกำหนดค่าหรือ จำกัด สิ่งนี้ได้ตามที่คุณต้องการ

สำหรับข้อมูลเกี่ยวกับวิธีใช้ประเภทไฟล์ sudoers man sudoersในเทอร์มินัล ตัวอย่างเช่นรูปแบบปกติคือ:

USER HOST = COMMANDS

ตัวอย่างเช่นcyrex server1 = /bin/lsจะให้ผู้ใช้ cyrex ในการเข้าถึงเซิร์ฟเวอร์โฮสต์ 1 เพื่อเรียกใช้คำสั่ง ls

ตัวอย่างเช่นcyrex server1 (root) = /bin/lsจะให้ผู้ใช้ cyrex ในการเข้าถึงเซิร์ฟเวอร์โฮสต์ 1 เพื่อรันคำสั่ง ls ในฐานะรูท

ตัวอย่างเช่นcyrex ALL = /bin/lsจะให้ผู้ใช้ cyrex ในการเข้าถึงโฮสต์ทั้งหมดเพื่อเรียกใช้คำสั่ง ls

ตัวอย่างเช่นcyrex ALL = ALLจะให้ผู้ใช้ cyrex ในการเข้าถึงโฮสต์ทั้งหมดเพื่อเรียกใช้คำสั่งทั้งหมด

ตัวอย่างเช่นluis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killallจะอนุญาตให้ฉันเรียกใช้ sudo สำหรับคำสั่งkillและkillallเป็น root โดยไม่ต้องขอรหัสผ่าน

ป้อนคำอธิบายรูปภาพที่นี่


2
เขารู้เกี่ยวกับสิ่งที่คำสั่ง sudo ทำ คำถามคือเกี่ยวกับบริการระบบสำหรับ sudo
gertvdijk

1
@ gertvdijk - ฉันต้องอธิบายพื้นฐานก่อนเพราะเขาไม่เพียง แต่จะมองคำถามนี้ ส่วนสุดท้ายรวมถึงเหตุผลเดียวที่ฉันเห็นไฟล์ sudo ในโฟลเดอร์บริการ
Luis Alvarado

ขอบคุณ Luis Alvarado - The Wolver สำหรับข้อมูลที่กว้างขวางและขอบคุณxkcd ที่ดัดแปลงมาอย่างตลก ๆ ที่อ้างอิงถึง!!ผู้ประกอบการ bang bang แต่บริการ (ไม่ใช่คำสั่ง) sudoทำอะไรได้บ้าง มันจะดีถ้าคุณสามารถปรับปรุงคำตอบของคุณเพื่อตอบคำถาม
s3v3n

1
overkill นิด ๆ หน่อย ๆ อธิบายทุกสิ่งเพียงแค่วลีในตอนท้าย แต่มันตอบคำถามของฉัน;)
s3v3n

1
@ LuisAlvarado-TheWolverine ฮ่าฮ่าสิทธิ์ของคุณ เป็นเรื่องที่ดีที่คุณตอบสนองฉันใช่ฉันทำได้ .. ขอบคุณ
ลูซิโอ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.