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

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

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

Index Attribute ความหมาย
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='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 "", line 1, in 
KeyError: "getpwnam(): name not found: hello"