Để truy cập cơ sở dữ liệu mật khẩu shadow (shadow password database) của UNIX, ta nên dùng module spwd. Cần đủ đặc quyền (privileges) để truy cập file này. Các entry của shadow password database là đối tượng kiểu tuple.
Để dùng module spwd, nên nhập bằng:
import spwd
Các thuộc tính của shadow password database:
| Chỉ mục | Thuộc tính & Mô tả |
|---|---|
| 0 | sp_nam – Tên đăng nhập (username) |
| 1 | sp_pwd – Mật khẩu đã mã hóa |
| 2 | sp_lstchg – Ngày thay đổi cuối cùng |
| 3 | sp_min – Số ngày tối thiểu giữa các lần đổi mật khẩu |
| 4 | sp_max – Số ngày tối đa giữa các lần đổi mật khẩu |
| 5 | sp_warn – Cảnh báo số ngày trước khi hết hạn mật khẩu |
| 6 | sp_inact – Số ngày sau khi mật khẩu hết hạn cho đến khi khóa tài khoản |
| 7 | sp_expire – Số ngày từ 01/01/1997 cho đến khi tài khoản bị vô hiệu |
| 8 | sp_flag – Dành riêng (reserved) |
Một số phương thức của module này:
Phương thức spwd.getspnam(name)
Trả về entry shadow password database cho tên người dùng cho trước.
Phương thức spwd.getspall()
Trả về tất cả các entry shadow password database có sẵn.
Mã ví dụ
import spwd
print("Root: " + str(spwd.getspnam('root')) + '\n') # Chi tiết mật khẩu cho root
for entry in spwd.getspall():
print("Tên: " + entry[0] + "\t\tMật khẩu: " + entry.sp_pwdp)
Kết quả
(Để có đầu ra mong muốn, nên chạy script ở chế độ sudo)
$ sudo python3 example.py Root: spwd.struct_spwd(sp_namp='root', sp_pwdp='!', sp_lstchg=17778, sp_min=0, sp_max=99999, sp_warn=7, sp_inact=-1, sp_expire=-1, sp_flag=-1) ………… ………… ………… Tên: geoclue Mật khẩu: * Tên: gnome-initial-setup Mật khẩu: * Tên: gdm Mật khẩu: * Tên: unix_user Mật khẩu: $6$47n9s0Ep$znWkgNtywebHGKq2o6kZKhGOM8ryp8z4/6P6PUE1m.NQ5Erg9aWncNUAGbuNLFNWUO9M9xzKLxRpFGB5md/nu1 Tên: mongodb Mật khẩu: !