2013-04-23 3 views
7

है, मेरे पास stat कमांड के साथ पढ़ने वाली फ़ाइल के पैरामीटर (विशेष रूप से उपयोगकर्ता आईडी और ग्रुपिड) हैं और मैं ऐसे नेटवर्क में काम करता हूं जहां उपयोगकर्ता और समूह ldap सर्वर पर निर्दिष्ट होते हैं।समूह नाम कैसे प्राप्त करें जब मेरे पास ग्रुपिड

मुझे उपयोगकर्ता नाम getent passwd userid के परिणाम से बाहर निकाल दिया गया है।

अब मेरा विचार समूह नाम getent group groupid के साथ प्राप्त करना था, लेकिन यह काम नहीं करता है।

क्या कोई मुझे बता सकता है कि मेरी गलती कहां है या मुझे समूह नाम कैसे मिलता है?

धन्यवाद!

group: files ldap 
अपने /etc/nsswitch.conf में

:

+0

एसएलएस 11.2 पर मेरे लिए काम करता है। – jwilleke

उत्तर

1

यह संभावना छोड़कर कि आप गलत समूह आईडी की आपूर्ति कर रहे हैं, यह एलडीएपी सेटअप में एक बग हो सकता है, जो रिवर्स समूह रिज़ॉल्यूशन में प्रकट होता है काम नहीं करता है। यह इस तथ्य से प्रबलित है कि यह एक सादा "फाइल" सेटअप पर काम करता है।

getent (1) में कहा गया है:

group  When no key is provided, use setgrent(3), getgrent(3), and 
      endgrent(3) to enumerate the group database. When one or 
      more key arguments are provided, pass each numeric key to 
      getgrgid(3) and each nonnumeric key to getgrnam(3) and 
      display the result. 

यह है कि getgrgid (3) अपने स्थापना पर विफल रहता है हो सकता है।

यह परीक्षण इस कार्यक्रम (getgrgid_test.c) के साथ "getgrgid_test बनाने" संकलन करने के लिए:

#include <stdio.h> 
#include <sys/types.h> 
#include <grp.h> 

int 
main(int argc, char **argv) 
{ 
    int gid; 
    struct group *g; 

    if (argc != 2) { 
     fprintf(stderr, "Invalid number of positional arguments\n"); 
     fprintf(stderr, "Usage getgrid_test GID\n"); 
     return 1; 
    } 
    gid = atoi(argv[1]); 
    g = getgrgid(gid); 
    if (g == NULL) { 
     fprintf(stderr, "gid %d not found\n", gid); 
     return 1; 
    } 
    printf("%s\n", g->gr_name); 
    return 0; 
} 

तो इस तरह से अपनी gid साथ इसे चलाने:

getgrgid_test GID 

यदि यह उत्पादन नहीं करता है आपके सिस्टम प्रशासकों को समूह नाम रिपोर्ट।

अन्यथा, यदि यह काम करता है, लेकिन "गेटेंट समूह जीआईडी" नहीं है, तो यह "गेटेंट" में एक बग है।

+0

यह ** बिल्कुल ** है – Petesh

+0

पेटेश, हां, परीक्षण कार्यक्रम गेटेंट में एक बग की बाईपास (बहुत मामूली) संभावना है और sysadmins के साथ समस्या को घर में हथियाने में मदद करता है। – spbnick

0

आप शायद एक विन्यास मुद्दा जहां या तो आप की तरह एक लाइन नहीं मिल गया है है।

या ldap सर्वर पर आपकी समूह जानकारी एक ऐसे रूप में है जिसमें समूह आईडी संख्याएं नहीं हैं उदा। टाइप groupOfNames, groupOfUniqueNames टाइप posixGroup के प्रकार के बजाय।

केवल posixGroup में उपयुक्त विशेषताएँ हैं जो लिनक्स/यूनिक्स में वैध समूह के रूप में उपयोग की अनुमति देती हैं (यानी समूह आईडी संख्या जो मिलान करने के लिए आवश्यक है)। उस स्थिति में ldap सर्वर वैध समूहों को वापस नहीं करता है।

आप getent group से आउटपुट में मौजूद किसी भी या सभी रिमोट समूहों के बिना पूरी तरह से काम कर रहे ldap कॉन्फ़िगरेशन कर सकते हैं।

संबंधित मुद्दे