साइग्विन के लिए प्रैक्टिकल (शास्त्रीय लिनक्स एक के करीब) का उपयोग करने के लिए (स्वचालित) SUDO


11

CygWinsudo में कमांड का उपयोग करने में सक्षम होने के नाते एक उपयोगी और खोल को खोलने की तुलना में तेज़ है:

Luis@Kenobi /cygdrive/c/Users/Luis
$ net user /add TestUser
System error 5.
Access denied.

Luis@Kenobi /cygdrive/c/Users/Luis
$ sudo net user /add TestUser
Command completed successfully.

जैसा कि ऊपर दिखाया गया है, आप विंडोज कमांड / स्क्रिप्ट भी लिनक्स की तरह चला सकते हैं। मेरे लिए साफ-सुथरा है; दूरस्थ (SSH) कंसोल पर काम करता है और विंडोज / लिनक्स कमांड को संयोजित करने की अनुमति देता है । इसलिए प्रशासनिक कार्यों को अंजाम देने में सक्षम होना लगभग आवश्यक है।

लेकिन CygWin प्रोजेक्ट के लिए SUDO का एक व्यवहार है जो खतरनाक हो सकता है : यह एक सर्वर / क्लाइंट आर्किटेक्चर के रूप में काम करता है, वास्तव में, एक क्लाइंट (sudo) आंतरिक में सर्वर (sudoserver.py) को आदेशों का अनुरोध भेजता है (बाहर नहीं सुन रहा है) स्थानीय कंप्यूटर) 7070TCP, जिसमें कोई उपयोगकर्ता या अनुमतियाँ नहीं हैं , इसलिए कंप्यूटर पर लॉग इन किए गए किसी (भी अप्रभावित उपयोगकर्ता) व्यवस्थापक (साइगविन या विंडोज) शेल कमांड या स्क्रिप्ट (साइगविन या विंडोज, भी) निष्पादित कर सकते हैं । यदि आप लेखक की सुझाई गई विधि: "sudoserver.py" को एक सेवा के रूप में पंजीकृत करते हैं, तो
समस्या और भी बदतर हो जाती है, इसलिए यह स्थायी रूप से चालू रहेगी।

इसलिए, चीजों को थोड़ा और सुरक्षित रखने के लिए (पूरी तरह से नहीं), मैं करता हूं:
1.- एक व्यवस्थापक शेल पर "sudoserver.py" निष्पादित करें।
2.- एक और CygWin शेल पर मेरे "sudo" कमांड निष्पादित करें।
3.- बंद करें (Ctrl + C) "sudoserver.py" और व्यवस्थापक शेल।

थोड़ा गुस्सा आ रहा है । मैं .cmdअसाइन किए गए हॉटकी के साथ एक फ़ाइल का उपयोग करके इसे वर्कअराउंड कर रहा हूं जो "sudoserver.py" चलाता है, और मैं अपने प्रशासनिक कार्यों के बाद इसे (मैन्युअल रूप से) बंद कर रहा हूं, लेकिन अभी भी क्लासिक "sudo" से बहुत दूर है लिनक्स पर प्रयोज्य ।

महान और व्यावहारिक तरीका कुछ तरीका होगा:

  1. ** UAC एलिवेशन प्रॉम्प्ट (या उपयोगकर्ता / पासवर्ड) के लिए अनुरोध करने वाला "sudoserver.py" स्वतः-खोलता है।
  2. कुछ समय बाद इसे बंद कर देता है , इसलिए यूएसी अनुरोध sudoक्रमिक रूप से निष्पादित कई आदेशों के मामले में परेशान नहीं करेगा ।

क्या इसे स्वचालित करने का कोई तरीका है , कम से कम आंशिक रूप से?

जवाबों:


10

