রুট ব্যবহারকারী / সাইডউইন সমতুল্য?


156

আমি সাইগউইনে একটি বাশ স্ক্রিপ্ট চালানোর চেষ্টা করছি।

আমি Must run as root, i.e. sudo ./scriptnameত্রুটি পেতে ।

chmod 777 scriptname সাহায্য করার জন্য কিছুই করে না।

সাইগউইনের উপর সুডো নকল করার উপায়গুলি আমি অনুসন্ধান করেছি, মূল ব্যবহারকারী যুক্ত করতে, যেহেতু "সু" কল করা ত্রুটি su: user root does not exist, দরকারী কিছু উপস্থাপন করে এবং কিছুই পায় নি।

কারও কোন পরামর্শ আছে?


হ্যালো কেনবি, আপনি যে whatস্ক্রিপ্টটি চালানোর চেষ্টা করছেন তা আমাদের আরও বিশদ দিতে পারেন? সাইগউইন শেলের ভিতরে 'সুডো'র সমতুল্য নেই - সাইগউইন শেলটি চালু করা উইন ব্যবহারকারীর কাছ থেকে অধিকারগুলি হ'ল, তাই "সুডো অজানা কমান্ড" এর মতো ত্রুটিগুলি এড়ানোর জন্য কাইলিউপ্পপিডি লিঙ্কটি ভাল। আপনার ক্ষেত্রে মনে হচ্ছে এটি স্ক্রিপ্টের সাথে একটি নির্দিষ্ট সমস্যা যা আপনি কার্যকর করতে চান।
স্টেফানো

1
সত্যিই, এটি একটি দীর্ঘ অতীত সমস্যা, এবং আমি আসলে মনে করি না স্ক্রিপ্টটি কী ছিল। আগ্রহের জন্য ধন্যবাদ, যদিও।
কেন বেলো

সম্পর্কিত প্রশ্ন এখানে: superuser.com/questions/122418/theres-no-sudo-command-in-cygwin এবং এখানে: stackoverflow.com/questions/22527668/…
বেঞ্জ

উত্তর:


225

আমি সুপার ইউজারে এই প্রশ্নের উত্তর দিয়েছি কিন্তু কেবল তখনই ওপি এই অসহায় جوابটি অগ্রাহ্য করার পরে কেবল তখনই প্রশ্নের একমাত্র উত্তর ছিল।

সাইগউইনে অনুমতিগুলি উন্নত করার সঠিক উপায়টি এখানে সুপার ইউজারে আমার নিজের উত্তর থেকে অনুলিপি করা হয়েছে:

আমি উত্তরটি সাইগউইন মেলিংয়ের তালিকায় পেয়েছি । commandসাইগউইনে উন্নত সুবিধাগুলি সহ চালানোর জন্য , কমান্ডটি এর আগে তৈরি করুন cygstart --action=runas:

$ cygstart --action=runas command

এটি প্রশাসনের পাসওয়ার্ড জানতে চাইলে একটি উইন্ডোজ ডায়ালগ বক্স খুলবে এবং সঠিক পাসওয়ার্ড প্রবেশ করানো হলে কমান্ডটি চালাবে।

এটি সহজে স্ক্রিপ্ট করা যায়, যতক্ষণ ~/binআপনার পথে থাকে। ~/bin/sudoনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

#!/usr/bin/bash
cygstart --action=runas "$@"

এখন ফাইলটি সম্পাদনযোগ্য করুন:

$ chmod +x ~/bin/sudo

এখন আপনি আসল উন্নত সুবিধাসমূহের সাহায্যে কমান্ডগুলি পরিচালনা করতে পারেন :

$ sudo elevatedCommand

~/binআপনার নিজের পথে যোগ করার দরকার হতে পারে । আপনি সাইগউইন সি এল এলিতে নিম্নলিখিত কমান্ডটি চালনা করতে পারেন, বা এটিতে যুক্ত করতে পারেন ~/.bashrc:

$ PATH=$HOME/bin:$PATH

64-বিট উইন্ডোজ 8 এ পরীক্ষিত T

আপনি উপরের পদক্ষেপের পরিবর্তে এই কমান্ডের জন্য একটি উপন্যাস যুক্ত করতে পারেন ~/.bashrc:

# alias to simulate sudo
alias sudo='cygstart --action=runas'

