सवाल उस स्क्रिप्ट को उपयोगकर्ता के रूप में चलाएं जिसमें नोलिन शैल है


मुझे बस इतना करना है कि एक विशिष्ट स्क्रिप्ट को एक ऐसे कण उपयोगकर्ता के रूप में चलाने के लिए है जिसमें / etc / passwd में इंगित नोलिन / झूठा खोल है।

मैं स्क्रिप्ट को रूट के रूप में चलाऊंगा और इसे किसी अन्य उपयोगकर्ता के रूप में चलाया जाना चाहिए। चल रहा है:

~# su -c "/bin/touch /tmp/test" testuser

काम करेगा लेकिन मुझे testuser के लिए एक वैध खोल की जरूरत है। मुझे पता है कि मैं पासवर्ड को अक्षम कर सकता हूं passwd -d testuser और शैल को / bin / bash पर छोड़ दें इस तरह से थोड़ा सा सुरक्षित होगा लेकिन मुझे नोलिन / झूठा खोल होना चाहिए।

मूल रूप से मुझे जो चाहिए वह क्रॉन्टाब करता है जब हम किसी विशेष उपयोगकर्ता के रूप में चलने के लिए नौकरियां सेट करते हैं, भले ही इस में कोई नोलिन / झूठा खोल न हो।

पी। मुझे यह धागा मिला एक नोलिन उपयोगकर्ता के रूप में एक आदेश निष्पादित लेकिन मुझे नहीं पता कि आदेश को "संयोजित" कैसे करें su -s /bin/sh $user स्क्रिप्ट के लिए मुझे चलाने की जरूरत है

धन्यवाद


78
2018-01-18 13:56


मूल




जवाब:


आप एक विशेष खोल चलाने के लिए सु-स्विच का उपयोग कर सकते हैं

su -s /bin/bash -c '/path/to/your/script' testuser

(प्रारंभ में लगा sudo उपरोक्त के लिए अगर testuser एक पासवर्ड रहित उपयोगकर्ता है।)


109
2018-01-18 18:49



अगर सु है तो क्या होगा root:root -rwsr-x--- ? - Patryk
क्या होगा यदि उपयोगकर्ता के पास पासवर्ड नहीं है? - CMCDragonkai
@ वेस्ले ने पाया कि पासवर्ड रहित उपयोगकर्ता के लिए उस आदेश को चलाने के लिए आपको रूट होने की आवश्यकता है। - CMCDragonkai
@ लैन, यदि उपयोगकर्ता को खोल नहीं है, तो कमांड से संबंधित प्रक्रिया बैश प्रक्रिया का बच्चा नहीं होना चाहिए। इस प्रकार, आपको स्क्रिप्ट को स्क्रिप्ट के साथ बदलने के लिए exec का भी उपयोग करना चाहिए। और यदि आप स्क्रिप्ट को init का एक बच्चा बनाना चाहते हैं, तो आप उदाहरण के रूप में बस उपयोग करें su -s /bin/bash -c 'exec /path/to/your/script &' test - Facundo Victor
चूंकि मैंने पिछले 20 मिनट बिताए हैं कि एक ही परिणाम प्राप्त करने के तरीके को कैसे प्राप्त किया जाए runuser, मैं इसे इंगित करना चाहता हूं su -s SHELL पैरामीटर renduser कमांड renders बहुत ज्यादा बेकार :) धन्यवाद जनवरी! - jirka


आप इसके साथ कर सकते हैं sudo -u अगर आपने इसे स्थापित किया है:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

7
2018-01-18 14:03



आप पैरामीटर कैसे पास करते हैं sudo -u apache whoami? - CMCDragonkai
@CMCDragonkai कमांड के बाद किसी भी पैरामीटर के साथ पारित किया जाएगा। आप इसके बारे में सोच सकते हैं जैसे "सुडो [-उ अपाचे] [व्हामी <param1> <param2>]"। - Handyman5
मुझे लगता है कि उपयोग कर रहा हूँ sudo -u शायद नोलॉगिन उपयोगकर्ता के रूप में कमांड चलाने के लिए एक अच्छा विचार नहीं है, क्योंकि यह खुलासा करता है SUDO_USER पर्यावरण में जो असली है वह आदेश का आह्वान करता है। शायद मैं बस इसे खत्म कर रहा हूँ। - Meow


स्क्रिप्ट को / bin / sh पर निष्पादित करने के लिए तर्क के रूप में प्रदान करके:

su -s "/bin/sh /your/script/location" username

4
2018-01-18 14:01





अभी अहसास हुआ :

su -s "/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser

शायद एक बेहतर तरीका है?


2
2018-02-16 07:18





वास्तव में, ऐसा करने का सबसे अच्छा तरीका है runuser

विवरण के लिए मैन पेज देखें

इस उपकरण का उपयोग स्थिति से निपटने के लिए किया जाता है क्योंकि डेवलपर ने अपने बोल्ग में कहा था

जब भी कोई सेवा रूट के रूप में चल रही है और खोल का उपयोग करके यूआईडी को बदलना चाहता है तो उसे रनसर का उपयोग करना चाहिए।

http://danwalsh.livejournal.com/55588.html

मैंने इस जवाब को कई महल में पोस्ट कर दिया है, अगर आपको यह परेशान लगता है तो मुझे माफ़ कर दो


0
2017-12-07 19:19



लिंक रोट को रोकने के लिए कृपया लिंक-केवल उत्तर पोस्ट न करें। इसके बजाय, लिंक से अपने उत्तर में सबसे प्रासंगिक जानकारी जोड़ें या वैकल्पिक रूप से, एक उत्तर के बजाय लिंक को टिप्पणी के रूप में पोस्ट करें। यह देखो serverfault.com/help/how-to-answer अधिक जानकारी के लिए सहायता केंद्र लेख। - Federico Galli
@FedericoGalli सबसे प्रासंगिक जानकारी पहले ही जोड़ दी गई है, उपयोग को कॉपी और पेस्ट करने की कोई आवश्यकता नहीं है, मैन पेज पर्याप्त जानकारी प्रदान करता है - Z-Y00


उपयोगकर्ता को निर्दिष्ट करने के लिए सुडो-यू का प्रयोग करें। लक्षित उपयोगकर्ता के पर्यावरण चर सेट करने के लिए -i ध्वज का भी उपयोग करें।

sudo -i -u user command

-1



यह देता है This account is currently not available. - knocte