नोट: यह ज्यादातर एक कार्यक्रम (शेल स्क्रिप्ट) है जिसे मैंने बनाया है, और मुझे पता है कि यह मंच एक प्रोग्राम-परिचय की तुलना में एक प्रश्न-उत्तर साइट अधिक है। लेकिन मेरे पास कोई GitHub (या समान) खाता नहीं है, न ही मेरे पास समुदाय के लिए एक ओपन सोर्स प्रोग्राम प्रकाशित करने की विधि के बारे में शोध करने का समय है। तो, जब तक वहाँ एक जोखिम है कि एक काम और उपयोगी कार्यक्रम जो लोग आनंद ले सकता हूं, और यह एक पहले से ही बनाया कार्यक्रम साझा करने के लिए दु: खी होगा किसी का ध्यान नहीं रहता है (यहां तक कि महीने के लिए) के रूप में, मैं करने जा रहा हूँ इसे यहाँ प्रकाशित के लिए अभी। मेरे लिए कोई समस्या नहीं है अगर वह इस धागे को हटाने का फैसला करता है, तो मैं समझूंगा। मुझे उम्मीद है कि में इस मामले को शब्दबद्ध किया इस मंच के लिए उपयोगी बनाने के लिए इस प्रश्न-उत्तर के रूप में पर्याप्त रूप से । अगर काफी हैंरुचि रखने वाले उपयोगकर्ता , मैं इस परियोजना को जारी रखने के लिए कुछ समय समर्पित करने की पूरी कोशिश करूंगा (मेरे सभी शोधों के बाद, मुझे इंटरनेट पर इसके सबसे करीब कुछ भी नहीं मिला है, लेकिन, अच्छी तरह से ... मुझे नहीं पता कि मेरी स्क्रिप्ट मूल्यवान है या यह समय की बर्बादी है)।

मैंने एक साधारण लिनक्स शेल स्क्रिप्ट प्रोग्राम किया है जो साइगविन पर काम करता है (अब तक) और साइगविन टाइम-अटैक अंतराल के लिए सुडो को कम करने में मदद करता है (मुझे उम्मीद है)। कार्यक्रम को TOUACExt (" टाइमऑट और यूएसी एक्सटेंशन " का संक्षिप्त नाम दिया गया है ) और साइगविन के लिए एक आवरण के रूप में कार्य करता है (आवश्यक स्थापित), और वास्तव में चार .shकार्यक्रमों के एक सेट द्वारा रचित है ।

TOUACExt निष्पादन का उदाहरण

विशेषताएं :

  • आरामदायक उपयोग : लिनक्स व्यवहार से मूल sudo का अनुकरण करके, UAC पुष्टिकरण अनुरोध शीघ्र केवल एक बार दिखाई देता है (कई लगातार sudoआदेश केवल एक UAC अनुरोध उत्पन्न करेगा)। जब तक sudoserver.py (15 मिनट डिफ़ॉल्ट) चलता रहता है, तब तक UAC नहीं रहेगा अनुरोध ।
  • विशेषाधिकार प्राप्त (व्यवस्थापक) उपयोगकर्ताओं को केवल UAC पुष्टिकरण अनुरोध ( हाँ / नहीं) मिलता है स्क्रीन पर ) मिलता है।
  • Unprivileged (गैर-व्यवस्थापक) उपयोगकर्ताओं को एक व्यवस्थापक खाता / पासवर्ड मिलता है इनपुट स्क्रीन ।
  • sudoserver.py चलती रहती है, फिर अपने आप बंद हो जाती है पिछले sudo कमांड निष्पादन से पूर्वनिर्धारित समय (15 मिनट) के बाद ।
  • sudoserver.py बंद नहीं करता है (चलाता रहता है और 5 मिनट में फिर से जाँच करेगा) sudo के किसी भी उदाहरण के मामले में चलाने ।
  • दूर से काम करता है (SSH के माध्यम से परीक्षण):
    • Unprivileged उपयोगकर्ता दूरस्थ रूप से sudoserver.py शुरू नहीं कर सकते हैं।
  • एक (अभी तक सरल और बहुत ही पढ़ने योग्य नहीं) बनाता है लॉग पर /var/log/SUDOForCygWin/

आवश्यकताएँ (CygWin में):

  • CygWin के लिए SUDO
  • pgrep (पर) procps पैकेज में)।
  • झुंड (पर) util-linux पैकेज में)।
  • Nohup (मुझे लगता है कि CygWin पर डिफ़ॉल्ट रूप से इंस्टॉल किया गया है , लेकिन निश्चित नहीं है)।

