Có os.getuid() "Trả về id người dùng hiện tại của hiện tại". Nhưng làm cách nào để tìm ra id của người dùng đã cho?bằng Python và linux cách nhận id của người dùng được cung cấp
20
A
Trả lời
23
Bạn có thể sử dụng pwd.getpwnam()
:
In [5]: pwd.getpwnam('aix').pw_uid
Out[5]: 1004
0
Bạn chỉ có thể phân tích /etc/passwd
, nó được lưu trữ ở đó.
5
pwd
:
import pwd
for p in pwd.getpwall():
print p
pwd.struct_passwd(pw_name='_calendar', pw_passwd='*', pw_uid=93, pw_gid=93, pw_gecos='Calendar', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_teamsserver', pw_passwd='*', pw_uid=94, pw_gid=94, pw_gecos='TeamsServer', pw_dir='/var/teamsserver', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_update_sharing', pw_passwd='*', pw_uid=95, pw_gid=-2, pw_gecos='Update Sharing', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_installer', pw_passwd='*', pw_uid=96, pw_gid=-2, pw_gecos='Installer', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_atsserver', pw_passwd='*', pw_uid=97, pw_gid=97, pw_gecos='ATS Server', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_ftp', pw_passwd='*', pw_uid=98, pw_gid=-2, pw_gecos='FTP Daemon', pw_dir='/var/empty', pw_shell='/usr/bin/false')
15
Giả sử những gì bạn muốn là chuỗi tên gắn liền với userid cho chương trình của bạn, hãy thử:
import os
import pwd
pwd.getpwuid(os.getuid()).pw_name
Sử dụng os.geteuid() để có được hiệu quả thay vì uid , nếu sự khác biệt đó quan trọng với bạn.
Sử dụng pw_gecos thay vì pw_name để lấy "tên thật" nếu được điền vào hệ thống của bạn.
Các vấn đề liên quan
- 1. Python: Cách nhận id nhóm của một tên người dùng (như id -Gn)
- 2. Instagram API cách nhận ID người dùng?
- 3. cung cấp cho người dùng openid thông tin bổ sung
- 4. API Google+ - nhận ID người dùng bằng e-mail?
- 5. Phát hiện đăng xuất/tắt máy của người dùng bằng Python/GTK trong Linux - SIGTERM/HUP không nhận được
- 6. Symfony2 nhận id đăng nhập của người dùng
- 7. Nhận id người dùng đã đăng nhập
- 8. cách nhận id email của người dùng Facebook bằng cách sử dụng javascript sdk
- 9. Cách nhận id người dùng hiện đang đăng nhập của người dùng ở Django?
- 10. cách nhận id nhà cung cấp và id sản phẩm của thiết bị cắm USB trên các cửa sổ
- 11. Cách đăng nhập bằng Tên người dùng hoặc id email
- 12. Nhà cung cấp OpenID cung cấp thông tin cá nhân nào cho người tiêu dùng?
- 13. Làm cách nào để nhận id trình duyệt của người dùng bằng JSF?
- 14. TypeMismatchException ID được cung cấp có kiểu sai
- 15. Nhận ID người dùng Facebook theo địa chỉ email
- 16. Nhận apache linux người dùng từ php
- 17. Twitter API: Cách nhận ID người dùng, người yêu thích tweet cụ thể?
- 18. Xác thực người dùng API bằng cách sử dụng nhà cung cấp Oauth bên thứ ba
- 19. Cách nhận ID nhà cung cấp của thiết bị hỗ trợ Android thông qua adb?
- 20. Nhận gọi ID người dùng (chỉ) từ MySQL
- 21. Không có người dùng nào cung cấp cho người dùng "Symfony \ Component \ Security \ Core \ User \ User"
- 22. Không gian in hoặc tab C++ được cung cấp số nguyên đầu vào của người dùng
- 23. Cách tạo người dùng Linux bằng C/C++?
- 24. Cách nhận ID người dùng hiện tại Prestashop?
- 25. Lưu đối tượng mới với Hibernate bằng cách sử dụng ID được cung cấp
- 26. asp.net MVC nhận hiện tại người dùng đăng nhập id
- 27. AZURE ACS - Windows Live ID - Làm cách nào để nhận email và tên của người dùng được xác thực?
- 28. cung cấp tên người dùng và mật khẩu chính xác, nhận được ORA-01017: tên người dùng/mật khẩu không hợp lệ; đăng nhập bị từ chối
- 29. Cách tiếp cận của tôi là cung cấp quyền truy cập cho người dùng chính xác?
- 30. Cách nhận đối tượng SPUser bằng cách sử dụng id người dùng (domain_name \ userid)
Nó có thể được lưu trữ ở đó hoặc trong NIS hoặc trong LDAP hoặc bất kỳ nguồn nào khác có mô-đun nsswitch. Đó là lý do tại sao chúng tôi có các API bắt đầu bằng 'getpw' - do đó bạn không có lỗi vì bạn đã phân tích cú pháp'/etc/passwd' bằng tay trên một hệ thống sử dụng (NIS) để lưu trữ thông tin người dùng. – mkj
mkj: Cảm ơn! Không biết về NIS và LDAP. – vines