บังคับให้ sudo แจ้งให้ใส่รหัสผ่าน


26

ถ้าฉันทำต่อไปนี้:

sudo su -
//enter password
exit
exit
//login again straight away
sudo su -

การร้องขอ sudo ครั้งที่สองไม่ได้ร้องขอรหัสผ่านเพราะแม้ว่าฉันจะออกจากระบบอีกครั้งฉันยังอยู่ในช่วงเวลาที่ จำกัด ซึ่งหมายความว่าฉันไม่จำเป็นต้องได้รับพร้อมท์ให้ใส่รหัสผ่านอีกครั้ง

เนื่องจากฉันกำลังทดลองใช้ privs ใหม่เพื่อให้แน่ใจว่ามันทำงานได้นี่ทำให้ฉันช้าลงในขณะที่รอให้หมดเวลา

มีคำสั่งที่ฉันสามารถเรียกใช้เพื่อรีเซ็ตการหมดเวลาหรือไม่

ฉันไม่ต้องการเปลี่ยนการหมดเวลาหรือส่งผลกระทบต่อผู้ใช้รายอื่น!


หากคุณยังไม่สามารถบังคับให้ sudo แจ้งขอรหัสผ่านคุณอาจต้องแสดงความคิดเห็นกฎผู้ใช้ที่กล่าวถึง "NOPASSWD" หากมีอยู่ใน/etc/sudoers.d/ไดเรกทอรี ฉันมีบรรทัด#includedir /etc/sudoers.dใน/etc/sudoersและแม้ว่าบรรทัดถูกปิดใช้งานโดยความคิดเห็น แต่ดูเหมือนว่า#ก่อนหน้าincludedirนี้ไม่ได้อ่านเป็นความคิดเห็น!
baptx

คำตอบ:


40

sudo -kจะฆ่าเวลาการหมดเวลา คุณสามารถใส่คำสั่งหลังจากนั้นเช่นsudo -k test_my_privileges.sh

จากman sudo:

-Kตัวเลือก -K (ฆ่าแน่นอน) เป็นเหมือน -k ยกเว้นว่าจะลบการประทับเวลาของผู้ใช้ทั้งหมดและอาจไม่สามารถใช้ร่วมกับคำสั่งหรือตัวเลือกอื่น ๆ ตัวเลือกนี้ไม่ต้องใช้รหัสผ่าน

-kเมื่อใช้งานด้วยตัวเองตัวเลือก -k (ฆ่า) เพื่อ sudo ทำให้การประทับเวลาของผู้ใช้เป็นโมฆะโดยการตั้งเวลาให้กับ Epoch ในครั้งต่อไป sudo นั้นจะต้องใช้รหัสผ่าน ตัวเลือกนี้ไม่จำเป็นต้องใช้รหัสผ่านและถูกเพิ่มเพื่อให้ผู้ใช้สามารถเพิกถอนสิทธิ์ sudo จากไฟล์. logout

คุณสามารถเปลี่ยนได้อย่างถาวร จากman sudoers:

timestamp_timeout

จำนวนนาทีที่สามารถผ่านไปก่อนที่ sudo จะขอรหัสผ่านอีกครั้ง การหมดเวลาอาจรวมถึงส่วนประกอบที่เป็นเศษส่วนหากจำนวนนาทีไม่เพียงพอตัวอย่างเช่น 2.5 ค่าเริ่มต้นคือ 5 ตั้งค่านี้เป็น 0 เพื่อให้ใส่รหัสผ่านทุกครั้ง หากตั้งค่าเป็นน้อยกว่า 0 การประทับเวลาของผู้ใช้จะไม่มีวันหมดอายุ สามารถใช้เพื่ออนุญาตให้ผู้ใช้สร้างหรือลบการประทับเวลาของตนเองผ่าน sudo -v และ sudo -k ตามลำดับ


2
ระวังsudo -k commandจะไม่ลบข้อมูลประจำตัว มันจะละเว้นข้อมูลประจำตัวปัจจุบันและไม่เก็บไว้
user1346466

เพียงเพื่อเพิ่มไปนี้ หากคุณต้องการที่จะเปลี่ยนหมดเวลาการประทับเวลาที่คุณจะต้องแก้ไขไฟล์ที่มีsudoers sudo visudoจากนั้นคุณเพิ่มบรรทัดDefaults timestamp_timeout = 0ที่ท้ายรายการอื่น ๆDefaultsในไฟล์ นำบรรทัดออกมาอีกครั้งเพื่อเปลี่ยนกลับเป็น "หมดเวลา" ปกติ
Floris

คำถามติดตามผลของฉัน: unix.stackexchange.com/q/416039/26152
UlfR

5

คำตอบของ Shawn นั้นยอดเยี่ยม แต่มีตัวเลือกการกำหนดค่าเพิ่มเติมที่อาจเป็นประโยชน์ในสถานการณ์นี้

จากman sudoers:

tty_tickets

หากตั้งค่าผู้ใช้จะต้องรับรองความถูกต้องตามแบบ tty เมื่อเปิดใช้งานการตั้งค่าสถานะนี้ sudo จะใช้ไฟล์ที่ชื่อสำหรับ tty ที่ผู้ใช้ลงชื่อเข้าใช้ในไดเรกทอรีการประทับเวลาของผู้ใช้ หากปิดใช้งานจะใช้การประทับเวลาของไดเรกทอรีแทน

ธงนี้เปิดตามค่าเริ่มต้น

จากman sudo:

เมื่อเปิดใช้งานตัวเลือก tty_tickets ใน sudoers การประทับเวลาจะมีความละเอียดต่อการค้นหาหลายครั้ง แต่ยังคงอยู่นานกว่าเซสชันของผู้ใช้ บนระบบ Linux ที่ใช้ระบบไฟล์ devpts ระบบ Solaris พร้อมระบบไฟล์ของอุปกรณ์รวมถึงระบบอื่น ๆ ที่ใช้ระบบไฟล์ devfs ที่เพิ่มจำนวนไอโหนดของอุปกรณ์ที่สร้างแบบ monotonically (เช่น Mac OS X) sudo สามารถ เพื่อพิจารณาว่าไฟล์การประทับเวลาตาม tty นั้นค้างและจะไม่สนใจ ผู้ดูแลระบบไม่ควรใช้คุณสมบัตินี้เนื่องจากไม่สามารถใช้ได้ในระดับสากล

ฉันคิดว่ามันค่อนข้างใหม่ หากระบบของคุณรองรับหากคุณออกจากระบบจากนั้นเข้าสู่ระบบ sudo จะขอรหัสผ่านของคุณอีกครั้ง (ฉันมีsudo -Kในสคริปต์ออกจากเปลือกของฉันด้วย)

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