मान लेना : - लेखक द्वारा सुझाए गए रास्ते पर सिगविन परियोजना के लिए सूडो के दो कार्यक्रम:

/usr/local/bin/sudoserver.py
/usr/local/bin/sudo

TOUACExt का परीक्षण काम कर रहा है विंडोज 7 SP1 और Windows XP SP3 पर हुए , लेकिन मुझे नहीं पता कि यह अंतिम उपयोग करने पर समझ में आता है या नहीं।

स्थापना निर्देश :

  • इस स्क्रिप्ट को (सुझाया गया नाम SUDOServer.cmd:) और एक शॉर्टकट बनाएं (यदि आप चाहें तो इसके आइकन को वैयक्तिकृत कर सकते हैं ) अपने विंडोज पथ पर कहीं भी इसका नाम SUDOServer.lnk(आपको इस शॉर्टकट को सक्षम करना होगा Advanced Options --> Execute as Administrator) , इसलिए सीधे विंडोज से अनुरोध किया जा सकता है:sudoserver.py

    c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py

  • उदाहरण के लिए, पथ पर TOUACExt की चार .sh लिपियों को रखें :

    /usr/local/bin/SUDO.sh /usr/local/bin/SUDOServer.sh /usr/local/bin/SUDOServerWatchDog.sh /usr/local/bin/SUDOServerWatchDogScheduler.sh

  • मूल नाम बदलें से अजगर स्क्रिप्ट sudoके लिए sudo.py:

    mv /usr/local/bin/sudo /usr/local/bin/sudo.py
    चेतावनी: मूल "सुडो" पायथन लिपि आपके रास्ते में कहीं भी नहीं रहनी चाहिए, या इसे इसके बजाय निष्पादित किया जा सकता है।

  • इस उपनाम (उदाहरण के लिए, मैन्युअल रूप से या अपना संपादन करके ~/.bashrc) बनाएं :

    alias sudo='SUDO.sh'

SUDO.sh के लिए कोड :

#!/bin/bash

# ********** SUDO.sh v0.04a **********

# Variables:
# LockFile (will use a temporal one for now):
#lockfile=sudoserver-running.lck
LockFile=lockfile.lck

# Creating LogFile (if it does not exist):
mkdir /var/log/SUDOForCygWin 2>/dev/null
chmod 777 /var/log/SUDOForCygWin 2>/dev/null
LogFile=/var/log/SUDOForCygWin/$(date +%Y%m%d).log
exec 5>>$LogFile    # Redirector 5 will be the log file.
chmod 777 $LogFile >&5 2>&5 # Writable to anyone (for now).

# Start of the program
echo "========== Starting SUDO Server for CygWin ==========" >&5
echo $(date) >&5

# does the lock file exists as locked?
if [ $(flock -n $TMP/$LockFile echo>/dev/null;echo $?) -eq 0 ]
   then
    # The lock file is not locked.
    echo "LockFile not locked. Testing sudo access..." >&5
    if [ $(sudo.py vartemp=0>/dev/null 2>/dev/null;printf $?) -eq 0 ]
       then
        # Wooops. sudoserver.py is running without the lockfile. Better to correct this.
        echo "LockFile not locked, but sudoserver.py seems to be running." >&5
        printf "Killing sudoserver.py...\n" >&5
        sudo.py kill $(sudo.py pgrep.exe -f -l sudoserver.p[y] | grep "pgrep" -v | awk '{print $1}') >&5 2>&5
    fi
    # Starting SUDOServer.sh
    printf "Requesting SUDOServer start...\n" >&5
    nohup SUDOServer.sh >&5 2>&1&
    # Wait some time delay for UAC Prompt to start
    sleep 2
    timeout=$((SECONDS+10))
    # Has sudoserver.py already started?
    while [ $(flock -w 1 $TMP/$LockFile echo>/dev/null;printf $?) -eq 0 ] || [ $(tasklist | grep "consent.exe" -i>/dev/null;printf $?) -eq 0 ]
    do
        # No. We have to wait.
        # Waiting for SUDOServer.py to be running.
        printf "."
        if [ $SECONDS -ge $timeout ]
           then
            # sudoserver.py not responding. Aborting with errorlevel=3.
            printf "sudoserver.py not responding. Aborting.\n"
            exit 3
        fi
    done
    # Yes. sudoserver.py is up and running.
