it-swarm.asia

هل هناك أي أمر "سودو" لنظام Windows؟

أعمل دائمًا على حساب غير مسؤول على جهاز الكمبيوتر الذي يعمل بنظام Windows. أحتاج أحيانًا إلى تثبيت البرامج التي تتطلب وصول المسؤول. نظرًا لأنني في الغالب أستخدم موجه أوامر Windows ، فهل هناك أمر Windows لتصعيد الامتيازات ، على غرار الأمر Linux Linux Sudo؟

435
ukanth

runas الأمر.

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

مجرد تشغيل:

runas /noprofile /user:Administrator cmd 

لبدء أمر شل كمسؤول

262
Davy Landman

لقد اكتشفت الارتفاع اليوم الذي "ينفذ أمرًا برفع امتياز UAC. هذا مفيد للعمل داخل موجه الأوامر أو مع الملفات الدفعية." ليس مثل Sudo ، فهو يغير المستخدم المنفذ إلى المسؤول ، لكن بناء الجملة الخاص به أكثر سهولة في الاستخدام من runas ، ويمكن أن يحتفظ بالدليل الحالي ، مما يتيح استخدام المسارات النسبية.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

الغرض من Elevate ليس العمل حول UAC (التحكم في حساب المستخدم) أو تجاوزه ، ولكن العمل به. طالما تم تمكين UAC هناك له أن يكون نوع من الموجه عند بعض نقطة في العملية. إذا كنت بحاجة إلى التخلص من المطالبة تمامًا ، فعليك تعطيل UAC .

تخفف نقطة الألم المرتفعة من عملية غير محددة من قشرة شل ، ومن ثم تستمر كالمعتاد. بدون ذلك ، يجب أن تبدأ أمرًا متميزًا ، انقر فوق النقر بزر الماوس الأيمن> "تشغيل كمسؤول" ، والذي لا يمكن كتابته بسهولة ، قبل محاولة الأمر المميز.

120
matt wilkie

يمكنك استخدام الأمر runas الذي يشبه نوعًا ما ، أو يمكنك التحقق من المشروع Sudo for Windows في SourceForge الذي يضيف أمر Sudo.

الفرق دقيق:

دعنا نقول لديك اثنين من المستخدمين. بوب مستخدم عادي وجيمس مسؤول.

إذا قمت بتسجيل الدخول باسم Bob واستخدمت "runas james acommand" ، فسيتم تشغيل الأمر كما لو كان يتم تشغيله بواسطة James ، بحيث يصل إلى إعدادات مستخدم James وأي تغييرات مستخدم تدخل في James My Documents & folder settings ، إلخ. إذا كنت تقوم بتثبيت تطبيق ما ، على سبيل المثال ، سيتم تثبيته كـ James ، وليس كـ Bob.

إذا كان بوب من ناحية أخرى يقوم بـ "Sudo acommand" ، فسيظل الأمر يعمل باسم Bob ، لكن مع أذونات مرتفعة - تمامًا مثل أمر Linux Sudo. لمنع أي مستخدم من التمكن من Sudo ، يجب عليك تحديد مجموعة مستخدمي sudoers تحتوي على قائمة المستخدمين العاديين الذين لديهم إذن بالارتقاء باستخدام Sudo. لا يزال يتعين على المستخدمين تقديم بيانات الاعتماد قبل الارتفاع.

أحيانًا يكون الفرق غير مهم ، وأحيانًا يكون مهمًا ، وأجد أن كلا الأمرين يمكن أن يكونا مفيدين.

66
Simon P Stevens

يمكنك أيضًا استخدام Script Elevation PowerToys .

39
Quog

إذا كنت مستعدًا للتبديل إلى وحدات تحكم بديلة ، فهناك ConEmu (أنا المؤلف). واحدة من ميزاته - القدرة على تشغيل كل من علامات التبويب مرتفعة وغير مرتفعة في نافذة واحدة ConEmu. قد يتم تشغيل علامات التبويب بأوراق اعتماد مختلفة أيضًا.

لراحة المستخدم ، يوجد ملف دفعي csudo.cmd (يمكن اعتماده بسهولة للباش). قراءة وصف كامل في ويكي المشروع . باختصار ، عند تشغيل بعض الأوامر من علامة تبويب غير مرتفعة موجودة ، على سبيل المثال

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

سيبدأ ConEmu dism في وحدة التحكم/علامة التبويب الجديدة المرتفعة (السابقة UAC Prompt في Vista أو مربع تسجيل الدخول في XP).

بشكل افتراضي ، يبدأ csudo بوحدة تحكم جديدة في قسم (قد تكون التغييرات عن طريق تحرير محتويات csudo.cmd).

وبالطبع يمكنك إعادة تسميته إلى Sudo.cmd إذا كنت تحب كلمة "الكلاسيكية" Sudo.

Sudo in ConEmu/Windows

28
Maximus

طريقة سريعة:

ثلاث خطوات لإضافة سودو.

  1. افتح PowerShell.

  2. انسخ النص التالي (Ctrl + C) والصقه في PowerShell (Alt + Space + E + P):

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\Sudo.ps1" | Out-File $profile -append; "function Sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\Sudo.ps1; powershell
  1. نجاح Enter.

