ใช้รหัสผ่านหนึ่งรหัสสำหรับการดูแลระบบและอีกอันสำหรับการเข้าสู่ระบบ


10

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


1
ทำไมไม่สร้างบัญชีเพียง 2 บัญชีบัญชีเดียวสำหรับการใช้งานปกติและอีกบัญชีได้รับอนุญาตให้ใช้ sudo
Luis Alvarado

ไม่ฉันต้องการมันในบัญชีเดียวเท่านั้น
Varun Sridharan

ทำไมคุณต้องใช้สิ่งนี้เพื่อเป็นหนึ่งบัญชี? คุณสามารถสร้างบัญชีแยกต่างหากด้วยการเข้าถึง sudo แต่ไม่มีโฟลเดอร์หลักแยกต่างหากจากนั้นเพิ่มผู้ใช้นี้ในกลุ่มเดียวกับผู้ใช้ปกติและตั้งให้ใช้โฟลเดอร์หลักเดียวกันกับsudo usermod -d /path/to/new/home
Warren Hill

@SVarun ฉันอัปเดตคำตอบของฉันด้วยขั้นตอนที่เหมาะกับฉันตั้งแต่คุณแสดงความคิดเห็นครั้งล่าสุด คุณช่วยตรวจสอบและแจ้งให้เราทราบหากมันเหมาะกับคุณหรือไม่
Aaron D

คำตอบ:


16

มีวิธีการทำเช่นนี้โดยการแทนที่การตั้งค่า PAM (Pluggable Authentication Module) สำหรับบริการ sudo ทำสิ่งนี้ด้วยความเสี่ยงอย่างยิ่งต่อเครื่องของคุณ - อย่าเพิ่งคัดลอกและวางนอกเสียจากว่าคุณจะเข้าใจสิ่งที่คำสั่งทำและเปิดเทอร์มินัลรูทไว้เสมอ - ทดสอบการทดสอบ! - ก่อนออกจากระบบในกรณีที่คุณต้องการย้อนกลับและแก้ไขบางสิ่ง

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

หากคุณตั้งใจที่จะดำเนินการต่อคุณจะต้องติดตั้งโมดูล PAM ใหม่ pam_pwdfile ใช้ไฟล์ประเภทแบบเก่า / etc / passwd สำหรับการตรวจสอบความถูกต้องซึ่งเหมาะสำหรับการใช้รหัสผ่านที่แตกต่างกันสำหรับบริการต่างๆ มันไม่มีการรับรู้บัญชี - คุณสามารถสร้างคู่ชื่อผู้ใช้ / รหัสผ่านสำหรับผู้ใช้ที่ไม่มีอยู่ในระบบ เนื่องจากเราจะใช้สำหรับ sudo มันไม่สำคัญเนื่องจากเราจะปล่อยให้ sudo ตรวจสอบบัญชีที่มีอยู่ตามปกติ

sudo apt-get install libpam-pwdfile

ฉันยังแนะนำให้ใช้โปรแกรมแก้ไขไฟล์ htpasswd ที่มีประโยชน์ Benjamin Schweizer ได้สร้างตัวแก้ไขที่สะดวกใน python ซึ่งทำงานได้ดี คว้าได้จากhttp://benjamin-schweizer.de/htpasswd_editor.htmlและติดตั้งการพึ่งพา:

sudo apt-get install python-newt

สร้างรูปแบบไฟล์ htpasswd ใช้เครื่องมือ sudo python htpasswd_editor sudo.passwd- ใส่ชื่อผู้ใช้และรหัสผ่านโดยใช้ชื่อผู้ใช้เดียวกันกับที่คุณจะใช้สำหรับ sudo - หนึ่งรายการสำหรับผู้ใช้แต่ละรายที่จะใช้งาน คัดลอกไปยังที่ที่ปลอดภัย (เมื่อทดสอบสิ่งนี้ฉันใส่ไว้ใน /etc/sudo.passwd) และทำให้ผู้ใช้ทั่วไปไม่สามารถอ่านได้: chmod 660 /etc/sudo.passwdในฐานะรูท

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

สุดท้ายแก้ไข/etc/pam.d/sudoไฟล์ เพิ่มบรรทัดต่อไปนี้เหนือบรรทัดอื่น@include ...:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

เห็นได้ชัดว่าการแทนที่อาร์กิวเมนต์สุดท้ายด้วยเส้นทางไปยังไฟล์ htpasswd ที่คุณสร้างขึ้น ใส่ความคิดเห็นในบรรทัดถัดไป: #@include common-authเพื่อให้แน่ใจว่าใช้วิธีการรับรองความถูกต้องใหม่

คำเตือน - คุณจะต้องแก้ไข/etc/pam.d/sudoไฟล์จากเทอร์มินัลรูท อย่าปิดสิ่งนี้โดยไม่ทดสอบ! หากคุณทำเช่นนั้นคุณอาจไม่สามารถลงชื่อเข้าใช้ (ถ้าคุณทำบางสิ่งบางอย่างขาดหายไป) และจะต้องบูตจากดิสก์กู้คืนเพื่อซ่อมแซมระบบของคุณ sudoการทดสอบก่อนที่จะออกจากระบบโดยการเปิดอาคารผู้โดยสารแห่งใหม่และลองใช้ คุณควรพบว่ามันจะไม่ทำงานกับรหัสผ่านการเข้าสู่ระบบปกติของคุณอีกต่อไป แต่ต้องการรหัสผ่านใหม่ที่คุณใช้เมื่อคุณสร้างไฟล์ passwd หากต้องการอัปเดตไฟล์ให้ใช้เครื่องมือที่มีประโยชน์อีกครั้ง


ฉันจำเป็นต้องเรียกใช้ใน Ubuntu จะมีวิธีอื่น ๆ
Varun Sridharan

ฉันอัพเดตคำตอบ - ฉันได้ทดสอบวิธีนี้แล้วและทำสิ่งที่คุณต้องการหากฉันเข้าใจคำถามของคุณถูกต้อง โปรดลอง
Aaron D

1
+50 เงินรางวัล @AaronD คำตอบของคุณแก้ไขคำถามของฉัน ขอบคุณ !!!
Robbie Wxyz

ฉันดีใจที่คุณพบว่ามีประโยชน์!
แอรอน D

1

มีคำตอบที่ง่ายกว่าสำหรับคำถามดั้งเดิมและเป็นวิธีที่ฉันใช้:

  • สร้างผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบหนึ่งราย
  • สร้างผู้ใช้ผู้ดูแลระบบ

เข้าสู่ระบบในฐานะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเสมอและเมื่อใดก็ตามที่ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบต้องทำอะไร "adminy" เพียง:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

ใช่ไม่ใช่สิ่งที่คุณต้องการแต่เป็นสิ่งที่คุณต้องการจริงๆ

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