Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเข้าถึงฐานข้อมูลรหัสผ่าน Unix/Linux (pwd)


โมดูล pwd ในไลบรารีมาตรฐานของ Python ให้การเข้าถึงฐานข้อมูลรหัสผ่านของบัญชีผู้ใช้ในระบบปฏิบัติการ Unix/Linux รายการในฐานข้อมูลรหัสผ่านนี้ถูกสร้างเป็นวัตถุที่มีลักษณะคล้ายทูเปิล โครงสร้างของ tuple เป็นไปตามโครงสร้าง passwd โครงสร้าง pwd.h ไฟล์ใน CPython API

ดัชนี แอตทริบิวต์ ความหมาย
0 pw_name ชื่อล็อกอิน
1 pw_passwd รหัสผ่านเข้ารหัสเสริม
2 pw_uid รหัสผู้ใช้ที่เป็นตัวเลข
3 pw_gid รหัสกลุ่มตัวเลข
4 pw_gecos ชื่อผู้ใช้หรือช่องแสดงความคิดเห็น
5 pw_dir โฮมไดเร็กทอรีของผู้ใช้
6 pw_shell ตัวแปลคำสั่งของผู้ใช้

โมดูล pwd กำหนดฟังก์ชันต่อไปนี้ -

>>> import pwd
>>> dir(pwd)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'getpwall', 'getpwnam', 'getpwuid', 'struct_passwd']

getpwnam() − ฟังก์ชันนี้จะคืนค่าบันทึกในฐานข้อมูลรหัสผ่านที่ตรงกับชื่อผู้ใช้ที่ระบุ

>>> pwd.getpwnam('root')
pwd.struct_passwd(pw_name s= 'root', pw_passwd = 'x', pw_uid = 0, pw_gid = 0, pw_gecos = 'root', pw_dir = '/root', pw_shell = '/bin/bash')

getpwuid() − ฟังก์ชันนี้ส่งคืนบันทึกในฐานข้อมูลรหัสผ่านที่สอดคล้องกับ UID ที่กำหนด

>>> pwd.getpwuid(0)
pwd.struct_passwd(pw_name = 'root', pw_passwd = 'x', pw_uid = 0, pw_gid = 0, pw_gecos = 'root', pw_dir = '/root', pw_shell = '/bin/bash')

getpwall() − ฟังก์ชันนี้จะคืนค่ารายการของทูเพิล ทูเพิลแต่ละตัวมีข้อมูลโครงสร้าง passwd ของผู้ใช้แต่ละคน รายการ uid และ gid ในโครงสร้างเป็นจำนวนเต็ม หากไม่พบรายการที่ตรงกับพารามิเตอร์ที่ส่งผ่าน ข้อยกเว้น KeyError จะเพิ่มขึ้น

>>> pwd.getpwnam('hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'getpwnam(): name not found: hello'