Có một lệnh để liệt kê tất cả các tên nhóm Unix? [đóng cửa]


615

Tôi biết có /etc/grouptập tin liệt kê tất cả các nhóm người dùng.

Tôi muốn biết nếu có một lệnh đơn giản để liệt kê tất cả các tên nhóm người dùng mặc dù phân tích /etc/grouptệp thế giới có thể đọc được . Tôi sẵn sàng tạo một trang web quản trị viên liệt kê tên nhóm của tài khoản Linux.


6
Cho đến nay, anh đã thử stackoverflow.com/questions/14059916/ Cách
ott--

2
"Tôi sẵn sàng tạo một trang web liệt kê người dùng Linux" - bạn đang cố gắng giải quyết vấn đề gì? Điều này nghe có vẻ như một cái gì đó có thể gây ra một số vấn đề bảo mật (hiển thị danh sách người dùng, lộ thông tin đăng nhập).

Tôi đã cố gắng đưa ra một ví dụ đơn giản. Tôi muốn mở một "trang web hệ thống quản trị viên để liệt kê tên tài khoản Linux hiện tại". Trong Linux, tôi có thể tìm thấy các lệnh để thêm người dùng, xóa người dùng, thay đổi người dùng, tìm các nhóm của một người dùng nhất định nhưng không tìm thấy lệnh để tìm kiếm người dùng theo đoạn tên. Tôi nghĩ rằng câu hỏi không phải là không liên quan. Tất cả những gì tôi có thể làm để ghi nhớ một tài khoản nhóm Linux là thực hiện tra cứu trên tập tin / etc / nhóm
cavila

Câu trả lời:


871

Để liệt kê tất cả các nhóm cục bộ có người dùng được gán cho họ, hãy sử dụng lệnh này:

cut -d: -f1 /etc/group | sort

Để biết thêm thông tin-> Nhóm Unix , Lệnh cắt , lệnh sắp xếp


3
Có MichaelIT đúng, lệnh nhóm không liệt kê tất cả các nhóm. Tôi đã hỏi điều này bởi vì không chắc chắn nếu có một lệnh đơn giản như các nhóm liệt kê tất cả các tên nhóm hoặc thậm chí là một nhóm với nó như các nhóm [-a | --all] để liệt kê tất cả các nhóm hệ thống mà không thực hiện quét tệp.
cavila

1
ok vì vậy bây giờ câu trả lời là KHÔNG. Cần sử dụng chỉnh sửa văn bản để lọc tập tin nhóm.
cavila

3
"Cắt -d: -f1" là gì?
zed

5
@ned cutlà một lệnh khác trích xuất cột cụ thể từ đầu vào. Ở đây tôi đang trích xuất trường 1 nơi các trường được phân định bởi:
Arpit

267

Nếu bạn muốn tất cả các nhóm được biết đến với hệ thống, tôi khuyên bạn nên sử dụng getent groupthay vì phân tích cú pháp /etc/group:

getent group

Lý do là trên các hệ thống nối mạng, các nhóm không chỉ có thể đọc từ /etc/grouptệp mà còn có được thông qua LDAP hoặc Trang vàng (danh sách các nhóm đã biết đến từ tệp nhóm cục bộ cộng với các nhóm nhận được qua LDAP hoặc YP trong những trường hợp này).

Nếu bạn chỉ muốn tên nhóm bạn có thể sử dụng:

getent group | cut -d: -f1

7
Đối với một số người sử dụng, một danh sách tên nhóm được sắp xếp có thể thích hợp hơn:getent group | cut -d: -f1 | sort
user1364368

2
Nếu dòng được đánh số là mong muốn, làm getent group | cut -d: -f1 | sort | cat -n.
MLC

điểm tuyệt vời cho các hệ thống nối mạng như LDAP!
Maziyar

50

Trên Linux, macOS và Unix để hiển thị các nhóm mà bạn thuộc về, sử dụng:

id -Gn

tương đương với groupstiện ích đã bị lỗi thời trên Unix (theo hướng dẫn sử dụng Unix ).

Trên macOS và Unix, lệnh id -pđược đề xuất cho tương tác bình thường.

Giải thích về các tham số:

-G, --groups- in tất cả ID nhóm

-n, --name- in tên thay vì số, cho-ugG

-p - Làm cho đầu ra con người có thể đọc được.


10
id -Gn someusernametrả về danh sách các nhóm cho người dùng được chỉ định.
nghiệt ngã

6
id -Gnz | xargs -0 -I% echo %sẽ liệt kê từng nhóm trên một dòng riêng biệt. Điều này rất hữu ích nếu tên nhóm có khoảng trắng trong đó.
Đánh dấu Lakata

1
Làm thế nào là groupslỗi thời? Nguồn nào? Tôi đã tìm kiếm "unix nhóm lệnh lỗi thời" nhưng không tìm thấy gì.
Franklin Yu

1
@FranklinYu Nó nằm trong trang hướng dẫn sử dụng BSD chogroups .
kenorb

3
Doest trả lời câu hỏi ban đầu liên quan đến các nhóm bên ngoài người dùng hiện tại.
Nay
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.