จะเตือนอย่างไรถ้าเทอร์มินัลมีสิทธิ์ sudo และแสดงเวลาที่เหลือ


10

วิธีการดูใน terminal ที่คุณมีสิทธิ์ sudo? (เพื่อให้รู้ว่าฉันมีสิทธิ์เหล่านี้ฉันสามารถพิมพ์ได้sudo -k) มันจะเป็นการดีกว่าถ้าไม่เพิ่มข้อมูลมากเกินไปในเทอร์มินัลเช่นการแจ้งเตือนที่เรียบง่ายและเล็ก ๆ น้อย ๆ !

เวลาที่เหลืออยู่นั้นเป็นไปไม่ได้ใช่ไหม?

นอกจากนี้วิธีดูเวลาที่ฉันยังมีอยู่กับสิทธิ์เหล่านั้นบนเทอร์มินัลเฉพาะนั้น (ดังนั้นฉันสามารถปล่อยให้มันจบลงแทนที่จะพิมพ์sudo -k) ฉันคิดว่าเวลาที่เหลือจะปรากฏขึ้นทุกครั้งที่ฉันกดปุ่ม Enter

แก้ไข: ฉันวิจัยเพิ่มเติมและพบว่า/var/lib/sudo/$USER/$nPts(ที่ $ nPts เป็นเทอร์มินัลปัจจุบัน pts ณps -p $$) มีการอัพเดตเวลาทุกครั้งที่มีการออกคำสั่ง sudo และสามารถเข้าถึงได้ก็ต่อเมื่อคุณใช้คำสั่ง sudo ดังนั้นเวลาที่เหลือจะเป็น กำหนดค่าหนึ่ง ...

ป.ล. : อีกวิธีหนึ่งคือฉันพยายามalias sudo='sudo -k'แต่ฉันไม่ชอบที่จะพิมพ์รหัสผ่านสำหรับทุกคำสั่ง ... และเช่นนี้alias sudos='sudo -k'(หรือalias ssudo='sudo -k'ดีถ้าคุณพิมพ์บรรทัดยาวเพียงกด Home และพิมพ์ 's) ถ้าคุณ เพียง sudosแต่ต้องการที่จะออกคำสั่งอย่างใดอย่างหนึ่งโดยการพิมพ์ แต่ฉันก็ยังพลาดที่จะรู้ว่าเมื่อฉันมีสิทธิ์ sudo ปกติที่จะรู้ว่าฉันต้องทำ ...


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

คุณสามารถพูดในสิ่งที่จะชี้แจง? โพสต์ครั้งแรกของฉันที่ไม่มีการแก้ไขเป็นครั้งที่ 3 ที่ใหญ่กว่าและผมล้างมันมากที่จะทำให้มันรัดกุมมากขึ้น :)
ราศีกุมภ์พลังงาน

ฉันคิดว่ามันสายไปแล้ว - ฉันอ่านมันอีกครั้งและมันก็สมเหตุสมผลดีกว่า
DaimyoKirby

คำตอบ:


5

[ฉันยังอยากรู้ว่ามีคำตอบที่ดีกว่านี้หรือไม่]

ฉันพบวิธีที่ใช้งานได้และพรอมต์จะถูกเก็บไว้ในบรรทัดเดียว:

ในตอนท้ายของการ~/.bashrcเพิ่มของคุณนี้:

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

แก้ไข: ฉันพบว่าsudo -n uptimeจะอัปเดตหมดเวลา sudo ดังนั้นทุกครั้งที่คุณกดปุ่ม Enter เวลา sudo นั้นจะได้รับการอัปเดต ... ซึ่งจะทำให้รู้ว่าเวลาที่เหลืออยู่นั้นไร้ประโยชน์เพราะจะเป็นค่าที่กำหนดไว้เสมอ .

และเพื่อค้นหาการจัดรูปแบบสีที่ดีที่สุดสำหรับคุณคุณสามารถใช้ScriptEchoColorกับ--escapedcharsตัวเลือกดังนี้:

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