12
দুর্দান্ত উত্তর। আপনার বাশ কোডে কিছু টুইট (নীচে) দিয়ে আমি কমান্ড লাইন থেকে একটি উন্নত কমান্ড চালাতে সক্ষম হয়েছি। এখানে পরিবর্তন আমি আপনার কোড কাজ করা প্রয়োজন আছে: cat << 'EOF' > ~/bin/sudo\n #!/usr/bin/bash\n cygstart --action=runas "$@"\n EOF (আমি চিন্তা করতে পারেন এই মন্তব্যে নতুন লাইন সন্নিবেশ করতে কিভাবে, তাই আমি 'যোগ করেছি \ N কোডে থাকবে) পথ থেকে বাকি = ... অনওয়ার্ড জরিমানা ।
josmith42

3
আচ্ছা বুঝলাম! যদি আমি ভুল না হয়ে থাকি তবে এটি কোনও পাঠ্য সম্পাদক খোলার পরিবর্তে ডিস্কে ফাইল লেখার আপনার উপায়। সুন্দর ধন্যবাদ আপনাকে! কীভাবে বাশে হেরেডোকস ব্যবহার করতে হয় তা আমি জানতাম না!
dotancohen

8
এটির সাথে সমস্যাটি হ'ল এটি একটি সম্পূর্ণ নতুন টার্মিনাল উইন্ডো তৈরি করে (সাধারণত কনহোস্ট)। আউটপুটটি বর্তমান টার্মিনালের সাথে অন্তর্ভুক্ত নয়।
সিএমসিডিগ্রাগনকাই

1
এই জাতীয় জিনিস চালানোর একমাত্র উপায় lsহ'ল এটি একটি দীর্ঘ চলমান প্রক্রিয়াতে যেমন মিন্টি বা বাশ বা জেডএস-এর মতো মোড়ক। তবে এটি সমস্ত একটি পৃথক টার্মিনালে প্রদর্শিত হবে। যা এই মুহুর্তে, আমি কেবল এটিএমইউ ব্যবহার করে জিইউআইয়ের মাধ্যমে খুলতে পারি।
সিএমসিডিগ্রাগনকাই

1
উদ্ধৃতিগুলি ছাড়াই, এমনকি উদ্ধৃত যুক্তিগুলি আবার @ ক্যাট্রিয়েলগুলিতে বিভক্ত হয়। কোট সঙ্গে, "$@"ভালো কিছু করার জন্য বিস্তৃতি "$1" "$2" "$3" ...ছাড়া, $@বিস্তৃতি $1 $2 $3...
পেরেক

51

অ্যাডমিনিস্ট্রেটর হিসাবে আপনার সম্ভবত সাইগউইন শেলটি চালানো দরকার। আপনি ডানদিকে শর্টকাটে ক্লিক করতে পারেন এবং প্রশাসক হিসাবে রান ক্লিক করতে পারেন বা শর্টকাটের বৈশিষ্ট্যে যেতে পারেন এবং এটি সামঞ্জস্যযোগ্যতা বিভাগে পরীক্ষা করতে পারেন। খালি সাবধান .... রুট অনুমতিগুলি বিপজ্জনক হতে পারে।


1
যেহেতু এই প্রশ্নটির বিপরীতে এই প্রশ্নটি ভাল উত্তর ছাড়াই জিজ্ঞাসা করা হয়েছে, তিন বছরে, আমি নীচের উত্তরে বিদ্যমান সাইগউইন উইন্ডোতে একটি কমান্ডের জন্য অনুমতি বাড়ানোর সঠিক উপায় খুঁজে পেয়েছি । সুতরাং এটি sudoলিনাক্সের মতো কাজ করে ।
ডটানকোহেন

