मैं सभी उपयोगकर्ताओं को रूट के साथ कैसे सूचीबद्ध करूं?


35

एक लिनक्स बॉक्स पर, मैं उन सभी उपयोगकर्ताओं को कैसे सूचीबद्ध करूं जिनके रूट प्रिवी कॉलेज हैं (और सामान्य रूप से सभी उपयोगकर्ताओं के साथ-साथ यदि उनके पास रूट है या नहीं)?


1
क्या आप "मूल विशेषाधिकारों" के अर्थ से अधिक विशिष्ट हो सकते हैं? आप यूआईडी = 0 के साथ उपयोगकर्ताओं का मतलब है?
क्रिस एस

उपयोगकर्ता कुछ भी करने की क्षमता रखते हैं। मूल रूप से - मुझे उन समूहों के साथ उपयोगकर्ताओं को सूचीबद्ध करने की आवश्यकता है जो वे सदस्य हैं यदि यह संभव है।
एरिक

2
अगर मुझे पता होता कि आपका कंप्यूटर कहां है, तो मैं ऊपर जा सकता था और पावर कॉर्ड खींच सकता था। जो "कुछ भी करें" के रूप में योग्य होगा जिसका मतलब है कि मैं आपकी सूची में हूं। रफीक ने तीन सबसे सामान्य चीजों को सूचीबद्ध किया है, लेकिन और भी हो सकता है और हमें पता है कि आपके सिस्टम के बारे में या यह कैसे सेटअप है।
क्रिस एस

जवाबों:


42

रूट पासवर्ड बदलना न भूलें। यदि किसी भी उपयोगकर्ता के पास रूट के अलावा UID 0 है, तो उन्हें नहीं करना चाहिए। बुरा विचार। जाँच करने के लिए:

grep 'x:0:' /etc/passwd

फिर, आपको यह नहीं करना चाहिए लेकिन यह जांचने के लिए कि क्या उपयोगकर्ता रूट समूह का सदस्य है:

grep root /etc/group

यह देखने के लिए कि क्या कोई कमांड को रूट के रूप में निष्पादित कर सकता है, sudoers की जाँच करें:

cat /etc/sudoers

SUID बिट की जांच करने के लिए, जो प्रोग्राम को रूट विशेषाधिकारों के साथ निष्पादित करने की अनुमति देता है:

find / -perm -04000


कड़ाई से, कि पहले एक ही काम करता है अगर छाया पासवर्ड फ़ाइल उपयोगकर्ता में है। मैं मानता हूँ कि यह लगभग हमेशा है, इन दिनों है, लेकिन सिर्फ मामले में, मैं एक त्वरित काम किया है कि स्पष्ट रूप से क्षेत्र 3 की जाँच करता है
MadHatter

4
यह पहले वाले से बेहतर पैटर्न है grep '[^:]*:[^:]*:0:' /etc/passwd:। SUID की जाँच के लिए विशेष रूप से +1।
अगली सूचना तक रोक दिया गया।

33

यह देखने के लिए कि UID 0 कौन है:

getent passwd 0

यह देखने के लिए कि समूह में कौन है root, wheel admऔर admin:

getent group root wheel adm admin

सभी उपयोगकर्ताओं और उन समूहों को सूचीबद्ध करने के लिए जिनके वे सदस्य हैं:

getent passwd | cut -d : -f 1 | xargs groups

9
अन्य सभी उत्तरों के विपरीत, जो गलत तरीके से / etc / passwd फ़ाइल पर निर्भर करते हैं, यह एक, getent passwdइसके बजाय, वास्तव में सही है। बस जाँच / आदि / sudoers करने के लिए मत भूलना।
16

इसके लिए धन्यवाद। बहुत साफ है। मेरे लिए यह स्वीकृत उत्तर है।
फिड्डी बक्स

6

शुद्ध रूट यूजर आईडी "0" है।

सिस्टम के सभी उपयोगकर्ता / etc / passwd फ़ाइल में हैं:

less /etc/passwd

रूट करने वालों के पास यूजर आईडी के रूप में "0" है, जो कि 3 कॉलम है। समूह (4 वें स्तंभ) के रूप में "0" के साथ कुछ मूल विशेषाधिकार भी हो सकते हैं।