เพียงแค่หยุดการลบกระพริบ\E[5mเหมือนใน\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

เทอร์มินัลของคุณไม่ "มีสิทธิ์ sudo" เว้นแต่คุณจะทำอะไรที่โง่เหมือนไม่ทำเช่นsudo bash นี้!

สิ่งที่คุณต้องทำเพื่อ "มีสิทธิ์ sudo ปกติ" คือการละเว้นจากการพิมพ์sudoต่อหน้าคำสั่ง

/usr/bin/idเป็นวิธีที่ดีในการดูว่าsudoทำอะไร ตัวอย่างเช่น:

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

sudoหน้าคนพูดว่า "นโยบาย sudoers เก็บข้อมูลประจำตัวเป็นเวลา 15 นาทีเว้นแต่แทนที่ใน sudoers (5)" สิ่งนี้หมายความว่าโดยค่าเริ่มต้นหากคุณออกsudoคำสั่ง (และป้อนรหัสผ่านของคุณ) จากนั้นรอ 14.9 นาทีก่อนที่จะออกsudoคำสั่งที่สองคุณจะไม่ต้องป้อนรหัสผ่านอีกครั้ง หากคุณรอ 15.1 นาทีคุณจะต้องป้อนรหัสผ่านอีกครั้ง sudo -kเพียงหมดอายุ 15 นาทีจับเวลาทันที เพียงใช้ฉันสามารถดูคือถ้าคุณกำลังจะให้ผลผลิตขั้วปลดล็อคของคุณกับคนที่คุณไม่ได้มีความไว้วางใจกับsudo -kUID 0


คุณพูดว่า "อย่าพิมพ์sudoหน้าคำสั่ง" แต่ถ้าผมต้องการตรวจสอบกฎของไฟร์วอลล์ของฉันกับมันเคยชินทำงานจนกว่าฉันประเภทiptables -L sudo iptables -Lประเด็นของฉันคือเราจะหลีกเลี่ยงการใช้ sudo ได้อย่างไร
กุมภ์กำลัง

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

"หลีกเลี่ยงการใช้ sudo" หรือไม่ Sudo เป็นวิธีการกระจายรหัสผ่านรากทำให้ไบนารี setuid /bin/suหรือใช้ คุณแน่ใจหรือไม่ว่าต้องการยกเลิก "เข้าถึงเครื่องของฉันจากระยะไกล ... " และฉันก็คิดว่ารับช่วง/proc/YourPID/fd/{0,1,2}ต่อ ไม่ได้หากเครื่องของคุณเข้าถึงจากระยะไกล Bad Guy มีวิธีที่ง่ายกว่าในการ UID 0 คุณควรเพิ่ม Linux-foo ของคุณก่อนที่จะมีข้อกังวลในระดับนี้
waltinator

ขออภัยพูดจาโผงผางดูเหมือนคุณควรalias k=/usr/bin/sudo -kเปลี่ยนsudoคำสั่งที่มีนามแฝงหรือทุบตีฟังก์ชั่นที่ล้อมการเรียกร้องให้/usr/bin/sudoมี/usr/bin/touch $HOME/tmp/$$/sudotimeและสุดท้ายเพิ่มสิ่งที่พิมพ์ $ {{เวลา (ตอนนี้) - เวลา ($ HOME / tmp / $ $ / sudotime))) ใน Bash prompt ของคุณ ไม่ใช่เรื่องไม่สำคัญ แต่ถ้ามันจะทำให้คุณรู้สึกดีไปเลย
waltinator

ที่น่าสนใจฉันจะบันทึกเมื่อมีความพยายามเกิดขึ้นหรือดีกว่านั้นปิดการสื่อสารเครือข่ายใด ๆ เท่! แต่แม้ว่าฉันจะซ่อนsudoด้วยนามแฝงของคำที่สุ่มพวกเขายังคงสามารถพิมพ์/usr/bin/sudoแทนsudoและมันจะยังคงทำงานตามที่ sudo ทำ :(. อย่างไรก็ตามฉันชอบความคิด .. ฉันสงสัยว่าฉันเปลี่ยนความจริง/usr/bin/sudoมันจะทำลายสิ่งอื่นที่ไม่ใช่ สคริปต์ทั้งหมดของฉันที่ใช้มัน .. แม้ว่าฉันจะทำเช่นนั้นพวกเขาสามารถทำได้โดยการอ่านสคริปต์เดาว่า sudo กลายเป็นอะไร ..
Aquarius Power
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.