สามารถใช้ keyfile เป็นรหัสผ่านสำหรับ sudo ได้หรือไม่?


11

บริบท

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

ความคิดสำคัญอย่างหนึ่งที่อยู่ในใจของฉันคือมีโปรแกรมล็อคอยู่ อย่างไรก็ตามฉันต้องการใช้แฟลชไดรฟ์ (และใช้เพื่อ sudo) เพราะ (1) เร็วกว่า (2) ง่ายกว่าการป้อนรหัสผ่านและ (3) ฉันไม่เกี่ยวข้องกับผู้ที่เข้าถึงเนื้อหาของฉันหรือทำสิ่งชั่วช้าสามานย์ สิ่ง: แล็ปท็อปจะปรากฏต่อสาธารณะรอบ ๆ คนอื่นและทรัพย์สินทางปัญญาเพียงหนึ่งเดียวบนแล็ปท็อปของฉันคือโครงการแองกูลาร์ขั้นพื้นฐาน

นอกจากนี้ตัวฉันและคนอื่น ๆ อาจต้องการป้องกันการใช้ sudo ในทางที่ผิดในคอมพิวเตอร์ที่ไม่ได้ใช้สภาพแวดล้อม X หรือ Wayland งานปัจจุบันของฉันต้องการเว็บเบราว์เซอร์ที่ทันสมัย ​​แต่ถ้าฉันมีโอกาสที่จะไม่ใช้ X และใช้มัลติเพล็กเซอร์ฉันทำเช่นนั้น - แล็ปท็อปของฉันค่อนข้างเก่าและช้า

คำถาม

สิ่งที่ฉันต้องการจะทำคือใส่ keyfile ลงในแฟลชไดรฟ์และเพียงเสียบแฟลชไดรฟ์เมื่อฉันอยู่ที่แล็ปท็อปและนำมันออกไปเมื่อฉันก้าวออกไป

ดังนั้นคำถามสามข้อของฉันมาจากปัญหานี้:

  1. เป็นไปได้กับ sudo ตามนี้หรือไม่
  2. ถ้าไม่ฉันจะสามารถเขียนโปรแกรมที่ให้ฉันทำสิ่งนี้ได้หรือไม่?
  3. ถ้าใช่ภาษาใดที่ดีที่สุดในการเขียนโปรแกรมนี้

(4. [อาจเป็นคำถามที่ไม่เกี่ยวข้อง] แพคเกจนี้สามารถแยกออกจากกันได้หรือจะต้องแยกจาก sudo?)

บันทึก

ถ้ามันเกี่ยวข้องการตั้งค่าของฉันคือ Arch Linux ที่มี bspwm ไม่มีสภาพแวดล้อมบนเดสก์ท็อป งานส่วนใหญ่ของฉันคือการพัฒนาเว็บไซต์ใน urxvt / vim และตรวจสอบกับ Chrome


1
ไม่pam_usbตอบสนองความต้องการของคุณ
StrongBad

@ StrongBad โอ้ ... อ๋อ ดูเหมือนว่ามันจะไม่ทำแค่ sudo ทันทีและทำการเข้าสู่ระบบและ sudo ด้วยกัน แต่นั่นไม่สำคัญสำหรับฉัน ขอบคุณ!
Gage Sorrell

2
ตกลงเพื่อชี้แจงคุณต้องการเข้าสู่ระบบอย่างต่อเนื่องและเพียงแค่ป้องกันไม่ให้คนใช้ sudo ภายใต้บัญชีของคุณ
StrongBad

@StrongBad ถูกต้อง
Gage Sorrell

คุณอาจจะสามารถกำหนดค่าบางอย่างโดยใช้การrootpwตั้งค่าสถานะใน/etc/sudoersไฟล์และการตั้งค่าpam_usbสำหรับการเข้าสู่ระบบราก
RubberStamp

คำตอบ:


3

ฉันไม่แน่ใจว่าฉันเข้าใจว่าทำไมNOPASSWDตัวเลือกไม่ตรงกับความต้องการของคุณทั้งหมด แต่ถ้าคุณต้องการให้มีแฟลชไดรฟ์ฉันสามารถคิดถึงบางสิ่งที่เกือบจะทำในสิ่งที่คุณต้องการ

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

superuser ALL=(ALL) NOPASSWD:ALL

จากนั้นคุณสามารถปิดใช้งานการเข้าสู่ระบบด้วยรหัสผ่านและกำหนดค่าการรับรองความถูกต้อง SSH สำหรับผู้ใช้รายนั้นเช่นการเรียกใช้passwd -l superuserและเพิ่ม stanza ต่อไปนี้ในของคุณ/etc/ssh/sshd_config:

Match user superuser
PasswordAuthentication no

จากนั้นสร้างคู่คีย์ SSH สำหรับผู้ใช้นี้ เพิ่มพับลิกคีย์ไป/home/superuser/.ssh/authorized_keysและวางไพรเวตคีย์บนแฟลชไดรฟ์ของคุณ จากนั้นเมื่อคุณต้องการใช้superuserบัญชีให้เสียบแฟลชไดรฟ์และ ssh ลงในsuperuserบัญชีโดยใช้คีย์ส่วนตัวของคุณ และvoilà! ตอนนี้คุณไม่มีรหัสผ่านsudoสำหรับผู้ใช้ของคุณ แน่นอนคุณยังต้องออกจากเซสชันเชลล์เมื่อเสร็จแล้ว - การถอดแฟลชไดรฟ์จะไม่เพียงพอ แม้ว่าฉันเดาว่าคุณสามารถตั้งค่าprecommand hookเพื่อตรวจสอบคีย์ส่วนตัวและออกโดยอัตโนมัติหากไม่มีอยู่ (หรือหากไม่ถูกต้อง)


คำตอบง่าย ๆ ในการล้างว่าทำไมคุณอาจต้องการทำเช่นนี้ สำหรับเซิร์ฟเวอร์นี้ฉันพยายามที่จะกลับมาฉันมีเพียงคีย์รูท, ไม่มีรูทเอสเอสเอส, ฉันล็อกเข้าสู่ผู้ใช้ ec2, ซึ่ง sudo กำลังขอ pw ที่ฉันไม่มี ฉันสแกนคีย์รูทของฉันไปที่เซิร์ฟเวอร์ดังนั้นตอนนี้ฉันต้องการใช้คีย์นี้เพื่อรับ sudo acces จากนั้นฉันสามารถแก้ไขสิ่งต่าง ๆ ได้
Brian Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.