Nếu bạn muốn hỏi mật khẩu gốc, trái ngược với mật khẩu của người dùng, có những tùy chọn mà bạn có thể đặt vào /etc/sudoers
. rootpw
đặc biệt sẽ làm cho nó yêu cầu mật khẩu root. Có runaspw
và targetpw
là tốt; xem trang chủ sudoers (5) để biết chi tiết.
Ngoài ra, sudo thực hiện xác thực (như mọi thứ khác) thông qua PAM. PAM hỗ trợ cấu hình trên mỗi ứng dụng. Cấu hình của Sudo nằm trong (ít nhất là trên hệ thống Debian của tôi) /etc/pam.d/sudo
và trông như thế này:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Nói cách khác, theo mặc định, nó xác thực như mọi thứ khác trên hệ thống. Bạn có thể thay đổi @include common-auth
dòng đó và để PAM (và do đó sudo) sử dụng nguồn mật khẩu thay thế. Các dòng không nhận xét trong chung-auth trông giống như (theo mặc định, điều này sẽ khác nếu bạn đang sử dụng, ví dụ: LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Bạn có thể sử dụng, ví dụ, pam_userdb.so
thay vì pam_unix.so
và lưu trữ mật khẩu thay thế của mình trong cơ sở dữ liệu Berkeley DB.
thí dụ
Tôi đã tạo thư mục /var/local/sudopass
, chủ sở hữu / nhóm root:shadow
, chế độ 2750
. Trong đó, tôi đã tiếp tục và tạo một tệp cơ sở dữ liệu mật khẩu bằng cách sử dụng db5.1_load
(đó là phiên bản của Berkeley DB được sử dụng trên Debian Wheezy):
# ô 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
anthony
WMaEFvCFEFplI
^D
Băm đó được tạo bằng mkpasswd -m des
, sử dụng mật khẩu "mật khẩu". Rất an toàn! (Thật không may, pam_userdb dường như không hỗ trợ bất cứ điều gì tốt hơn so với crypt(3)
băm cổ ).
Bây giờ, chỉnh sửa /etc/pam.d/sudo
và xóa @include common-auth
dòng, và thay vào đó đặt nó vào vị trí:
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
Lưu ý rằng pam_userdb thêm .db
tiện ích mở rộng vào cơ sở dữ liệu đã qua, vì vậy bạn phải .db
tắt.
Theo dannysauer trong một bình luận , bạn có thể cần phải thực hiện chỉnh sửa tương tự /etc/pam.d/sudo-i
.
Bây giờ, để sudo, tôi phải sử dụng password
thay vì mật khẩu đăng nhập thực sự của mình:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit đã làm việc'
[sudo] mật khẩu cho anthony: passwordRETURN
nó đã làm việc