ব্যবহারিক পদ্ধতিগত (ক্লাসিকাল লিনাক্স একের কাছাকাছি) সাইগউইনের জন্য এসডু (স্বয়ংক্রিয়) ব্যবহারের উপায়


11

সাইগউইন-এsudo কমান্ড ব্যবহার করতে সক্ষম হওয়া একটি উন্নত শেলটি খোলার চেয়ে কার্যকর এবং দ্রুত :

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.

উপরে প্রদর্শিত হিসাবে, আপনি উইন্ডোজ কমান্ড / স্ক্রিপ্টগুলিও চালাতে পারেন ঠিক যেমন লিনাক্স। আমার জন্য ঝরঝরে; রিমোট (এসএসএইচ) কনসোলগুলিতে কাজ করে এবং উইন্ডোজ / লিনাক্স কমান্ড একত্রিত করার অনুমতি দেয় । তাই প্রশাসনিক কাজ সম্পাদন করতে সক্ষম হওয়া প্রায় একটি আবশ্যক।

কিন্তু সাইগউইন প্রকল্পের জন্য সুডোর একটি আচরণ রয়েছে যা বিপজ্জনক হতে পারে : এটি একটি সার্ভার / ক্লায়েন্ট আর্কিটেকচার হিসাবে কাজ করে , বাস্তবে, একটি ক্লায়েন্ট (সুডো) অভ্যন্তরীণভাবে কোনও সার্ভারকে (Sudoserver.py) কমান্ডের অনুরোধ প্রেরণ করে (বাইরে শুনছেন না) স্থানীয় কম্পিউটার) পোর্ট 7070TCP, কোনও ব্যবহারকারীর অনুমতি বা অনুমতি পরীক্ষা না করে , সুতরাং কম্পিউটারে লগ ইন করা যে কেউ (এমনকি অনিচ্ছাকৃত ব্যবহারকারীরা) অ্যাডমিন (সাইগউইন বা উইন্ডোজ) শেল কমান্ড বা স্ক্রিপ্টগুলি (সাইগউইন বা উইন্ডোজ,) চালাতে পারে
সমস্যাটি আরও বেড়ে যায় যদি আপনি লেখকের প্রস্তাবিত পদ্ধতিটি রাখেন: "Sudoserver.py" কে পরিষেবা হিসাবে নিবন্ধন করুন, তাই এটি স্থায়ীভাবে চলতে থাকবে।

সুতরাং, জিনিসগুলি আরও কিছুটা সুরক্ষিত করার জন্য (সম্পূর্ণ নয়), আমি এটি করি:
১- অ্যাডমিন শেলের উপর "সুদোসরভার.পি" চালিত করুন।
2.- অন্য একটি সাইগউইন শেলের উপর আমার "sudo" কমান্ডগুলি কার্যকর করুন।
৩-- বন্ধ করুন (Ctrl + C) "Sudoserver.py" এবং প্রশাসকের শেল।

কিছুটা বিরক্তিকর । আমি এটি .cmdনির্ধারিত হটকি দিয়ে একটি ফাইল ব্যবহার করে যা "সুদোসরভার.পি" চালাচ্ছি এবং এটি আমার প্রশাসনিক কাজের পরে (ম্যানুয়ালি) বন্ধ করছি, তবে লিনাক্সের ক্লাসিক "সুডো" ব্যবহারযোগ্যতা থেকে এখনও অনেক দূরে

দুর্দান্ত এবং ব্যবহারিক উপায়ে কিছু পদ্ধতি হবে যা:

  1. ** ইউএসি এলিভেশন প্রম্পট (বা ব্যবহারকারী / পাসওয়ার্ড) এর জন্য অনুরোধ করে "সুদোসরবার.পি" স্বয়ংক্রিয়ভাবে খোলে।
  2. এটি কিছুক্ষণ পরে বন্ধ করে দেয় , সুতরাং sudoধারাবাহিকভাবে কার্যকর হওয়া বেশ কয়েকটি কমান্ডের ক্ষেত্রে ইউএসি প্রয়োজনীয়তা বিরক্ত করবে না ।

