उपयोगकर्ता को चयनात्मक कमांड निष्पादित करने के लिए सीमित करें (लिनक्स)


14

मैं केवल चुनिंदा आदेशों को निष्पादित करने के लिए अपने उपयोगकर्ता को कैसे सीमित कर सकता हूं। मेरे पास tomc group में एक user tomc है। मुझे इस उपयोगकर्ता को sudo उपयोगकर्ता होना चाहिए और फिर प्रतिबंधित प्रतिबंधित होना चाहिए। मैंने /etc/sudoersफ़ाइल में कोड का पालन करने की कोशिश की है , लेकिन उपयोगकर्ता के रूप में काम नहीं कर रहा है जैसे अन्य कमांड निष्पादित करने में सक्षम है mkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*

3
हालांकि सुडो का उपयोग विशेष आज्ञाओं तक ही सीमित रखा जा सकता है, यह मुश्किल हो सकता है और कुछ विश्वास की आवश्यकता होती है। यदि आप उपयोगकर्ता पर भरोसा नहीं करते हैं, तो उन्हें किसी भी sudo का उपयोग करना एक बुरा विचार है। यह या तो उन्हें रूट विशेषाधिकार देगा या रूट विशेषाधिकार प्राप्त करने के लिए उन पर हमला करने के लिए एक केंद्रित ऐप देगा। किसी को चलाने sudo bashदेना रूट पासवर्ड रखने के लिए सबसे अधिक समान है। एक sudo bashशेल से वे किसी भी एडमिन कमांड को चला सकते हैं, सॉफ्टवेयर इंस्टॉल या डिलीट कर सकते हैं, यूजर्स और डायरेक्ट्रीज आदि को डिलीट कर सकते हैं
पॉल

@Paul क्या आप मुझे इसके लिए बेहतर और व्यावहारिक विकल्प सुझा सकते हैं?

सबसे पहले, यह स्टैक ओवरफ्लो पर विषय बंद है। पूछने के लिए बेहतर स्थानों में सुपरयुसर, या आस्कुबंटू, या लिनक्स और यूनिक्स शामिल हैं। पहले पता लगाएँ कि आप क्या करने की अनुमति देना चाहते हैं। टॉम को _____ करने की अनुमति दी जानी चाहिए, लेकिन ________ नहीं। फिर पूछें। सूडो उन कमांड्स के लिए है जिन्हें रूट (एडमिन) की आवश्यकता होती है। वह बैश को पहले से ही बिना रूट के चला सकता है।
पॉल

जवाबों:


18

आप इस गलत तरीके से जा रहे होंगे। एक उपयोगकर्ता को 'प्रतिबंधित' बैश शेल देने के बजाय, आपको उन्हें केवल उन कमांड तक पहुंच प्रदान करनी चाहिए, जिन्हें उन्हें रूट के रूप में चलाने की आवश्यकता होगी। उदाहरण के लिए, अपने sudoers फ़ाइल में:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

उपयोगकर्ताओं को रूट के रूप में विम चलाने की अनुमति देने के साथ सावधान रहें। विम में बहुत सारी विशेषताएं हैं, जैसे शेल से बचना और विम के भीतर से कमांड चलाने की क्षमता। आपके वितरण के आधार पर, आप sudoeditउपलब्ध हो सकते हैं । यह एक सामान्य विम के समान ही काम करता है, सिवाय इसके कि इसे शेल एस्केप और इस तरह से हैंडल करने के लिए डिज़ाइन किया गया है।


7
उन लाइनों में से कोई भी सुरक्षित नहीं हैं। जैसा कि आप उल्लेख करते हैं,vimमनमाने ढंग से शेल कमांड चला सकते हैं। और दूसरी पंक्ति शायद अनुमति देगीless /var/log/myapp/../../../etc/shadow! मेरे प्रयोगों के अनुसार सूडो का सुरक्षित रूप से उपयोग करना कठिन है ! लेकिन अगर आपइसके बजाय*s और उपयोगसे बच सकते हैंतो आप ठीक हो सकते हैं। sudoeditvim
joeytwiddle

टालना *पर्याप्त नहीं है! उपयोगकर्ता के lessरूप में एक बार rootटाइप करने का प्रयास करें !tail /var/log/secure। कैसा लग रहा है? NOEXECटैग का अध्ययन करें । लेकिन @ joeytwiddle के संदेश को दिल से लें: वास्तव में sudo सुरक्षा कठिन है।
ब्रूनो ब्रोंस्की

3

DSM 6 पर चलने वाले मेरे Synology Diskstation में केवल व्यवस्थापक उपयोगकर्ता ही लगातार ssh कर सकते हैं (गैर-व्यवस्थापक उपयोगकर्ताओं के पास / sbin / nologin in / etc / passwd के रूप में शेल है - आप इसे अस्थायी रूप से ssh की अनुमति देने के लिए / bin / sh पर सेट कर सकते हैं, लेकिन रिबूट पर / etc / passwd फ़ाइल रीसेट है)। इस कारण किसी खाते के लिए किसी प्रकार के सुडोल प्रतिबंध की आवश्यकता होती है जो अन्यथा केवल उदाहरण के लिए मौजूद होता है जैसे / sbin / poweroff। निम्नलिखित पंक्तियों में / etc / sudoers ने मेरे लिए काम किया:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

अनुवाद: सभी आदेशों को अस्वीकार करें, फिर केवल वांछित कमांड (इस मामले में पासवर्ड के लिए पूछे बिना) की अनुमति दें।

इस कॉन्फ़िगरेशन के साथ sudo पासवर्ड मांगता है और फिर श्वेतसूची के अलावा अन्य आदेशों के लिए विफल रहता है:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.