fi

printf "\n"
# Schedule (add) SUDOServer Watch Dog to Task Scheduler:
SUDOServerWatchDogScheduler.sh

# Invoke requested sudo command
sudo.py $@

#printf "ErrorLevel was: "$?


# ErrorLevel Codes:
# 3 --> timeout waiting for sudoserver.py to respond.

SUDOServer.sh के लिए कोड :

#!/bin/bash

# ********** SUDOServer.sh v0.04a **********

# Variables:
# LockFile (a temporal one for now):
#lockfile=sudoserver-running.lck
LockFile=lockfile.lck

# Check for other instances of sudoserver.py running
if [ $(flock -n $TMP/$LockFile echo>/dev/null;printf $?) -eq 0 ]
   then
    printf "Creating lockfile: "$TMP/$LockFile"\n"
    flock $TMP/$LockFile -c 'cmd /c SUDOServer'
    # The file has been unlocked. Send error level=2.
    exit 2
   else
    printf "The lockfile: "$TMP/$LockFile" is locked by another process.\n"
    printf "Exiting SUDOServer.sh"
fi

printf "SUDOServer.sh execution finished. Exiting."

# Exiting with no problems.
exit 0

# ErrorLevel Codes:
# 2 --> SUDOServer.lnk (maybe denial of UAC). 

SUDOServerWatchDog.sh के लिए कोड :

#!/bin/bash

# ********** SUDOServerWatchDog.sh v0.04a **********

# Variables:
# LockFile (a temporal one for now):
#lockfile=sudoserver-running.lck
LockFile=lockfile.lck

# Redirecting to LogFile:
LogFile=/var/log/SUDOForCygWin/$(date +%Y%m%d).log
exec 5>>$LogFile
if [ $(stat $LogFile -c %a) -ne 777 ]
   then
    echo "Logfile "$LogFile" has incorrect permissions." >&5
    echo "Attemping to change permissions of "$LogFile >&5
    chmod 777 $LogFile >&5 2>&5
fi

# Remove Task Scheduler entry, if exists.
if [ $(schtasks.exe /query | grep "SUDOServerWatchDog" -i>/dev/null 2>&5;printf $?) -eq 0 ]
   then
    sudo.py schtasks.exe /delete /tn "SUDOServerWatchDog" /f >&5 2>&5
fi

# Is sudoserver.py running?
if [ $(flock -n $TMP/$LockFile echo>/dev/null;printf $?) -eq 1 ] || [ $(sudo.py vartemp=0>/dev/null 2>/dev/null;printf $?) -eq 0 ]
   then
    # Yes. sudoserver.py is running. So...
    printf "sudoserver.py detected running...\n" >&5
    # Is any instance of sudo running right now?
    if [ $(sudo.py pgrep -f -l "/usr/local/bin/sudo.py " | grep -v grep>/dev/null 2>&5;printf $?) -eq 0 ]
       then
        # Yes. sudo is running right now. So...
        printf "There are instances of sudo running.\n" >&5
        sudo.py schtasks /create /tn "SUDOServerWatchDog" /tr "SUDOServerWatchDog" /sc minute /mo 5 /sd 10/10/2010 /ru "SYSTEM" >&5 2>&5
        printf "Will check again in 5 minutes. Adding Task.\n" >&5
       else
        # No. sudo is not running right now. So...
        # Kill sudoserver.py.
        printf "Closing sudoserver.py\n" >&5
        sudo.py kill $(sudo.py pgrep.exe -f -l sudoserver.p[y] | grep "pgrep" -v | awk '{print $1}')
    fi
   else
    printf "sudoserver.py not running. Nothing to be done.\n" >&5
fi 

SUDOServerWatchDogScheduler.sh के लिए कोड :

