ฉันจะบังคับให้ sudo ร้องขอรหัสผ่านได้เสมอหลังจากตื่นจากการหยุดชั่วคราวได้อย่างไร


15

sudoถ้าฉันใช้คำสั่งถ้าฉันใช้sudoภายใน15/5 นาทีถัดไป(ไม่แน่ใจว่าจะจำฉันได้นานแค่ไหน) มันจะไม่ถามรหัสผ่านให้ฉัน มันจะเตือนฉันอีกครั้งหากฉันไม่ได้ใช้งานเป็นเวลานานอย่างน้อย

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

ดังนั้นฉันจะทำมันได้อย่างไรไม่ว่าจะไม่ได้ใช้นานแค่ไหนsudoมันก็จะขอรหัสผ่านให้ฉันหลังจากที่หยุดชั่วคราวเมื่อฉันลงชื่อเข้าใช้อีกครั้งแม้ว่าฉันจะยังอยู่ในกรอบเวลาที่ 15/5 นาทีที่ยังไม่ได้ใช้sudoยังไม่ผ่าน?

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

ฉันใช้ Ubuntu GNOME 15.10 กับ GNOME 3.18


1
เป็นคำถามที่ดี แต่ทำไมคุณถึงหวาดระแวง? เพราะหากบุคคลอื่นที่ไม่ใช่คุณรู้ว่ารหัสผ่านการเข้าสู่ระบบของคุณไม่สามารถหยุดการใช้งานได้sudo
Edward Torvalds

หากคุณเพิ่งออกจากหน้าต่างเทอร์มินัลคุณจะต้องพิมพ์รหัสผ่านของคุณอีกครั้งเมื่อคุณเปิดหน้าต่างเทอร์มินัลใหม่ไม่ว่าคุณจะทำอย่างรวดเร็วแค่ไหน หากคุณกำลังใช้งานบางอย่างในหน้าต่างเทอร์มินัลให้ผนวก `; exit` และหน้าต่างจะปิดเมื่อคำสั่งเสร็จสิ้น
Marc

@Marc: ฉันรู้ แต่มันไม่สะดวกเสมอไปที่จะออกหรือไม่ต้องsudoถามตัวเองในครั้งต่อไป โซลูชันอัตโนมัติจะเป็นที่ต้องการ

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

1
ต่อท้าย `; exit` (การกดแป้นเจ็ดครั้ง) ดูเหมือนง่ายสำหรับฉัน คุณเดินออกไปจากการบำรุงรักษาชนิดใดเพราะฉันไม่สามารถคิดได้มากว่าฉันจะมีโอกาสหยุดพักชั่วคราว
Marc

คำตอบ:


19

จากman sudo:

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

ดังนั้นสิ่งที่คุณต้องการคือผู้ใช้ของคุณให้ทำงานsudo -Kทุกครั้งที่ระบบหยุดทำงาน

Ubuntu 15.04+ (systemd)

ซึ่งสามารถทำได้บน Ubuntu 15.04+ /lib/systemd/system-sleep/โดยการวางสคริปต์ใน

  1. เรียกใช้sudo nano /lib/systemd/system-sleep/disable_sudo_user(แทนที่userด้วยชื่อผู้ใช้ของคุณเพื่อความสะดวก);
  2. วางในสคริปต์ต่อไปนี้ (แทนที่userด้วยชื่อผู้ใช้ของคุณ):
#!/bin/sh
case $1/$2 in
    pre/suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. ตีCTRL+ O, ENTERและCTRL+ X;

  2. วิ่งsudo chmod o+x /lib/systemd/system-sleep/disable_sudo_user;


หากต้องการเปิดใช้งานสิ่งนี้เช่นกันสำหรับการจำศีล / ไฮบริดสลีปให้ใช้สคริปต์นี้แทน:

#!/bin/sh
case $1 in
    pre)
        su user -c 'sudo -K'
        ;;
esac

Ubuntu รุ่นก่อนหน้า (เริ่มต้น)

/etc/pm/sleep.d/ซึ่งสามารถทำได้ในรุ่นก่อนหน้านี้อูบุนตูโดยการวางสคริปต์ใน

  1. เรียกใช้sudo nano /etc/pm/sleep.d/disable_sudo_user(แทนที่userด้วยชื่อผู้ใช้ของคุณเพื่อความสะดวก);
  2. วางในสคริปต์ต่อไปนี้ (แทนที่userด้วยชื่อผู้ใช้ของคุณ):