سيتم تمكين الأمر Sudo بشكل دائم في PowerShell.

الاستعمال:

Sudo <process-name> [param1 [param2 [param3]]]

أمثلة:

Sudo Explorer
Sudo notepad
Sudo powershell
Sudo cmd
Sudo taskmgr
Sudo tasklist
Sudo taskkill /IM Skype.exe /PID 8496

طريقة طويلة للتعلم:

ملاحظة: قمت بخلط البرنامج النصي من كلا المادتين لإنشاء البرنامج النصي المذكور أعلاه. بدلاً من لصق البرنامج النصي يدويًا في المفكرة أضفت عبارات Out-File لحفظ ملفات ps1 و $profile من البرنامج النصي.

نصيحة: إذا لم تكن معجبًا كبيرًا بنوافذ UAC المنبثقة (مثلي) ، فاحفظ التالي في ملف * .reg وقم بتشغيله:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
24
vulcan raven

إذا كنت تقوم بذلك على Windows ، فبالإضافة إلى الأمر "تشغيل باسم" كما هو مذكور في بضع إجابات أخرى ، هناك أيضًا طرق للقيام بذلك باستخدام الماوس.

إذا كنت باستمرار Shift أثناء النقر بزر الماوس الأيمن فوق معظم الملفات القابلة للتنفيذ في نظام التشغيل Windows ، يجب أن تلاحظ بعض الخيارات المتقدمة. أحد هذه الخيارات هو الخيار "Run As..." (أعتقد أنه يسمى "Run As Administrator" من نظام التشغيل Vista وما بعده).

يمكنك أيضًا تنزيل إصدار أكثر تقدمًا من RunAs من Microsoft ، يطلق عليه ShellRunAs ، يتضمن هذا تحسينات على أمر RunAs المدمج ، في أوضاع سطر الأوامر والرسومات ، بما في ذلك السماح لك بحفظ بيانات اعتماد الحساب

20
GAThrawn

كما اكتشفت على الأرجح ، سوف تتيح لك runas تشغيل كمستخدم آخر ولكن لا يمكنها القيام بالارتفاع ولا تتجاوز الدلائل الحالية أو متغيرات البيئة أو خطوط الأوامر الطويلة.

هاميلتون سي شل يحل ذلك مع سو حقيقية وسودو. su يتيح لك تشغيل أمر كمستخدم آخر ؛ يتيح لك Sudo (في الواقع اسم مستعار لـ su) تشغيل أمر مرتفع. يمكنك أيضًا القيام بالأمرين ، تشغيل مرتفع كمستخدم مختلف. يتم تمرير الدلائل الحالية ومتغيرات البيئة وخطوط الأوامر الطويلة عن طريق مصافحة ذاكرة مشتركة بين su قيد التشغيل في سياق المتصل ونسخة من نفسه قيد التشغيل كفاصل مع بيانات الاعتماد الجديدة التي تبدأ بعد ذلك الطفل. الكشف الكامل: أنا المؤلف.

3
Nicole Hamilton

Surun هو تطبيق مجاني مفتوح المصدر يسمح لبرامج معينة بالعمل مع حقوق إدارية ، دون توفير كلمة مرور دون تغيير سجل المستخدم أو تعديل متغيرات البيئة.

عندما كنت أستخدم Windows XP يساعدني هذا التطبيق كثيرًا. Beta يعمل تحت ويندوز 7.

3
diimdeep

هناك حزمة شوكولاته لها اسم مناسب سودو . يمكنك تثبيت الحزمة مع الشوكولاته باستخدام هذا الأمر:

choco install -y Sudo

ثم في أي من Windows/MS Shell لديك لاستخدامه ، يمكنك استخدام Sudo كما هو متوقع.

3
ypid

بديل Sudo للعمل مع محطة Cygwin mintty هو وضع البرنامج النصي التالي في PATH للمستخدم:

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"[email protected]\"

بالنسبة لي ، هذا هو البديل الوحيد القابل للتطبيق لرفع امتيازات البرامج مثل vim أو cygrunsrv أثناء العمل في أحد الأجهزة الطرفية على Windows.

1
karafior

هذا السيناريو يقوم بالمهمة:

@echo Set objShell = CreateObject("Shell.Application") > %temp%\Sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\Sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\Sudo.tmp.vbs
@cscript //NoLogo %temp%\Sudo.tmp.vbs

احفظه كـ Sudo.cmd ثم أضفه إلى PATH

ملاحظة: runas تعني في هذا السياق "تشغيل كمسؤول" وليس "تشغيل كمستخدم آخر"

مأخوذة من هنا وتحريرها قليلاً لإزالة رأس cscript.exe من الإخراج

1
Charles Milette

إن أبسط الحلول من وجهة نظري هو الاستفادة من powerhell للقيام بهذا العمل ، وهو أمر محمول وسيطلب من المستخدم استخدام UAC.

يمكنك فقط تشغيل هذا في أي Shell (كمد أو بوويرشيل)

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
1
twall

النصي vbs التالي يقوم بالخدعة لي. أضعه على C:\Windows\System32

Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
   args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
   args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing

مثال للاستخدام على أمر موجه Sudo net start service

0
ceztko