Jika Anda ingin meminta kata sandi root, dan bukan kata sandi pengguna, ada beberapa opsi yang bisa Anda masukkan /etc/sudoers
. rootpw
khususnya akan membuatnya meminta kata sandi root. Ada runaspw
dan targetpw
juga; lihat manual sudoers (5) untuk detailnya.
Selain itu, sudo melakukan otentikasi (seperti yang lainnya) melalui PAM. PAM mendukung konfigurasi per aplikasi. Konfigurasi Sudo ada di (setidaknya di sistem Debian saya) /etc/pam.d/sudo
, dan terlihat seperti ini:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Dengan kata lain, secara default, ini mengotentikasi seperti yang lainnya pada sistem. Anda dapat mengubah @include common-auth
baris itu, dan meminta PAM (dan dengan demikian sudo) menggunakan sumber kata sandi alternatif. Baris yang tidak dikomentari pada common-auth terlihat seperti (secara default, ini akan berbeda jika Anda menggunakan misalnya, LDAP):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Anda dapat menggunakan misalnya, pam_userdb.so
alih-alih pam_unix.so
, dan menyimpan kata sandi alternatif di basis data Berkeley DB.
contoh
Saya membuat direktori /var/local/sudopass
, pemilik / grup root:shadow
, mode 2750
. Di dalamnya, saya melanjutkan dan membuat file basis data kata sandi menggunakan db5.1_load
(yang merupakan versi Berkeley DB yang digunakan di Debian Wheezy):
# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
anthony
WMaEFvCFEFplI
^D
Hash yang dihasilkan dengan mkpasswd -m des
menggunakan kata sandi "kata sandi" Sangat sangat aman! (Sayangnya, pam_userdb tampaknya tidak mendukung sesuatu yang lebih baik daripada crypt(3)
hashing kuno ).
Sekarang, edit /etc/pam.d/sudo
dan hapus @include common-auth
baris, dan alih-alih letakkan ini di tempatnya:
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
Perhatikan bahwa pam_userdb menambahkan .db
ekstensi ke database yang diteruskan, jadi Anda harus .db
mematikannya.
Menurut dannysauer dalam komentar , Anda mungkin perlu melakukan pengeditan yang sama /etc/pam.d/sudo-i
juga.
Sekarang, untuk sudo, saya harus menggunakan password
kata sandi login asli saya:
anthony @ sudotest: ~ $ sudo -K
anthony @ sudotest: ~ $ sudo echo -e '\ nit worked'
[sudo] kata sandi untuk anthony: passwordRETURN
itu berhasil