Trong Unix / Linux, làm thế nào để bạn tìm ra nhóm người dùng cụ thể đang ở trong dòng lệnh nào?
Trong Unix / Linux, làm thế nào để bạn tìm ra nhóm người dùng cụ thể đang ở trong dòng lệnh nào?
Câu trả lời:
Cái này cho thấy uid của người dùng cũng như tất cả các nhóm (có gids của họ) mà họ thuộc về
id userid
Trên Linux / OS X / Unix để hiển thị các nhóm mà bạn (hoặc người dùng được chỉ định tùy chọn) thuộc về, sử dụng:
id -Gn [user]
tương đương với groups [user]
tiện ích đã bị lỗi thời trên Unix.
Trên OS X / Unix, lệnh id -p [user]
đượ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.
hoặc chỉ học / etc / nhóm (ok điều này có thể không hoạt động nếu nó sử dụng pam với ldap)
Dưới đây là tập lệnh được tích hợp vào bảng điều khiển và tạo bảng điều khiển ở định dạng CSV.
sh collection.sh
#!/bin/bash
HOSTNAME=`hostname -s`
for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt
sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt
paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt
Đầu ra của tôi được lưu trữ trong các tập tin văn bản dưới đây.
cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
getent group <groupname>
.