Kata sandi biasanya disimpan di /etc/shadow
, yang tidak dapat dibaca oleh pengguna. Namun, secara historis, mereka disimpan dalam file yang dapat dibaca dunia /etc/passwd
bersama dengan semua informasi akun. Untuk kompatibilitas mundur, jika ada hash kata sandi di kolom kedua di /etc/passwd
, didahulukan dari yang ada di /etc/shadow
.
Secara historis, kolom kedua kosong di /etc/passwd
berarti akun tersebut tidak memiliki kata sandi, yaitu siapa saja dapat masuk tanpa kata sandi (digunakan untuk akun tamu). Ini terkadang dinonaktifkan. Jika akun tanpa kata sandi dinonaktifkan, Anda dapat memasukkan hash kata sandi pilihan Anda. Anda dapat menggunakan crypt
berfungsi untuk menghasilkan hash kata sandi, misalnya perl -le 'print crypt("foo", "aa")'
untuk menyetel kata sandi ke foo
.
Dimungkinkan untuk mendapatkan akses root bahkan jika Anda hanya dapat menambahkan /etc/passwd
dan tidak menimpa isinya. Itu karena dimungkinkan untuk memiliki banyak entri untuk pengguna yang sama, asalkan mereka memiliki nama yang berbeda — pengguna diidentifikasi dengan ID mereka, bukan dengan nama mereka, dan fitur yang menentukan akun root bukanlah namanya tetapi fakta bahwa itu memiliki ID pengguna 0. Jadi, Anda dapat membuat akun root alternatif dengan menambahkan baris yang mendeklarasikan akun dengan nama lain, sandi pilihan Anda, dan ID pengguna 0.
Cukup ketik:
echo root::0:0:root:/root:/bin/bash > /etc/passwd
su
dan Anda adalah root.
(Menghapus x
berarti root tidak memerlukan kata sandi lagi, Anda dapat menggunakan sed
perintah alih-alih echo
namun ini cukup untuk mendapatkan root shell)
Anda dapat menggunakan metode non-destruktif ini:
# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE
# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd
# to switch to a root2
su root2
Password: mrcake