Làm cách nào để liệt kê các nhóm mà người dùng UNIX là thành viên?


79

Với pts m groupnametôi có thể liệt kê những người dùng trong một nhóm. Làm cách nào tôi có thể làm ngược lại - nghĩa là liệt kê tất cả các nhóm mà người dùng là thành viên?

(Tôi cần điều này để tìm tên của một nhóm mà tôi biết một người dùng là thành viên của nhóm, nhưng tôi không biết tên nhóm ...)

Làm rõ:
Câu hỏi này rất phức tạp bởi thực tế tôi không phải là quản trị viên hệ thống và tôi không có quyền root (cách xa nó). Thay vào đó, tôi là một phần của một nhóm "người điều hành" điều hành một phần nhỏ của hệ thống - cụ thể là, ngành vật lý của hội sinh viên tại hệ thống CNTT trung tâm của trường đại học của tôi.

Trong chi nhánh của chúng tôi, chúng tôi có một nhóm các nhóm truy cập khác nhau cho những người chịu trách nhiệm về mọi thứ. Trong trường hợp này, một trong hai người chịu trách nhiệm cho một cái gì đó (không quan trọng là gì) đã được thay thế và tôi đang tìm cách kiểm tra người dùng khác để tìm ra quyền truy cập nào tôi nên cung cấp cho người thay thế.

Bây giờ tôi đã có thể giải quyết vấn đề ngay lập tức (anh chàng mới không thể truy cập thư mục) bằng cách kiểm tra thư mục để xem ai có quyền truy cập và chọn nhóm từ danh sách. Tuy nhiên, có thể có nhiều đặc quyền hơn mà người dùng này nên có mà tôi không biết, vì vậy câu hỏi vẫn phù hợp với tôi, mặc dù không quá gay gắt.

Câu trả lời:


105

Bạn cũng có thể sử dụng groupslệnh:

[root @ ftp ~] # nhóm gốc
root: root bin daemon sys adm đĩa bánh

nếu thất bại thì cũng tốt rồi grep:

[root @ ftp ~] # grep root / etc / nhóm
gốc: x: 0: gốc
bin: x: 1: root, bin, daemon
daemon: x: 2: root, bin, daemon
sys: x: 3: root, bin, adm
adm: x: 4: root, adm, daemon
đĩa: x: 6: root
bánh xe: x: 10: root, quản trị viên

1
grep ^root: /etc/groupcó thể tốt hơn
Dennis Williamson

không, không phải vì nó chỉ liệt kê một trong các nhóm gốc là thành viên có thể với một chút awk rõ ràng hơn :) grep root / etc / group | awk -F: '{print $ 1}'
matthias krull

3
Kiểm tra / etc / nhóm nghe có vẻ hay, nhưng nếu hệ thống của bạn đang sử dụng một thư mục tập trung (NIS, LDAP, ActiveDirectory ,?), Bạn sẽ không tìm thấy danh sách đầy đủ các nhóm ở đó. Chỉ định nghĩa nhóm địa phương sẽ có trong tập tin đó.
Slartibartfast

Lệnh groups kczchỉ cung cấp cho tôi usr, mặc dù tôi biết rằng người dùng này là thành viên của một nhóm được gọi fkm. Điều gì còn thiếu?
Tomas Aschan

Không chắc chắn, pastebin /etc/group@Tomas của bạn .
John T

28
$ id [username]

" $: Command not found".
Tomas Aschan

8
Các $đại diện cho dấu nhắc lệnh. Bắt đầu gõ với id.
coneslayer

Vẫn không cho tôi nhiều:uid=[five digits](kcz) gid=30(usr)
Tomas Aschan

nó đang hiển thị uid = gid = Groups = vì vậy điều thứ ba tôi nhận được là danh sách các nhóm mà người dùng thuộc về.
MKJ

6

Tìm thấy nó - cách sau, nhưng tôi đã làm! =)

Cũng như

$>pts m [group name]

liệt kê tất cả các thành viên trong một nhóm

$>pts m [user name]

liệt kê tất cả các nhóm mà người dùng là thành viên của. Nó quá đơn giản: P


3
pts không phải là một lệnh tiêu chuẩn.
dùng2284570

1
@ user2284570: Có lẽ không. Nhưng nó đã được nêu rõ ràng trong câu hỏi (điều đầu tiên, trên thực tế, và với việc làm nổi bật cú pháp) rằng đó là ptscâu hỏi này quan tâm.
Tomas Aschan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.