অন্তত আংশিকভাবে এটিকে স্বয়ংক্রিয় করার কোনও উপায় আছে কি ?

উত্তর:


10

দ্রষ্টব্য: এটি বেশিরভাগই আমি তৈরি একটি প্রোগ্রাম (শেল স্ক্রিপ্ট), এবং আমি জানি যে এই ফোরামটি একটি প্রোগ্রাম-পরিচিতির চেয়ে প্রশ্ন-উত্তর সাইট। তবে আমার কাছে কোনও গিটহাব (বা অনুরূপ) অ্যাকাউন্ট নেই, বা সম্প্রদায়ের কাছে ওপেন সোর্স প্রোগ্রাম প্রকাশের পদ্ধতি সম্পর্কে গবেষণা করার সময়ও পাইনি। তাই, যতদিন একটা ঝুঁকি কাজ এবং দরকারী প্রোগ্রাম যারা তা ভোগ করতে পারে, এবং এটি একটি ইতিমধ্যে প্রণীত কর্মসূচি ভাগ না করতে দু: খিত হতে হবে অলক্ষিত রাখে (এমনকি মাসের জন্য) হল, আমি যাচ্ছি তা এখানে প্রকাশ জন্য এখন। প্রশাসকরা এই থ্রেডটি সরিয়ে ফেলার সিদ্ধান্ত নিলে আমার কোনও সমস্যা নেই, আমি বুঝতে পারি। আমি আশা করি বিষয়টি এই ফোরামে কার্যকর করার জন্য যথেষ্ট প্রশ্ন-উত্তর উপায়ে এই শব্দটি লিখেছেন । যদি যথেষ্ট হয়আগ্রহী ব্যবহারকারীরা , আমি প্রকল্পটি চালিয়ে যাওয়ার জন্য কিছুটা সময় উত্সর্গ করার জন্য যথাসাধ্য চেষ্টা করব (আমার সমস্ত গবেষণার পরেও, আমি ইন্টারনেটে এর নিকটতম কিছু খুঁজে পাইনি, তবে ভাল ... আমার স্ক্রিপ্টটি মূল্যবান কিনা তা আমি জানি না বা এটি সময় নষ্ট হয়েছে)।

আমি একটি সাধারণ লিনাক্স শেল স্ক্রিপ্ট প্রোগ্রাম করেছি যা সাইগউইনে (এখন অবধি) কাজ করে এবং সাইগউইন সময়-আক্রমণ ব্যবধানের জন্য এসইউডিও হ্রাস করতে সহায়তা করে (আশা করি)। প্রোগ্রামটির নাম দেওয়া হয়েছে TOUACExt (" টাইমআউট এবং ইউএসি এক্সটেনশান " এর সংক্ষিপ্ত বিবরণ) এবং সাইগউইন (প্রয়োজনীয় ইনস্টলড) এর জন্য এসইউডিওর একটি মোড়ক হিসাবে কাজ করে এবং চারটি .shপ্রোগ্রামের সেট দ্বারা সত্যই রচিত হয় ।

TOUACExt কার্যকর করার উদাহরণ

