यूनिक्स / लिनक्स में, आप कैसे पता लगाते हैं कि किसी दिए गए उपयोगकर्ता को कमांड लाइन के माध्यम से किस समूह में रखा गया है?
यूनिक्स / लिनक्स में, आप कैसे पता लगाते हैं कि किसी दिए गए उपयोगकर्ता को कमांड लाइन के माध्यम से किस समूह में रखा गया है?
जवाबों:
यह एक उपयोगकर्ता के यूआईडी के साथ-साथ सभी समूहों (उनके ग्रिड के साथ) को दर्शाता है जो वे संबंधित हैं
id userid
लिनक्स पर / OS X / Unix उन समूहों को प्रदर्शित करने के लिए जिनके आप (या वैकल्पिक रूप से निर्दिष्ट उपयोगकर्ता) संबंधित हैं, उपयोग करें:
id -Gn [user]
जो groups [user]
यूनिक्स पर आज्ञाकारी है उपयोगिता के बराबर है ।
ओएस एक्स / यूनिक्स पर, id -p [user]
सामान्य इंटरैक्टिव के लिए कमांड का सुझाव दिया गया है।
मापदंडों पर स्पष्टीकरण:
-G
,--groups
- सभी ग्रुप आईडी प्रिंट करें
-n
,--name
- एक नंबर के बजाय एक नाम प्रिंट करें, के लिए-ugG
-p
- आउटपुट को मानव-पठनीय बनाएं।
या सिर्फ अध्ययन / आदि / समूह (ठीक है यह काम नहीं करता है अगर यह ldap के साथ pam का उपयोग करता है)
नीचे वह स्क्रिप्ट है जिसे 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
मेरा आउटपुट पाठ फ़ाइलों के नीचे संग्रहीत है।
cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
getent group <groupname>
।