หากคุณต้องการขอรหัสผ่านรูทซึ่งตรงข้ามกับรหัสผ่านของผู้ใช้มีตัวเลือกที่คุณสามารถใส่/etc/sudoers
ได้ rootpw
โดยเฉพาะจะทำให้ขอรหัสผ่านรูต มีrunaspw
และtargetpw
เช่นกัน; ดูรายละเอียด manudo sudoers (5)
นอกเหนือจากนั้น sudo ทำการพิสูจน์ตัวตน (เหมือนทุกอย่าง) ผ่าน PAM PAM รองรับการกำหนดค่าต่อแอปพลิเคชัน การกำหนดค่าของ Sudo อยู่ใน (อย่างน้อยในระบบ Debian ของฉัน) /etc/pam.d/sudo
และมีลักษณะดังนี้:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
กล่าวอีกนัยหนึ่งตามค่าเริ่มต้นจะตรวจสอบความถูกต้องเหมือนทุกอย่างในระบบ คุณสามารถเปลี่ยน@include common-auth
บรรทัดนั้นและมี PAM (และดังนั้น sudo) ใช้แหล่งรหัสผ่านอื่น บรรทัดที่ไม่แสดงความคิดเห็นในการตรวจสอบความถูกต้องจะมีลักษณะดังนี้ (โดยค่าเริ่มต้นสิ่งนี้จะแตกต่างกันหากคุณใช้เช่น LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
คุณสามารถใช้เช่นpam_userdb.so
แทนpam_unix.so
และเก็บรหัสผ่านสำรองของคุณในฐานข้อมูล Berkeley DB
ตัวอย่าง
ฉันสร้างไดเรกทอรี/var/local/sudopass
เจ้าของ / กลุ่มโหมดroot:shadow
2750
ข้างในฉันไปข้างหน้าและสร้างไฟล์ฐานข้อมูลรหัสผ่านโดยใช้db5.1_load
(ซึ่งเป็นเวอร์ชันของ Berkeley DB ที่ใช้ใน Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
แอนโทนี่
WMaEFvCFEFplI
^D
แฮชนั้นถูกสร้างขึ้นmkpasswd -m des
โดยใช้รหัสผ่าน "รหัสผ่าน" ความปลอดภัยสูงมาก! (น่าเสียดายที่ pam_userdb ดูเหมือนจะไม่สนับสนุนอะไรที่ดีไปกว่าการคร่ำครวญแบบโบราณcrypt(3)
)
ตอนนี้แก้ไข/etc/pam.d/sudo
และลบ@include common-auth
บรรทัดและวางไว้ในสถานที่:
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
โปรดทราบว่า pam_userdb เพิ่ม.db
ส่วนขยายไปยังฐานข้อมูลที่ส่งผ่านดังนั้นคุณต้อง.db
ปิด
ตามdannysauerในความคิดเห็นที่คุณอาจจำเป็นต้องทำการแก้ไขเดียวกันเพื่อให้/etc/pam.d/sudo-i
ได้เป็นอย่างดี
ตอนนี้สำหรับ sudo ฉันต้องใช้password
แทนรหัสผ่านการเข้าสู่ระบบจริงของฉัน:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit working'
[sudo] รหัสผ่านสำหรับ anthony: passwordRETURN
มันทำงานได้