বৈশিষ্ট্য :

  • আরামদায়ক ব্যবহার : লিনাক্স আচরণ থেকে আসল সুডো অনুকরণ করে, ইউএসি নিশ্চিতকরণের অনুরোধের প্রম্পটটি কেবল একবার উপস্থিত হয় (একাধিক পরপর sudoকমান্ডগুলি কেবল একটি ইউএসি অনুরোধ উত্পন্ন করবে)। সুদোসরবার.পি যতক্ষণ চলতে থাকে (15 মিনিটের ডিফল্ট), সেখানে আর ইউএসি অনুরোধ থাকবে না।
  • সুবিধাযুক্ত (প্রশাসক) ব্যবহারকারীরা কেবল স্ক্রিনে ইউএসি নিশ্চিতকরণের অনুরোধ ( হ্যাঁ / না ) পান।
  • সুবিধাবঞ্চিত (প্রশাসনবিহীন) ব্যবহারকারীরা প্রশাসক অ্যাকাউন্ট / পাসওয়ার্ড ইনপুট স্ক্রিন পান।
  • Sudoserver.py চলমান রাখে, তারপরে শেষ সুডো কমান্ডের প্রয়োগ থেকে পূর্বনির্ধারিত সময় (15 মিনিট) পরে স্বয়ংক্রিয়ভাবে বন্ধ হয়
  • সুডোসারভার.পি বন্ধ হয় না (চলমান রাখে এবং 5 মিনিটের মধ্যে আবার চেক করবে) সুডো চলার কোনও উদাহরণ থাকলে
  • দূর থেকে কাজ করে (এসএসএইচের মাধ্যমে পরীক্ষিত):
    • সুবিধাবঞ্চিত ব্যবহারকারীরা সুদোসরবার.পি দূর থেকে শুরু করতে পারবেন না।
  • একটি লগ এ (এখনও সহজ এবং খুব পঠনযোগ্য নয়) তৈরি করে /var/log/SUDOForCygWin/

প্রয়োজনীয়তা (সাইগউইনে):

  • CygWin জন্য sudo
  • pgrep ( procpsপ্যাকেজে)
  • flock ( util-linuxপ্যাকেজে)
  • নোহুপ (আমি মনে করি সাইগওয়িনে ডিফল্টরূপে ইনস্টল করা আছে তবে নিশ্চিত না)।

ধরে নেওয়া : - সাইগউইন প্রকল্পের জন্য এসইউডিও-র দুটি প্রোগ্রাম লেখকের পরামর্শ অনুসারে:

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

TOUACExt টি উইন্ডোজ 7 এসপি 1 এবং উইন্ডোজ এক্সপি এসপি 3 তে কাজ করার পরীক্ষা করা হয়েছে , তবে আমি জানি না যে এটি শেষেরটিতে এটি ব্যবহারে অর্থবোধ করে কিনা।

ইনস্টলেশন নির্দেশাবলী :

  • এই স্ক্রিপ্টটি রাখুন (প্রস্তাবিত নাম 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 

সাইগউইন বাশ শেল থেকে প্রোগ্রামটি পরীক্ষা করুন:

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

দ্রষ্টব্য: এই স্ক্রিপ্টগুলি প্রাক-বিটা রিলিজে রয়েছে, সুতরাং এগুলি এখনও বগি এবং কোডটি খুব পরিষ্কার নয়। যাইহোক, তিনটি ভিন্ন উইন্ডোজ 7 কম্পিউটারের সাথে আমার পরীক্ষাগুলিতে তারা মনে হয় ঠিক আছে (বেশিরভাগ) ঠিক আছে।

প্রোগ্রামটির সংক্ষিপ্ত ব্যাখ্যা :

  1. উলের কারণে, একটি sudo কমান্ড করার সময় SUDO.sh স্ক্রিপ্টটি চাওয়া হয়।
  2. প্রয়োজনে SUDO.sh , SUDOServer.sh কে কল করেSUDOServer.lnk " মাধ্যমে " Sudoserver.py খুলুন।
  3. মূল উবুন্টু কমান্ড ব্যবহারকারী দ্বারা প্রার্থনা মৃত্যুদন্ড কার্যকর করা হয়।
  4. তারপরে SUDO.sh SUDOServerWatchDogScheduler.sh কে ফোন করে , যা নির্ধারিত সময়ের (15 মিনিটের ডিফল্ট) বন্ধ হওয়ার পরে কার্যকর করার জন্য SUDOServerWatchDog.sh টি শিডিউল করে sudoserver.py
  5. পূর্বনির্ধারিত সময়ের পরে, SUDOServerWatchDog.sh সুডোসরবার.পি বন্ধ করে দেয় । যদি সুডো চলার কোনও উদাহরণ থাকে তবে এটি 5 মিনিটের পরে নতুন বাস্তবায়নের জন্য নিজেই প্রোগ্রাম করে।

করণীয় :

  • স্বয়ং ইনস্টলার যা সমস্ত .sh, .Cmd এবং .lnk ফাইলগুলি স্বয়ংক্রিয়ভাবে তৈরি করে।
  • স্থাপন লক ফাইল কিছু অপরের (এটা $ tmp / lockfile.lck হয়)।
  • একটি কনফিগারেশন স্ক্রিপ্ট বা। কনফিগ ফাইল যুক্ত করুন (টাইমআউটগুলিতে ডিফল্ট, ফাইলের অবস্থানের জন্য ... ইত্যাদি)।
  • সিস্টেম অ্যাকাউন্ট আচরণ যুক্ত করুন (ধন্যবাদ, @ Wyatt8740)।
  • Appropriate "ফুসার" (অভ্যন্তরীণ লকিং সুডু মোড) "ফুসার" এর সাথে কোথায় উপযুক্ত?
  • পরামর্শ গৃহীত হয়েছে।

রিপোর্ট করা বাগ :

  • বাশ শেলটি বন্ধ না হওয়া অবধি চলমান exitথাকলে ইনপুট দেওয়ার পরেও খোলা রাখে sudoserver.py। অস্থায়ী কর্মকাণ্ড স্বাগত।

আমি আশা করি যে কেউ টুএক্সেক্সটকে উত্সর্গীকৃত দীর্ঘ ঘন্টা প্রোগ্রামিং ব্যবহার করবে
বর্ধিতকরণ এবং সংশোধন গৃহীত হয়েছে। এই ফোরামটি কড়া নাড়ানোর জন্য কোডটি প্রকাশ করতে আমার কোথায় যেতে হবে সে
সম্পর্কে পরামর্শগুলিও গ্রহণযোগ্য ;-)।

দীর্ঘ পোস্টের জন্য দুঃখিত। আমার বেশি ফ্রি সময় নেই, এবং এই প্রকল্পটি আমার পায়খানাটিতে অদৃশ্য হয়ে গেছে (সম্ভবত বছরের পর বছর ধরে কে জানে?)।


2
আপনি যদি আপনার কোডটিতে প্রতিক্রিয়া চান, কোডরেভিউ.স্ট্যাকেক্সচেঞ্জ.কম এ পোস্ট করুন। (ব্যবহারের নোট এবং উদাহরণগুলি এখানে পাওয়া ভাল)
বেন ভয়েগট

ধন্যবাদ, @ বেনভয়েগ, আমি জানতাম না। দয়া করে একটি প্রশ্ন: আমি যদি করি তবে আমি মনে করি বেশিরভাগ পোস্টটি এই উত্তরটির সদৃশ হওয়া উচিত। এটি কি ক্রস পোস্টিং হিসাবে বিবেচিত হবে?
সোপালাজো ডি অ্যারিরিজ

1
এগুলি একে অপরের সাথে লিঙ্ক করার বিষয়টি নিশ্চিত করুন। ক্রসপোস্টিংয়ের ক্ষতি হ'ল লোকেরা চেষ্টাটিকে নকল করে uplic যদি তারা লিঙ্ক হয়, তবে এটি কোনও সমস্যা নয়
বেন ভয়েগট

এটি একটি খুব ভাল সমাধান। যদি এটি অজগর না প্রয়োজন, আমি এটি ব্যবহার করব। পাইথনের জন্য আমার একটি ব্যক্তিগত, গভীর ঘৃণা আছে। এটি একটি দুর্দান্ত ভাষা, তবে ব্যক্তিগত কারণে যে কোনও কিছুর চেয়ে বেশি, আমি এটি অপছন্দ করি। তবুও, যেহেতু প্রায় কেউ অজগরকে ঘৃণা করে না, এবং আমার ঘৃণা যুক্তিহীন, তাই আমি আপনার সমাধানটিকে উত্সাহিত করেছি, কারণ এটি আমার চেয়ে বাস্তবের কাছাকাছি।
Wyatt8740

1
ধন্যবাদ, @ চার্লেস রবার্তো কানাটো। সমাধানের জন্য আপনি কি আমাকে চ্যাটে বিশদটি দিতে পারেন? চ্যাট রুম "TOUACExt - উইন্ডোজের জন্য SuDo": chat.stackexchange.com/rooms/56716/touacext-sudo-for-windows
সোপালাজো ডি অ্যারিরিজ

1

সিম্পল sudo.bat (nircmd ব্যবহার করে)

Nircmd এখানে ডাউনলোড করা যেতে পারে:
http://www.nirsoft.net/utils/nircmd.html

আমি nircmd এবং নতুন নামকরণ ডাউনলোড nircmdc.exeকরতে nircmd.exe, মূল প্রতিস্থাপন nircmd.exe। আমি তখন এটি সরানো C:\windows\system32

স্ক্রিপ্টে যুক্তিগুলি পাস করার জন্য আমি নীচের ব্যাচ ফাইলটিও তৈরি করেছিলাম।

এটি বলা উচিত যে আমি আমার মেশিনে ইউএসি অক্ষম করেছি, সুতরাং আমার আর এই স্ক্রিপ্টটির প্রয়োজন নেই, তবে এটি উইন্ডোজ ৮ এর মতো কাজ করে It এটি সাইগউইনেও কাজ করে।

@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বা যাই হোক না কেন আপনি একটি 'প্রশাসক' স্তর প্রম্পট পাওয়া উচিত। এমনকি 'প্রশাসক' 'SYSTEM' এর নীচে, যদিও - 'SYSTEM' এর জন্য, ব্যবহার করুন nircmd.exe elevatecmd runassystem <program.exe>। এছাড়াও, আমি আমার মেশিনগুলিতে ইউএসি নিষ্ক্রিয় করেছি :)
ওয়াইট্ট ৮৪০৪

এছাড়াও, আমি মনে করি না যে echoএটি উইন্ডোতে কোনও প্রোগ্রাম। এটি COMMAND.COM/cmd.exe এর অংশ। আমার জন্য যদিও, একটি সাইগউইন ব্যবহারকারী ls.exeএবং echo.exeএটি দুর্দান্ত কাজ করে। এবং আমি আসলে এটি আজ মাসের প্রথমবারের মতো আমার ভাইয়ের অ্যাকাউন্টে লগ ইন না করে ফাইল পরিচালনা করতে ব্যবহার করেছি (তিনি তার কম্পিউটারে প্রতিটি প্রোগ্রামকে তার স্টার্ট মেনুর "স্টার্টআপ" ডিরেক্টরিতে রেখেছিলেন: পি)। স্রেফ অন্যটিতে লগইন করেছেন এবং sudo.bat cmdপ্রশাসক স্তরের প্রম্পট পাবেন যা আমাকে অন্য ব্যবহারকারীর ফাইল পরিচালনা করতে দেয়।
Wyatt8740

সিস্টেম অ্যাকাউন্ট সম্পর্কে আপনার ধারণাটি ভাল। আমি বিকল্প হিসাবে এটি TOUCExt এ যুক্ত করব।
সোপালাজো ডি অ্যারিরিজ

0

উপলভ্য সমাধানটি থেকে অসন্তুষ্ট হয়ে, আমি সুরক্ষা যোগ করতে এবং সেটআপ ও ব্যবহার করা আরও সহজ করার জন্য nu774 এর স্ক্রিপ্ট গ্রহণ করেছি । প্রকল্পটি গিথুবে উপলভ্য

এটি ব্যবহার করতে, কেবল এটি ডাউনলোড করুন cygwin-sudo.pyএবং এর মাধ্যমে চালান python3 cygwin-sudo.py **yourcommand**

আপনি সুবিধার জন্য একটি উপাধি সেট আপ করতে পারেন:

alias sudo="python3 /path-to-cygwin-sudo/cygwin-sudo.py"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.