#!/bin/bash

# ********** SUDOWatchDogScheduler.sh v0.04a **********

# Check if WatchDog is already scheduled
if [ $(schtasks.exe /query | grep "SUDOServerWatchDog">/dev/null 2>&5;printf $?) -eq 0 ]
   then
    # Yes. Remove it in order to create a new one.
        echo "Task SUDOServerWatchDog already existing." >&5
    echo "Removing task SUDOServerWatchDog..." >&5
    sudo.py schtasks.exe /delete /tn "SUDOServerWatchDog" /f >&5 2>&5
    if [ $? -eq 0 ]
       then
        # Task correctly deleted.
        echo "Task correctly removed." >&5
       else
        # Something failed in task creation. Report.
        echo "ERROR on deleting the SUDOServerWatchDog programmed task." >&5
    fi
fi
# Schedule new task for deletion.
echo "Adding new SUDOServerWatchDog task to trigger in 15 minutes." >&5
sudo.py schtasks /create /tn "SUDOServerWatchDog" /tr "SUDOServerWatchDog" /sc minute /mo 15 /sd 10/10/2010 /ru "SYSTEM" >&5 2>&5
if [ $? -eq 0 ]
   then
    # Task correctly scheduled.
    echo "Task SUDOServerWatchDog correctly scheduled." >&5
   else
    # Something failed in task scheduling. Report.
    echo "ERROR on scheduling programmed task SUDOServerWatchDog." >&5
fi 

CygWin बैश शेल से प्रोग्राम का परीक्षण करें:

Luis@Kenobi ~
$ sudo ls -la
<UAC ELEVATION PROMPT APPEARS>
total 49
drwxr-xr-x+ 1 Luis  None     0 abr  7 02:23 .
drwxrwxrwt+ 1 Luis- None     0 abr  4 03:27 ..
-rw-------  1 Luis  None 13798 abr 14 00:31 .bash_history
-rwxr-xr-x  1 Luis  None  1494 mar  3 11:36 .bash_profile
-rwxr-xr-x  1 Luis  None  6260 abr  6 05:19 .bashrc
-rwxr-xr-x  1 Luis  None  1919 mar  3 11:36 .inputrc
-rw-------  1 Luis  None    35 abr  2 01:43 .lesshst
-rwxr-xr-x  1 Luis  None  1236 mar  3 11:36 .profile
drwx------+ 1 Luis  None     0 mar  8 01:49 .ssh
-rw-r--r--  1 Luis  None     7 mar  4 18:01 d:ppp.txt
-rw-r--r--  1 Luis  None    37 abr  7 02:23 my.log

NOTE2: ये स्क्रिप्ट प्री-बीटा रिलीज़ में हैं, इसलिए वे अभी भी छोटी हैं और कोड बहुत साफ नहीं है। वैसे भी, तीन अलग-अलग विंडोज 7 कंप्यूटरों के साथ मेरे परीक्षणों में वे काम कर रहे हैं (ज्यादातर) ठीक है।

कार्यक्रम की संक्षिप्त व्याख्या :

  1. उपनाम के कारण, एक सूडो कमांड का प्रदर्शन करते समय SUDO.sh स्क्रिप्ट का उपयोग किया जाता है।
  2. SUDO.sh , SUDOServer.sh को कॉल करता है , खोलने (के माध्यम से)SUDOServer.lnk यदि आवश्यक हो तो "sudoserver.py" )।
  3. मूल sudo आदेश उपयोगकर्ता द्वारा लाया निष्पादित किया जाता है।
  4. फिर SUDO.sh SUDOServerWatchDogScheduler.sh को कॉल करता है , उस समय के बाद निष्पादन के लिए SUDOServerWatchDog.sh को शेड्यूल करता है (15 मिनट डिफ़ॉल्ट) बंद करने के लिए sudoserver.py
  5. पूर्वनिर्धारित समय के बाद, SUDOServerWatchDog.sh sudoserver.py बंद कर देता है । यदि सूडो चलने के कोई भी उदाहरण हैं , तो यह 5 मिनट के बाद नए निष्पादन के लिए कार्यक्रम करता है।

करने के लिए :

  • सेल्फ इंस्टॉलर जो सभी .sh, .cmd और .lnk फाइलों को स्वचालित रूप से बनाता है।
  • लॉक फ़ाइल को कुछ अन्य में स्थापित करें (यह $ TMP / lockfile.lck पर है)।
  • कॉन्फ़िगरेशन स्क्रिप्ट या .config फ़ाइल जोड़ें (टाइमआउट में चूक के लिए, फ़ाइल स्थान ... आदि)।
  • सिस्टम खाता व्यवहार जोड़ें (धन्यवाद, @ Wyatt8740)।
  • ¿"फ्यूसर" के साथ "फ्लॉक" (आंतरिक लॉकिंग सूडो मोड) बदलें जहां उपयुक्त हो?
  • सुझाव स्वीकार किए जाते हैं।

रिपोर्ट किए गए कीड़े :

  • बैश शेल इनपुट करने के बाद भी खुला रहता है exitयदि sudoserver.pyवह बंद होने तक चल रहा है। अनंतिम वर्कअराउंड का स्वागत है।

मुझे आशा है कि किसी ने TOUACExt को समर्पित लंबे समय की प्रोग्रामिंग का उपयोग किया जाएगा
संवर्द्धन और सुधार स्वीकार किए जाते हैं। इस मंच को भी स्वीकार करने से रोकने के लिए मुझे कहां से कोड प्रकाशित करना चाहिए, इस
बारे में सुझाव ;-)

लंबी पोस्ट के लिए क्षमा करें। मेरे पास ज्यादा खाली समय नहीं है, और यह परियोजना मेरी अलमारी पर गायब हो गई थी (शायद वर्षों तक, कौन जानता है?)।


2
यदि आप अपने कोड पर प्रतिक्रिया चाहते हैं, तो इसे codereview.stackexchange.com पर पोस्ट करें। (उपयोग के नोट्स और उदाहरण यहां दिए गए हैं)
बेन Voigt

धन्यवाद, @BenVoigt, मुझे नहीं पता था। कृपया एक प्रश्न: यदि मैं करता हूं, तो मुझे लगता है कि अधिकांश पोस्ट इस उत्तर का एक डुप्लिकेट होना चाहिए। क्या इसे क्रॉस-पोस्टिंग माना जाएगा?
सोपालजो डे एरियेरेज़

1
उन्हें एक-दूसरे से जोड़ना सुनिश्चित करें। क्रॉसपोस्टिंग में नुकसान यह है कि लोग प्रयास को दोहराते हैं। यदि वे जुड़े हुए हैं, तो ऐसी कोई समस्या नहीं है
बेन वोइग्ट

यह एक बहुत अच्छा उपाय है। यदि इसे अजगर की आवश्यकता नहीं होती है, तो मैं इसका उपयोग करूंगा। मेरे पास अजगर के लिए एक व्यक्तिगत, गहरी घृणा है। यह एक अच्छी भाषा है, लेकिन किसी भी चीज़ से अधिक व्यक्तिगत कारणों के लिए, मैं इसे नापसंद करता हूं। फिर भी, चूंकि लगभग कोई भी अजगर से नफरत नहीं करता है, और मेरी नफरत तर्कहीन है, मैंने आपके समाधान को बढ़ा दिया है, क्योंकि यह मेरी तुलना में असली चीज़ के करीब है।
व्याट8740

1
धन्यवाद, @CharlesRobertoCanato हो सकता है कि आप इसे हल करने के लिए मुझे चैट पर विवरण दे सकें? चैट रूम "TOUACExt - सूडो फॉर विंडोज": chat.stackexchange.com/rooms/56716/touacext-sudo-for-windows
Sopalajo de Arrierez

1

सरल sudo.bat (nircmd का उपयोग करता है)

Nircmd को यहाँ डाउनलोड किया जा सकता है:
http://www.nirsoft.net/utils/nircmd.html

मैं NirCmd और नाम बदलकर द्वारा डाउनलोड किए गए nircmdc.exeकरने के लिए nircmd.exe, मूल की जगह nircmd.exe। मैंने फिर उसे स्थानांतरित कर दिया C:\windows\system32

मैंने स्क्रिप्ट को पास करने की अनुमति देने के लिए निम्न बैच फ़ाइल बनाई।

यह कहा जाना चाहिए कि मैंने अपनी मशीन पर यूएसी को अक्षम कर दिया है, इसलिए मुझे अब इस स्क्रिप्ट की आवश्यकता नहीं है, लेकिन यह विंडोज 8 के रूप में काम करता है। यह साइबरविन में भी काम करता है।

@echo off
if "%*" == "" goto error
nircmd elevate %*
goto thisiseof
:error
echo No arguments were given. Exiting.
:thisiseof

एक फैंसी समाधान। छोटा और आसान। लेकिन यह मुझे एक साधारण में क्यों विफल कर रहा है sudo.bat dir? एक त्रुटि विंडोज़ बताती है "विंडोज़ को डीआईआर नामक फ़ाइल नहीं मिल सकती है"। यह साथ काम करने लगता है sudo echo Hello, लेकिन कोई कंसोल आउटपुट नहीं है।
शोलाजो डे एरियेरेज़

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

dirdirतकनीकी रूप से एक कार्यक्रम नहीं है, बल्कि एक अंतर्निहित डॉस कमांड के कारण काम नहीं करता है। जबकि लिनक्स में, lsएक द्विआधारी कार्यक्रम है, डॉस / विंडोज़ में, dirदुभाषिया खुद (यानी COMMAND.COM या cmd.exe) द्वारा नियंत्रित किया जाता है। dir.exeमेरे कार्यक्रम को चलाने के लिए कहीं भी नहीं है । लेकिन साइबरविन के लिए, sudo lsपर्याप्त होना चाहिए। यहां तक ​​कि अगर आप नहीं करते, कर रहे हैं sudo cmdया sudo bashया जो भी आपको एक 'प्रशासक' स्तर का संकेत मिलना चाहिए। यहां तक ​​कि 'प्रशासक' भी 'सिस्टम' से नीचे है, हालांकि - 'सिस्टम' के लिए, उपयोग करें nircmd.exe elevatecmd runassystem <program.exe>। इसके अलावा, मैं UAC को मेरी मशीनों पर अक्षम कर देता हूं :)
व्याट8740

इसके अलावा, मुझे नहीं लगता कि echoविंडोज़ में कोई प्रोग्राम है। यह COMMAND.COM/cmd.exe का हिस्सा है। हालांकि, मेरे लिए एक साइबर उपयोगकर्ता ls.exeऔर echo.exeयह ठीक काम करता है। और मैंने वास्तव में इसे आज पहली बार महीनों में पहली बार अपने भाई के खाते में फाइलों को प्रबंधित करने के लिए लॉग इन किए बिना (वह अपने कंप्यूटर के हर एक प्रोग्राम को अपने स्टार्ट मेनू की "स्टार्टअप" निर्देशिका: पी) में रखने में कामयाब रहा। बस दूसरे में लॉग इन किया और sudo.bat cmdएक प्रशासक स्तर संकेत प्राप्त करने के लिए इस्तेमाल किया जो मुझे अन्य उपयोगकर्ता की फ़ाइलों का प्रबंधन करने देगा।
व्याट8740

सिस्टम खाते का आपका विचार अच्छा है। मैं इसे एक विकल्प के रूप में TOUCExt में जोड़ूंगा।
सोपालाजो डी एरियेरेज़

0

उपलब्ध समाधान से नाखुश होने के कारण, मैंने सुरक्षा को जोड़ने और सेटअप करने और उपयोग में आसान बनाने के लिए nu774 की स्क्रिप्ट को अपनाया । यह परियोजना जीथब पर उपलब्ध है

इसका उपयोग करने के लिए, बस इसे डाउनलोड करें cygwin-sudo.pyऔर इसके माध्यम से चलाएं python3 cygwin-sudo.py **yourcommand**

आप सुविधा के लिए एक उपनाम स्थापित कर सकते हैं:

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