(Ghi chú: groupsLệnh, mặc dù vẫn hữu ích, nhưng hầu hết được thay thế bởi lệnh id .)
Một người dùng có một nhóm chính được xác định theo truyền thống trong tệp
/etc/passwdtệp mà anh ta đăng nhập, nhưng ngày nay có thể có các nguồn khác. Anh ta cũng có thể là thành viên của các nhóm bổ sung, được gọi là nhóm thứ cấp hoặc nhóm bổ sung, theo truyền thống được chỉ định trong tệp /etc/groups, nhưng ngày nay cũng có thể đến từ hoặc được ngụ ý bởi các nguồn bổ sung (như NIS, LDAP, SAMBA, v.v.).
Các nhóm chính và bổ sung được xác định tại thời điểm đăng nhập và vẫn còn hiện hành . Tuy nhiên, người dùng có thể bất cứ lúc nào thay đổi nhóm chính hoạt động hiện tại của mình
bằng cách sử dụng newgrplệnh.
Quá trình đăng nhập đặt các nhóm chính và bổ sung. Để sau này, nó thường gọi các nhóm initc hàm libc
, nó biên dịch danh sách dữ liệu nhóm bổ sung và chuyển nó đến
hàm setgroups , thiết lập nó trong bối cảnh của quá trình.
Các nguồn thông tin cho initgroupslà:
được Thư viện GNU C và một số ứng dụng khác sử dụng để xác định các nguồn để lấy thông tin dịch vụ tên trong một loạt các danh mục và theo thứ tự nào. Mỗi loại thông tin được xác định bởi một tên cơ sở dữ liệu.
Các groupslệnh show các nhóm như hiện nay áp dụng cho người sử dụng của bạn, và danh sách sẽ bắt đầu với các nhóm chính hiện tại tiếp theo là nhóm bổ sung từ thời điểm đăng nhập. Mọi thay đổi về nguồn dữ liệu từ sau thời gian đăng nhập sẽ không được phản ánh trong danh sách được hiển thị.
Các groups usernamelệnh được hỏi Linux để tính toán các nhóm cho người dùng đó, mà nó sẽ làm sử dụng chủ yếu các tập tin /etc/password
và /etc/groupssau đó là nguồn bổ sung. Điều này sẽ phản ánh tình hình hiện tại của các tệp hệ thống và có thể không bằng các nhóm hiện tại vẫn còn hiệu lực kể từ thời điểm đăng nhập.
Các groups usernamelệnh có thể đưa ra một kết quả khác nhau khi nó không sử dụng tất cả các nguồn mà quá trình đăng nhập sử dụng để tính toán các nhóm bổ sung của bạn, mà là những gì có vẻ như đã xảy ra trong trường hợp của bạn. Những nguồn này có thể không truy cập được từ thông tin đăng nhập của bạn hoặc có thể không được tư vấn bởi lệnh.
Sử dụng id usernamelệnh có thể cho kết quả tốt hơn, mặc dù cũng không được đảm bảo hoàn thành như quy trình đăng nhập. Các idlệnh gần đây hơn, và được dự định là chính xác hơn, người già groupslệnh.
Mặc dù groupslệnh cho kết quả chính xác và chính xác, bạn đã chứng minh rõ rằng groups usernamelệnh không thể phụ thuộc vào việc thực hiện tương tự.
Nếu không kiểm tra mã nguồn của groupslệnh, tôi đoán rằng việc triển khai groups usernamelệnh trong các phân tích phân phối Linux của bạn /etc/groups, trong trường hợp của bạn không có gì, nhưng không sử dụng /etc/nsswitch.conf, từ đó xuất hiện tất cả các nhóm bổ sung của bạn. Do đó, chỉ được liệt kê tên nhóm chính ,
jacob.
Để biết thêm thông tin xem: