मैं रूट से विशेषाधिकारों को छोड़ने के लिए प्रोग्राम के संबंधित आईडी को सेट करने के लिए setuid() और setgid() का उपयोग करने का प्रयास कर रहा हूं, लेकिन उनका उपयोग करने के लिए मुझे उस उपयोगकर्ता के यूआईडी और ग्रिड को जानना है जिसे मैं बदलना चाहता हूं ।यूनिक्स में उपयोगकर्ता नाम से प्रोग्रामिंग रूप से यूआईडी और जीआईडी प्राप्त कर रहा है?
क्या ऐसा करने के लिए कोई सिस्टम कॉल है? मैं इसे हार्डकोड नहीं करना चाहता/या/etc/passwd से पार्स नहीं करना चाहता हूं।
इसके अलावा, मैं का उपयोग करने से प्रोग्राम के रूप में नहीं बल्कि ऐसा करने के लिए करना चाहते हैं:
आईडी -u USERNAME
किसी भी मदद होगी बहुत सराहना
क्या पार्स/etc/पासवर्ड के साथ गलत क्या है? – eduffy
मुझे यह कहना चाहिए था, "मैं बल्कि पार्स/etc/passwd नहीं करना चाहूंगा", क्योंकि मुझे संदेह था कि वहां एक आसान तरीका था, और उत्तर के लिए धन्यवाद, मुझे यह मिला है। – Evan
पार्सिंग/etc/passwd के साथ एक चीज़ गलत है कि उपयोगकर्ता नाम वहां संग्रहीत नहीं किए जा सकते हैं - वे किसी निर्देशिका सर्वर (एलडीएपी, आदि) पर कहीं बाहर हो सकते हैं। एक और बात गलत है कि यह आपके लिए पहले से ही किया गया है, getpwnam() et al द्वारा। –