Win10 64-এ আমার জন্য কাজ করেছেন rs chown --changes --verbose --recursive [USER] /cygdrive/c/[PATH TO FOLDER]/*। এটি ছাড়া আমি আর সিএনএসড ফোল্ডার এবং ফাইলগুলি অ্যাক্সেস করতে পারি না।
lowtechsun

25

ডটানকোহেনের উত্তরে বিল্ডিং আমি একটি উপনাম ব্যবহার করছি:

alias sudo="cygstart --action=runas"

কবজ হিসাবে কাজ করে:

sudo chown User:Group <file>

এবং যদি আপনার সিস্টেস্টাল ইনস্টল করা থাকে তবে আপনি খুব সহজেই সিস্টেম ব্যবহারকারী হিসাবে একটি কমান্ড শেল শুরু করতে পারেন

sudo psexec -i -s -d cmd

9

আমি সাইডো-ফর-সাইগউইনকে পেয়েছি , সম্ভবত এটি কাজ করবে, এটি একটি ক্লায়েন্ট / সার্ভার অ্যাপ্লিকেশন যা উইন্ডোজ (পিটিআই) এবং বাচ্চার প্রক্রিয়া এবং আই / ও প্রক্রিয়া ব্রিজ করার জন্য একটি পাইথন স্ক্রিপ্ট ব্যবহার করে।

এটি উইন্ডোজ এবং পাইথন মডিউল গ্রিনলেট এবং সাইগউইনে ইভেন্টলেট মধ্যে অজগর প্রয়োজন।


আমি এটি এখন কিছুক্ষণ ব্যবহার করছি এবং এটি ইভেন্ট কোনও সমস্যা ছাড়াই ন্যানোর মতো ইন্টারেক্টিভ স্টাফগুলি পরিচালনা করে!
মেম্ফিজ


4

দেখে মনে হচ্ছে এটি cygstart/runasসঠিকভাবে পরিচালনা করছে না "$@"এবং এইভাবে কমান্ডগুলির স্পেসগুলিতে যুক্তি রয়েছে (এবং সম্ভবত অন্যান্য শেল মেটা-অক্ষর - আমি পরীক্ষা করিনি) সঠিকভাবে কাজ করবে না।

আমি ঠিক করেছি একটি ছোট sudoস্ক্রিপ্ট লিখব যা পরামিতিগুলি সঠিকভাবে করে এমন একটি অস্থায়ী স্ক্রিপ্ট লিখে কাজ করে।

#! /bin/bash

# If already admin, just run the command in-line.
# This works on my Win10 machine; dunno about others.
if id -G | grep -q ' 544 '; then
   "$@"
   exit $?
fi

# cygstart/runas doesn't handle arguments with spaces correctly so create
# a script that will do so properly.
tmpfile=$(mktemp /tmp/sudo.XXXXXX)
echo "#! /bin/bash" >>$tmpfile
echo "export PATH=\"$PATH\"" >>$tmpfile
echo "$1 \\" >>$tmpfile
shift
for arg in "$@"; do
  qarg=`echo "$arg" | sed -e "s/'/'\\\\\''/g"`
  echo "  '$qarg' \\" >>$tmpfile
done
echo >>$tmpfile

# cygstart opens a new window which vanishes as soon as the command is complete.
# Give the user a chance to see the output.
echo "echo -ne '\n$0: press <enter> to close window... '" >>$tmpfile
echo "read enter" >>$tmpfile

# Clean up after ourselves.
echo "rm -f $tmpfile" >>$tmpfile

# Do it as Administrator.
cygstart --action=runas /bin/bash $tmpfile

1
গৃহীত উত্তরটি উইন on এ আমার পক্ষে কার্যকর হয়নি তবে এই উত্তরটি কবজির মতো কাজ করেছে। আমি এলিভেটেড বেসরকারীদের সাথে এক্সিম-কনফিগার সেট আপ করতে সক্ষম হয়েছি এবং তারপরে /etc/exim.conf ফাইলটি vim- সম্পাদনা করতে সক্ষম হয়েছি। বাক্পটুতাপূর্ণ.
ন্যাঙ্কার

2

এই উত্তরটি অন্য উত্তরের ভিত্তিতে তৈরি । সবার আগে, নিশ্চিত হয়ে নিন যে আপনার অ্যাকাউন্ট প্রশাসক গোষ্ঠীতে রয়েছে।

এরপরে, নিম্নলিখিত বিষয়বস্তু সহ একটি জেনেরিক "রানাস-অ্যাডমিন.বাট" ফাইল তৈরি করুন:

@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
    cscript //E:JScript //nologo "%~f0" %*
    @goto :EOF
)
FOR %%A IN (%*) DO (
    "%%A"
)
@goto :EOF
@end @ELSE
args = WScript.Arguments;
newargs = "";
for (var i = 0; i < args.length; i++) {
    newargs += "\"" + args(i) + "\" ";
}
ShA=new ActiveXObject("Shell.Application");
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+" "+newargs+"\"","","runas",5);
@end

তারপরে ব্যাচের ফাইলটি এভাবে চালিত করুন:

./runas-admin.bat "<command1> [parm1, parm2, ...]" "<command2> [parm1, parm2, ...]"

এক্সেক্সম্পেলের জন্য:

./runas-admin.bat "net localgroup newgroup1 /add" "net localgroup newgroup2 /add"

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


2

একটি নতুন প্রস্তাবে GitHub থেকে CygWin জন্য sudo উন্নত এই থ্রেড নাম TOUACExt :

  • স্বয়ংক্রিয়ভাবে Sudoserver.py খোলে।
  • সময়সীমা (15 মিনিটের ডিফল্ট) পরে স্বয়ংক্রিয়ভাবে Sudoserver.py বন্ধ করে দেয়।
  • অ্যাডমিন ব্যবহারকারীদের জন্য ইউএসি উন্নয়নের অনুরোধটি হ্যাঁ / কোনও স্টাইলের অনুরোধ করুন।
  • প্রশাসনিক নন-ব্যবহারকারীর জন্য প্রশাসক ব্যবহারকারী / পাসওয়ার্ডের অনুরোধ করুন।
  • অ্যাডমিন অ্যাকাউন্টগুলির সাথে দূরবর্তীভাবে (এসএসএইচ) কাজ করে।
  • লগ তৈরি করে।

এখনও প্রাক-বিটাতে রয়েছে তবে মনে হচ্ছে এটি কাজ করছে।


1

আমি এখানে গুগলের মাধ্যমে অবতরণ করেছি এবং আমি আসলে বিশ্বাস করি যে আমি সাইগউইনে সম্পূর্ণরূপে কার্যকারী রুট প্রমোট অর্জনের একটি উপায় খুঁজে পেয়েছি।

এখানে আমার পদক্ষেপ।

প্রথমে আপনাকে উইন্ডোজ প্রশাসকের অ্যাকাউন্টটির নতুন নাম "রুট" করতে হবে এটি শুরু ম্যানু খোলার মাধ্যমে এবং "gpedit.msc" টাইপ করে এটি করুন

স্থানীয় কম্পিউটার নীতি> কম্পিউটার কনফিগারেশন> উইন্ডোজ সেটিংস> সুরক্ষা সেটিংস> স্থানীয় নীতি> সুরক্ষা বিকল্পসমূহ> অ্যাকাউন্টসমূহ: প্রশাসকের অ্যাকাউন্টটির নাম পরিবর্তন করুন

তারপরে আপনাকে অ্যাকাউন্টটি সক্ষম করতে হবে যদি এটি এখনও সক্ষম না হয়। স্থানীয় কম্পিউটার নীতি> কম্পিউটার কনফিগারেশন> উইন্ডোজ সেটিংস> সুরক্ষা সেটিংস> স্থানীয় নীতি> সুরক্ষা বিকল্প> অ্যাকাউন্ট: প্রশাসকের অ্যাকাউন্টের স্থিতি

এখন লগ আউট এবং রুট অ্যাকাউন্টে লগ ইন করুন।

এখন সাইগউইনের জন্য পরিবেশের পরিবর্তনশীল সেট করুন। সহজ উপায়টি করতে: আমার কম্পিউটার> বৈশিষ্ট্যগুলিতে ডান ক্লিক করুন

(বাম সাইডবারে) "উন্নত সিস্টেম সেটিংস" ক্লিক করুন

নীচের কাছাকাছি "এনভায়ারোমেন্ট ভেরিয়েবলস" বোতামটি ক্লিক করুন

"সিস্টেম ভেরিয়েবলস" এর অধীনে "নতুন ..." বোতামটি ক্লিক করুন

নামের জন্য উদ্ধৃতি ছাড়াই "সাইগউইন" রাখুন। মানটির জন্য, আপনার সাইগউইন রুট ডিরেক্টরিতে প্রবেশ করুন। (খনি ছিল সি: \ সাইগউইন)

ডেস্কটপে ফিরে যেতে ওকে টিপুন এবং এগুলি বন্ধ করুন।

একটি সাইগউইন টার্মিনাল খুলুন (সাইগউইন.বাট)

/ Etc / passwd ফাইলটি সম্পাদনা করুন এবং লাইনটি পরিবর্তন করুন

প্রশাসক : অব্যবহৃত: 500: 503 : U- MACHINE \ প্রশাসক , এস-1-5-21-12345678-1234567890-1234567890- 500: / হোম / প্রশাসক : / বিন / বাশ

এটির জন্য (আপনার নম্বরগুলি, এবং মেশিনের নাম পৃথক হবে, কেবল নিশ্চিত করুন যে আপনি হাইলাইট করা নম্বরগুলি 0 তে পরিবর্তন করেছেন!)

রুট : অব্যবহৃত: 0: 0 : U- MACHINE \ রুট , এস-1-5-21-12345678-1234567890-1234567890- 0: / মূল : / বিন / ব্যাশ

এখন যা শেষ হয়েছে, পরবর্তী বিটটি "su" কমান্ডটিকে কাজ করবে। (নিখুঁতভাবে নয়, তবে এটি ব্যবহারের জন্য যথেষ্ট পরিমাণে কাজ করবে I আমি মনে করি না স্ক্রিপ্টগুলি সঠিকভাবে কাজ করবে, তবে ওহে, আপনি এটি এতদূর পেয়েছেন, সম্ভবত আপনি উপায়টি খুঁজে পেতে পারেন please এবং দয়া করে ভাগ করুন))

এই চুক্তিটি চূড়ান্ত করতে সাইগউইনে চালাও।

mv /bin/su.exe /bin/_su.exe_backup
cat > /bin/su.bat << "EOF"
@ECHO OFF
RUNAS /savecred /user:root %cygwin%\cygwin.bat
EOF
ln -s /bin/su.bat /bin/su
echo ''
echo 'All finished'

রুট অ্যাকাউন্ট থেকে লগ আউট এবং আপনার সাধারণ উইন্ডোজ ব্যবহারকারী অ্যাকাউন্টে ফিরে আসুন।

এত কিছুর পরেও এক্সপ্লোরারটিতে ডাবল ক্লিক করে নতুন "su.bat" ম্যানুয়ালি চালান। আপনার পাসওয়ার্ডটি প্রবেশ করান এবং এগিয়ে যান এবং উইন্ডোটি বন্ধ করুন।

এখন সাইগউইন থেকে su কমান্ড চালানোর চেষ্টা করুন এবং দেখুন যে সবকিছু ঠিকঠাক হয়েছে কিনা।


1

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

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

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

alias sudo="python3 /path-to-cygwin-sudo/cygwin-sudo.py"

0

কোনও ডিরেক্টরি প্রসঙ্গ মেনু থেকে বাশ বা সেন্টিমিডি চলমান প্রশাসক উইন্ডোটি পেতে এটি ব্যবহার করুন। ডিরেক্টরি নামের উপর ডান ক্লিক করুন, এবং এন্ট্রি নির্বাচন করুন বা হাইলাইট করা বোতামটি চাপুন।

এটি চের সরঞ্জাম এবং দুর্ভাগ্যক্রমে লিঙ্ক_বয়ে থেকে উত্তর (আমার জন্য) কাজ করছে না এর উপর ভিত্তি করে। উইন্ডোজ 8 ব্যবহার করে এটি আমার পক্ষে ভাল কাজ করে,

পার্শ্ব প্রতিক্রিয়া হ'ল অ্যাডমিন সিএমডি উইন্ডোতে ভিন্ন রঙ। এটি ব্যাশে ব্যবহার করতে, আপনি প্রশাসক ব্যবহারকারীর .bashrc ফাইলটি পরিবর্তন করতে পারেন।

আমি চালাতে "ব্যাকগ্রাউন্ড" সংস্করণ (একটি ওপেন ডিরেক্টরিতে ডান ক্লিক করুন) পাই না d এটি যোগ করতে নির্দ্বিধায়।

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="&Bash Prompt Here"
"Icon"="C:\\cygwin\\Cygwin.ico"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="C:\\cygwin\\bin\\bash -c \"/bin/xhere /bin/bash.exe '%L'\""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash_root]
@="&Root Bash Prompt Here"
"Icon"="C:\\cygwin\\Cygwin.ico"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash_root\command]
@="runas /savecred /user:administrator \"C:\\cygwin\\bin\\bash -c \\\"/bin/xhere /bin/bash.exe '%L'\\\"\""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd]
@="&Command Prompt Here"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd\command]
@="cmd.exe /k cd %L"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd_root]
@="Roo&t Command Prompt Here"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd_root\command]
@="runas /savecred /user:administrator \"cmd.exe /t:1E /k cd %L\""

0

অ্যাডমিনিস্ট্রেটর সুবিধাগুলি পরিচালনার জন্য সাইগউইন শেল এবং সংশ্লিষ্ট সাব-শেলগুলি পাওয়ার খুব সহজ উপায় হ'ল প্রাথমিক শেলটি খোলে এমন লিঙ্কের বৈশিষ্ট্য পরিবর্তন করা ।

নিম্নলিখিতটি উইন্ডোজ 7+ এর জন্য বৈধ (সম্ভবত পূর্ববর্তী সংস্করণগুলির জন্যও, তবে আমি পরীক্ষা করে দেখিনি)

আমি সাধারণত একটি cygwin-লিঙ্ক থেকে cygwin শেল শুরু শুরু বোতাম (বা ডেস্কটপ)। তারপরে, আমি ট্যাবগুলিতে সাইগউইন-লিঙ্কের বৈশিষ্ট্যগুলি পরিবর্তন করেছি

/ সামঞ্জস্যতা / অধিকার স্তর /

এবং বাক্সটি চেক করে,

"প্রশাসক হিসাবে এই প্রোগ্রামটি চালান"

এটি প্রশাসকের সুবিধার্থে এবং সংশ্লিষ্ট সাব-শেলগুলির সাথেও সাইগউইন শেলটি খোলার অনুমতি দেয়।


একমাত্র সামান্য সমস্যা হ'ল এটি প্রশাসক হিসাবে খোলা আছে কিনা তা আপনি বলতে পারবেন না।
এডউইন প্রট 18

0

sudoবিভিন্ন অপারেটিং সিস্টেমে বাস্তবায়নের বিষয়ে কিছু বিশদ অনুসন্ধানে আমি এই আলোচনার সাথে সাক্ষাত করেছিলাম । এটি পড়ে আমি দেখতে পেলাম যে @ ব্রায়ান-হোয়াইট ( https://stackoverflow.com/a/42956057/3627676 ) দ্বারা সমাধানটি কার্যকর তবে কিছুটা উন্নতি করা যেতে পারে। আমি অস্থায়ী ফাইল তৈরি করা এড়িয়ে গিয়ে একক স্ক্রিপ্টের মাধ্যমে সবকিছু সম্পাদন করতে প্রয়োগ করেছি।

এছাড়াও আমি একক উইন্ডো / কনসোলের মধ্যে আউটপুট উন্নতির পরবর্তী ধাপটি তদন্ত করেছি। দুর্ভাগ্যক্রমে, কোনও সাফল্য ছাড়াই। আমি STDOUT / STDERR ক্যাপচার করতে এবং মূল উইন্ডোতে মুদ্রণের জন্য নামযুক্ত পাইপগুলি ব্যবহার করার চেষ্টা করেছি। তবে শিশু প্রক্রিয়া নামক পাইপগুলিতে লিখেনি। তবে নিয়মিত ফাইলে লেখা ভাল কাজ করে।

আমি মূল কারণটি অনুসন্ধানের জন্য কোনও প্রচেষ্টা বাদ দিয়ে বর্তমান সমাধানটি যেমন রেখেছি। আশা করি আমার পোস্টটিও কার্যকর হতে পারে।

উন্নতি:

  • কোনও অস্থায়ী ফাইল নেই
  • কমান্ড লাইন বিকল্পগুলি বিশ্লেষণ এবং পুনর্গঠন করা হবে না
  • উন্নত কমান্ড অপেক্ষা করুন
  • ব্যবহার করুন minttyবা bash, যদি প্রথমটি পাওয়া যায় না
  • কমান্ডের প্রস্থান কোডটি ফেরত দিন
    #! / বিন / ব্যাশ

    # প্রশাসক হওয়ার কারণে সরাসরি কমান্ডটি প্রার্থনা করুন
    id -G | গ্রেপ-কিউডব্লিউ 544 && {
        "$ @"
        প্রস্থান $?
    }

    # সিওয়াইজি_সুডো ভেরিয়েবল কমান্ড অনুরোধ নিয়ন্ত্রণ করতে ব্যবহৃত হয়
    [-z "$ CYG_SUDO"] && {
        মিন্টি = "$ (যা পুদিনা 2> / দেব / নাল)"
        CYG_SUDO = "$$" রফতানি করুন
        cygstart --wait --action = runas int mintty / bin / bash "b 0" "$ @"
        প্রস্থান $?
    }

    # এখন আমরা সক্ষম হয়েছি:
    # - কমান্ডটি চালু করুন
    # - বার্তাটি প্রদর্শন করুন
    # - প্রস্থান কোডটি ফেরত দিন
    "$ @"
    RETVAL = $?

    প্রতিধ্বনি "$ 0: উইন্ডো বন্ধ করতে টিপুন ..."
    পড়া

    প্রস্থান $ পুনরায়


cygstart --wait --action=runas $mintty /bin/bash "$0" "$@"কোনও যুক্তিতে ফাঁক থাকলে কীভাবে ভাঙবে না? সাইগস্টার্ট / রুনাসের মধ্য দিয়ে যাওয়ার সময় এটি সর্বদা আমার জন্য ছিল।
ব্রায়ান হোয়াইট

0

@ মাদ-খোরের উত্তরের ভিত্তিতে আমি সিসউইনকে নিয়েছিলাম su.exe, এটি সংরক্ষণ করে manufacture-syswin-su.exeএবং এই র‍্যাপার স্ক্রিপ্টটি লিখেছি। এটি কমান্ডের stdout এবং stderr এর পুনঃনির্দেশ পরিচালনা করে, সুতরাং এটি একটি পাইপ ইত্যাদিতে ব্যবহার করা যায় এছাড়াও স্ক্রিপ্টটি প্রদত্ত কমান্ডের স্থিতি সহ প্রস্থান করে।

সীমাবদ্ধতা:

  • সিসউইন-সু বিকল্পগুলি বর্তমানে বর্তমান ব্যবহারকারীকে ব্যবহারের জন্য হার্ডকোডযুক্ত। env USERNAME=...স্ক্রিপ্টের অনুরোধের প্রস্তুতি এটিকে ওভাররাইড করে। অন্যান্য অপশনগুলির প্রয়োজন হলে স্ক্রিপ্টকে সিস্টউন-সু এবং কমান্ড আর্গুমেন্টের মধ্যে পার্থক্য করতে হবে, উদাহরণস্বরূপ প্রথমে বিভাজন --
  • যদি ইউএসি প্রম্পট বাতিল বা প্রত্যাখ্যান করা হয় তবে স্ক্রিপ্টটি স্তব্ধ হয়ে যায়।

#!/bin/bash
set -e

# join command $@ into a single string with quoting (required for syswin-su)
cmd=$( ( set -x; set -- "$@"; ) 2>&1 | perl -nle 'print $1 if /\bset -- (.*)/' )

tmpDir=$(mktemp -t -d -- "$(basename "$0")_$(date '+%Y%m%dT%H%M%S')_XXX")
mkfifo -- "$tmpDir/out"
mkfifo -- "$tmpDir/err"

cat >> "$tmpDir/script" <<-SCRIPT
    #!/bin/env bash
    $cmd > '$tmpDir/out' 2> '$tmpDir/err'
    echo \$? > '$tmpDir/status'
SCRIPT

chmod 700 -- "$tmpDir/script"

manufacture-syswin-su -s bash -u "$USERNAME" -m -c "cygstart --showminimized bash -c '$tmpDir/script'" > /dev/null &
cat -- "$tmpDir/err" >&2 &
cat -- "$tmpDir/out"
wait $!
exit $(<"$tmpDir/status")

-1

এটি নিজেকে পুরোপুরি পরীক্ষা করতে পারছি না, এটি চেষ্টা করার জন্য আমার কাছে উপযুক্ত স্ক্রিপ্ট নেই এবং আমি লিনাক্স বিশেষজ্ঞ নই, তবে আপনি সম্ভবত খুব কাছাকাছি কোনও কিছু হ্যাক করতে সক্ষম হতে পারেন।

আমি এই পদক্ষেপগুলি চেষ্টা করে দেখেছি এবং এগুলি কাজ করার জন্য 'মনে হচ্ছে', তবে এটি আপনার প্রয়োজনের জন্য যথেষ্ট কিনা তা জানেন না।

কোনও 'রুট' ব্যবহারকারীর অভাব ঘটাতে:

  • 'রুট' নামে পরিচিত লোকাল উইন্ডোজ মেশিনে একটি ব্যবহারকারী তৈরি করুন, এটিকে 'প্রশাসকগণ' দলের সদস্য করুন make
  • সকল ব্যবহারকারীর জন্য 'চালক হিসাবে চালান' হিসাবে বিন / বাশ.এক্সএইকে চিহ্নিত করুন (স্পষ্টতই আপনাকে এটি যখন প্রয়োজন হবে তখনই এটি চালু / বন্ধ করতে হবে)
  • সাইগউইন.ব্যাট ফাইলটিতে ডান ক্লিক করার সময় উইন্ডোজ এক্সপ্লোরারে বাম শিফট বোতামটি ধরে রাখুন
  • 'ভিন্ন ব্যবহারকারী হিসাবে চালান' নির্বাচন করুন
  • প্রবেশ করান। The ব্যবহারকারী নাম এবং তারপরে আপনার পাসওয়ার্ড হিসাবে রুট।

এরপরে এটি আপনাকে সাইগউইনে 'রুট' নামে পরিচিত হিসাবে চালিত করে, যা বাশ.এক্সে ফাইলটিতে 'অ্যাডমিনিস্ট্রেটর অ্যাড অ্যাডমিনিস্ট্রেটর' এর সাথে মিলিত যথেষ্ট হতে পারে।

তবে আপনার এখনও একটি সুডো দরকার।

আমি এটিকে নকল করেছি (এবং আরও লিনাক্স জ্ঞানের সাথে অন্য কেউ সম্ভবত এটি আরও ভাল জাল করতে পারে) / বিনে 'সুডো' নামক একটি ফাইল তৈরি করে এবং পরিবর্তে কমান্ডটি প্রেরণের জন্য এই কমান্ড লাইনটি ব্যবহার করে:

su -c "$*"

কমান্ড লাইন 'sudo vim' এবং অন্যরা আমার পক্ষে ঠিক কাজ করে বলে মনে হচ্ছে, তাই আপনি এটি চেষ্টা করে দেখতে পারেন।

এটি আপনার প্রয়োজনের জন্য কাজ করে কিনা তা জানতে আগ্রহী হন।


-1

আমি সাধারণত যা করি তা হ'ল আমার কম্পিউটারের যে কোনও জায়গা থেকে প্রশাসনিক সুযোগ-সুবিধাগুলি সহ একটি সাইগউইন শেল খোলার জন্য একটি রেজিস্ট্রি "ওপেন হিয়ার" সহায়ক রয়েছে।

সচেতন থাকুন আপনাকে সাইগউইন "চের" প্যাকেজ ইনস্টল করতে হবে, chere -i -mপ্রথমে একটি উন্নত সাইগউইন শেল থেকে " " ব্যবহার করুন ।

ধরে নিচ্ছি আপনার সাইগউইন ইনস্টলেশন সি তে রয়েছে: সিগুইন ...

রেজিস্ট্রি কোডটি এখানে:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

[-HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

[-HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

আশাকরি এটা সাহায্য করবে. যদি তোমার জন্য এটি কাজ করে, তাহলে আমাকে জানাও. ধন্যবাদ।

PS: আপনি এই কোডটি দখল করতে পারেন, এটি অনুলিপি করে এটি কপি এবং পেস্ট করতে পারেন এবং এটি চালানোর জন্য একটি নেম.রেগ ফাইলে এটি সংরক্ষণ করতে পারেন ... অথবা আপনি মানগুলি ম্যানুয়ালি যুক্ত করতে পারেন।


-5

চেষ্টা করুন:

chmod -R ug+rwx <dir>

<dir>ডিরেক্টরিটি যেখানে আপনি অনুমতি পরিবর্তন করতে চান সেখানে।


5
সে কীভাবে তাকে জিজ্ঞাসা করবে, তাকে কীভাবে শিকড় তৈরি করবে?
নিকানা রেকলাভিক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.