Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Truy cập Cơ sở dữ liệu Mật khẩu Shadow (Shadow Password Database) trong Python

Để 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ụcThuộc tính & Mô tả
0sp_nam – Tên đăng nhập (username)
1sp_pwd – Mật khẩu đã mã hóa
2sp_lstchg – Ngày thay đổi cuối cùng
3sp_min – Số ngày tối thiểu giữa các lần đổi mật khẩu
4sp_max – Số ngày tối đa giữa các lần đổi mật khẩu
5sp_warn – Cảnh báo số ngày trước khi hết hạn mật khẩu
6sp_inact – Số ngày sau khi mật khẩu hết hạn cho đến khi khóa tài khoản
7sp_expire – Số ngày từ 01/01/1997 cho đến khi tài khoản bị vô hiệu
8sp_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: !