#!/bin/sh
case $1 in
    suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. ตีCTRL+ O, ENTERและCTRL+ X;

  2. วิ่งsudo chmod o+x /etc/pm/sleep.d/disable_sudo_user;


หากต้องการเปิดใช้งานสิ่งนี้ด้วยการไฮเบอร์เนตให้ใช้สคริปต์นี้แทน:

#!/bin/sh
case $1 in
    suspend|hybernate)
        su user -c 'sudo -K'
        ;;
esac

2
sudo -u user sudo -kมันจะได้รับสนุกสนานถ้าคุณใช้ : D
muru

@muru คิดเหมือนกัน แต่ด้วยเหตุผลบางอย่างมันดูไร้สาระ: D
kos

ขออภัยยังไม่ได้เขียนรหัสเปลือกใด ๆ ในขณะนี้สิ่งที่จะpre/*)ทำอย่างไร :)

@ParanoidPanda หายไปดูการอัปเดต ดูที่นี่ (คำอธิบายย่อหน้าที่สอง): systemd-suspend.serviceเรียกใช้สคริปต์ในการ/lib/systemd/system-sleep/ผ่านสองอาร์กิวเมนต์ $1มันเป็นอย่างใดอย่างหนึ่งpreสำหรับการจัดกิจกรรมก่อนนอนหลับหรือpostสำหรับเหตุการณ์ที่เกิดขึ้นหลังการนอนหลับและ$2มันเป็นอย่างใดอย่างหนึ่งsuspend, hybernateหรือhybrid-sleep; pre/*หมายถึงการจับรวมกันทั้งหมดpre/และใด ๆsuspend, hybernateหรือแต่เนื่องจากคุณถามอย่างชัดเจนสำหรับการระงับฉันเปลี่ยนไปhybrid-sleep pre/suspend
kos

1
น่าสังเกตว่าคุณสามารถทำได้ในอูบุนตูที่เก่ากว่าเช่นกันมันเป็นเพียงกลไกที่แตกต่างนั่นคือการใช้/etc/pm/sleep.dสคริปต์
ฮอบส์

3

เฉพาะในกรณีที่คุณเป็นคนหวาดระแวง! คุณสามารถใช้ตัวเลือกในการ-Ksudo

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause sudo to ignore the user's cached credentials.  
       As a result, sudo will prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

ตัวอย่างเช่น,

sudo -K <command>

หรือคุณอาจทิ้งคอมพิวเตอร์ไว้ในกล่องโลหะที่มีหุ่นยนต์คอยป้องกัน :)


อืม ... ไม่ตรงตามที่ข้าต้องการไม่มีทางทำสิ่งนี้ให้เป็นอัตโนมัติหรือไม่? เพราะสิ่งนี้ชี้ให้เห็นว่าฉันรู้แน่นอนว่าฉันกำลังจะหยุดทำงานถ้าคำสั่งทำงานด้วยsudoและฉันต้องไปที่ไหนสักแห่งดังนั้นฉันจึงหยุดเครื่องจักรจากนั้นเมื่อฉันกลับมาและเลิกเครื่องฉันจะต้องรอ สำหรับคำสั่งหรือเวลาที่จะเสร็จก่อนที่ฉันจะขอรหัสผ่านให้ฉันในครั้งต่อไปอีกครั้ง มันจะมีประโยชน์มากขึ้นด้วยเหตุผลหลายประการ (รวมถึงความจริงที่ว่าเมื่อฉันใช้งานกับ GUI บน runlevel ที่แตกต่างกันจะไม่ขอรหัสผ่านหลังจากหยุดชั่วคราว) เพื่อให้เป็นอัตโนมัติ

นอกจากนี้ผมคิดว่าคุณหมายถึงและไม่ได้-K -k

มันอาจมีประโยชน์มากกว่านี้อยู่ดี

1

อีกวิธีหนึ่ง

พิมพ์ 'sudo visudo'

ไปที่บรรทัดที่ระบุว่า: 'ค่าเริ่มต้น env_reset'

และเปลี่ยนเป็น:

'ค่าเริ่มต้น env_reset, timestamp_timeout = 0

จากนั้นบันทึกไฟล์

เมื่อตั้งค่าการหมดเวลาเป็น 0 ระบบจะแจ้งให้คุณใส่รหัสผ่านทุกครั้ง


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