इसके बाद, आप समूहों को देखना चाहेंगे, और देखेंगे कि "रूट" या "व्हील" या "एडमिन" ग्रुप्स का अतिरिक्त सदस्य कौन है:

less /etc/group

उन समूहों में सूचीबद्ध उपयोगकर्ता कुछ मूल विशेषाधिकार हो सकते हैं, खासकर "सुडो" कमांड के माध्यम से।

अंतिम चीज़ जिसे आप जांचना चाहते हैं, वह है "sudo" कॉन्फिगर करना और यह देखना कि कौन इस कमांड को चलाने के लिए प्राधिकरण के रूप में सूचीबद्ध है। यह फ़ाइल स्वयं अच्छी तरह से प्रलेखित है, इसलिए मैं इसे यहां पुन: प्रस्तुत नहीं करूंगा:

less /etc/sudoers

इसमें उन मुख्य क्षेत्रों को शामिल किया गया है, जिनकी जड़ तक पहुँच हो सकती है।


कुछ और जगहों के लिए भी सर्वरफॉल्ट.com/questions/205598/… देखें जहां विशेषाधिकार-वृद्धि के अधिकार दिए जा सकते हैं। (अर्थात्, consolehelperऔर PackageKit।)
mattdm

2
सभी उपयोगकर्ताओं को निश्चित रूप से / etc / passwd में होने की गारंटी नहीं है। उदाहरण के लिए, वे LDAP में हो सकते हैं। लेकिन getent passwdसभी सिस्टम उपयोगकर्ताओं (रूट सहित) को पासवार्ड प्रारूप में सूचीबद्ध करना चाहिए, भले ही वे डेटाबेस में परिभाषित न हों।
१५:०५ पर

3

सभी उपयोगकर्ताओं को मुद्रित करने के लिए

perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd

UID 0 वाले केवल उन उपयोगकर्ताओं को मुद्रित करने के लिए, जैसा कि अन्य लोगों ने कहा है, निहित मूल विशेषाधिकारों वाले उपयोगकर्ता:

perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd

यह एक अच्छा लाइनर है, लेकिन सीमाओं के बारे में पता होना चाहिए (मुझे यकीन है कि MadHatter को यह पहले से ही पता है) - यह समूहों की जांच नहीं करेगा और यह sudoers की जांच नहीं करेगा। यह केवल जांच करेगा, जैसा कि वह कहता है, निहितार्थ।
रफीक मनीर

2
पार्स / आदि / पासवार्ड न करें। उपयोगकर्ताओं को कहीं और परिभाषित किया जा सकता है। getent passwdइसके बजाय उपयोग करें । : अपना पहला "सभी उपयोगकर्ताओं को मुद्रित" उदाहरण के लिए, बल्कि इस कोशिशgetent passwd | perl -naF: -e 'print "$F[0]\n"'
mivk

2

सभी उपयोगकर्ताओं की त्वरित सूची के लिए, passwdएक स्थान के बाद कमांड टाइप करने के बाद दो बार (ऑटो-पूर्ण) टैब को हिट करने का प्रयास करें । यह suकमांड के साथ भी काम करता है ।

मूल-विशेषाधिकार वाले उपयोगकर्ता के रूप में किया जाना चाहिए।


क्या यह एक विशिष्ट विशिष्ट विशेषता है? बैश ने सिर्फ OpenSUSE पर फाइलों का सुझाव दिया।
19

बैश में डेबियन (निचोड़) पर परीक्षण किया गया। मुझे विश्वास नहीं है कि कोई भी आधिकारिक तौर पर इसका समर्थन करेगा, लेकिन यह एक शॉर्टकट है।
एमराल्डो

अपडेट: यह अब एल कैपिटन में काम नहीं करता है। यह शायद सुरक्षा कारणों से तय किया गया था।
एमरल्डो

0

यह मुझे परेशान कर रहा था कि एक-लाइनर उत्तर नहीं था ... यदि आप सभी यूआईडी 0 (रूट) खातों को सूचीबद्ध करना चाहते हैं, तो निम्न का उपयोग करें:

cat /etc/passwd | cut -f1,3,4 -d":" | grep"0:0" | cut -f1 -d":" | awk '{print $1}'

श्रेष्ठ,

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.