Gsudo هو sudo
المكافئ لنظام التشغيل Windows ، مع تجربة مستخدم مماثلة مثل Unix/Linux Sudo الأصلي. يسمح لك بتشغيل أمر (أو إعادة إطلاق قذيفك الحالي) بأذونات مرتفعة ، في نافذة وحدة التحكم الحالية أو علامة جديدة.
ما عليك سوى إعداد gsudo
(أو الاسم المستعار sudo
) إلى أمرك وسيتم تشغيله. ل PowerShell استخدم هذا بناء الجملة: gsudo { ScriptBlock }
ستظهر منبثق UAC واحد في كل مرة. يمكنك رؤية عدد أقل من المنبثقة إذا قمت بتمكين ذاكرة التخزين المؤقت GSUDO.
يكتشف قذيفك الحالي ويرفع الأمر كأوامر شل الأصلية. (يدعم Cmd
، PowerShell
، WSL
، git-bash
، MinGW
، Cygwin
، Yori
، Take Command
، BusyBox
& NuShell
.)
Gsudo - Sudo لنظام التشغيل Windows
الاستخدام من PowerShell / PowerShell Core
الاستخدام من WSL (نظام Windows الفرعي لـ Linux)
وحدة PowerShell
جدول المحتويات
العرض التوضيحي
سمات
تثبيت
الاستخدام
إعدادات
ذاكرة التخزين المؤقت لبيانات الاعتماد
القضايا المعروفة
التعليمات
الرجاء دعم Gsudo! ؟
الوثائق الموسعة المتاحة على: https://gerardog.github.io/gsudo/
(مع gsudo config CacheMode auto
)
وتظهر الأوامر المرتفعة في وحدة التحكم الحالية. لا توجد نافذة جديدة (ما لم تحدد -n
)
ذاكرة التخزين المؤقت لبيانات الاعتماد: يمكن لـ gsudo
رفع عدة مرات تعرض فقط منبثقة UAC واحدة فقط إذا اختار المستخدم في تمكين ذاكرة التخزين المؤقت.
يكتشف قذيفك الحالي (يدعم CMD
، PowerShell
، WSL
، Bash for Windows
(git-bash/mingw/msys2/cygwin) ، Yori
، Take Command
و NuShell
) ، ورفع الأمر بشكل صحيح.
الدعم المستخدم في البرامج النصية:
يمكن أن تكون مخرجات stdout /stderr أو التقاطها (على سبيل المثال gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) ورموز الخروج أيضًا ( %errorlevel%
). إذا فشل gsudo
في الارتفاع ، فسيكون رمز الخروج 999.
إذا تم استدعاء gsudo
من وحدة تحكم مرتفعة بالفعل ، فسيتم تشغيل الأمر فقط (لن يفشل). لذلك ، لا داعي للقلق إذا قمت بتشغيل gsudo
أو برنامج نصي يستخدم gsudo
من وحدة تحكم مرتفعة بالفعل. (لن تظهر المنبثقة UAC ، حيث لا يلزم الارتفاع)
gsudo !!
يرفع آخر أمر تم تنفيذه. يعمل على CMD و Git-Bash و Mingw و Cygwin (و PowerShell مع وحدة Gsudo فقط)
باستخدام SCOUP: scoop install gsudo
باستخدام Winget: winget install gerardog.gsudo
باستخدام Chocolatey: choco install gsudo
تشغيل هذا السطر: (البرنامج النصي):
PowerShell -Command "set -executionpolicy remotesigned -scope process ؛ [net.ServicePointManager] :: SecurityProtocol = 'tls12' ؛ iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/installgsudo.ps1 | iex"
المحمول:
تنزيل gsudo.portable.zip
من أحدث إصدار
استخراج المجلد المقابل لهندسة المعالج الخاصة بك (X64 أو X86 أو ARM64) من ملف ZIP إلى دليل مناسب على جهاز الكمبيوتر الخاص بك.
اختياريا ، أضف هذا الدليل إلى متغير بيئة مسار النظام الخاص بك إذا لم يكن متاحًا بالفعل.
يرجى إعادة تشغيل جميع نوافذ وحدة التحكم بعد التثبيت للتأكد من تحديث متغير بيئة PATH
.
ملاحظة: gsudo.exe
محمول. لا يلزم خدمة Windows أو يتم تغيير النظام ، باستثناء إضافته إلى المسار.
Gsudo [Options] # تبدأ shell elevatedgsudo الحالية [خيارات] {command} [args] # Runns {command} مع ذاكرة التخزين المؤقت AmervatedGsudo المرتفعة [ON | قبالة | مساعدة] # تبدأ/توقف جلسة ذاكرة التخزين المؤقت لبيانات الاعتماد. (أقل من النوافذ المنبثقة UAC) GSUDO حالة [-JSON | تصفية] # يعرض المستخدم الحالي ، ذاكرة التخزين المؤقت و Console status.gsudo !! # إعادة تشغيل الأمر الأخير كمسؤول. (YMMV)
خيارات نافذة جديدة: -n | -جديد # يبدأ الأمر في وحدة تحكم/نافذة جديدة (ويعود على الفور). -W | -انتظر # في وحدة التحكم الجديدة ، انتظر حتى ينتهي الأمر. -الحفاظ على # بعد تشغيل أمر ، احتفظ بقذيفة مرتفعة مفتوحة. -keepwindow # بعد تشغيل أمر في وحدة تحكم جديدة ، اطلب keypress قبل إغلاق وحدة التحكم/window.security خيارات: -u | -User {usr} # تشغيل كمستخدم محدد. يسأل عن كلمة المرور. بالنسبة للمسؤولين المحليين ، يظهر UAC ما لم "i-i medium" -i | -integrity {v} # حدد مستوى النزاهة: غير موثوق به ، منخفض ، متوسط ، متوسطة ، مرتفعة (افتراضي) ، نظام -S | -System # Run كحساب النظام المحلي (NT Authoritystem). -Ti # Run كعضو في NT ServiceTrustedInstaller -K # يقتل جميع أوراق الاعتماد المخبأة. في المرة التالية التي يتم فيها تشغيل Gsudo ، ستظهر منبثقة UAC. الخيارات ذات الصلة: -D | - افترض CMD shell أو cmd {command}. -loadprofile # عند رفع أوامر powerShell ، تحميل ملف تعريف المستخدم. -Debug # تمكين وضع التصحيح. -COPYNS # Connect Network Drives to the Eleved User. تحذير: مطول ، تفاعلي يسأل عن بيانات الاعتماد ---copyev # (dembreced) نسخ متغيرات البيئة إلى العملية المرتفعة. (غير مطلوب في وضع وحدة التحكم الافتراضية) -Chdir {dir} # قم بتغيير الدليل الحالي إلى {dir} قبل تشغيل الأمر.
ملاحظة: يمكنك استخدام أي مكان تم إنشاء الاسم المستعار sudo
من قبل المثبتات.
أمثلة:
Gsudo # يرفع القشرة الحالية في نافذة وحدة التحكم الحالية (يدعم CMD/PowerShell/PWSH Core/Yori/Take/git -bash/cygwin) gsudo -n # قم بتشغيل القشرة الحالية المرتفعة في وحدة تحكم جديدة - . FindStr /C: "Bytes Free"> freespace.txt gsudo config loglevel "خطأ" # تكوين LoggingGsudo Config Product "$ p [elevated] $ g" configation refergsude progreshudo levented refction # reset to value # enable credible cache (less uac popups): gsudo config cachemode آلي
يكتشف gsudo
إذا تم الاحتجاج به من PowerShell ويرفع أوامر PS (ما لم يتم استخدام -d
لرفع أوامر CMD).
سيتم تشغيل أمر الارتفاع في عملية مختلفة ، لذلك لا يمكن الوصول إلى $variables
ونطاقه.
لرفع أوامر أو كتلة نصية: قم بلفه في {Curly Braces} .
# بناء جملة: gsudo {scriptblock} gsudo [Options] {scriptblock} [-args $ pINGUMINE1 [... ، $ engumentn]] يتم التسلسل على $ args $ [0]} -args $ mystring # كـ psoBjects مع الخصائص. $ services = gsudo {get-service 'wsearch' ، 'winmgmt'} خدمات الكتابة $ $. displayname# المدخلات أيضًا: مثال على التكرار المرتفع لقائمة. get-childitem. | gsudo {$ input.creationTime}
بناء الجملة البديل:
# تمرير القيم (وليس المتغيرات بالرجوع) عن طريق البادئة `$ باستخدام:`. ie $ mystring = "Hello World" invoke-gsudo {trintputput $ باستخدام: mystring} # بناء جملة: Invoke-Gsudo [-scriptBlock] <ScriptBlock> [[-ArgumentList] <Object []>] [-inputObject <PsoBject>] [-LoadProfile | -نيوبروفيل] [-credential <scredential>]
- PowerShell function. - Performs auto serialization of inputs & outputs. - You can prefix variables with the `$using:` scope modifier (like `$using:variableName`) and their serialized value is applied. - Use `-LoadProfile` or `-NoProfile` to override profile loading or not. - Use `-Credential` option for Run As User (same as `-u` but for `Get-Credentials`). - Better forwarding of your current context to the elevated instance (current Location, $ErrorActionPreference)
الاستخدام: Gsudo 'String حرفي'# بدائل متغيرة مثال: $ file = 'c: my secret.txt' ؛ $ algorithm = 'md5' ؛ $ hash = gsudo "(get -filehash '$ file' -algorithm $ algorithm) .hash"# أو $ hash = gsudo "(get -filehash" "$ file" "algorithm $) .hash "
يقبل سلسلة حرفية مع الأمر لرفع.
إرجاع قائمة الأوتار.
اختياري: وحدة استيراد gsudoModule.psd1
في ملف تعريف powerShell الخاص بك:
# أضف السطر التالي إلى وحدة استيراد ملف تعريف $ "gsudomodule"# أو تشغيل: الكتابة والمخرجات "` nimport-module `" gsudomodule` "" | إضافة ملف تعريف $
للقيام بذلك ، أضف هذا الخط إلى ملف التعريف الخاص بك (بعد استيراد gsudoModule
):
Set-alias موجه gsudoprompt
إذا لم تكن قد قمت بالفعل بتخصيص موجه PowerShell (على سبيل المثال عن طريق تثبيت Oh-My-Posh) ، يمكنك بسهولة إضافة # Red #
تشير إلى أن العملية الحالية مرتفعة:
يعود Test-IsGsudoCacheAvailable
True إذا كانت ذاكرة التخزين المؤقت GSUDO نشطة (وهذا يعني الارتفاع بدون UAC ممكن).
Test-IsProcessElevated
: إرجاع صحيح إذا كانت العملية الحالية مرتفعة.
Test-IsAdminMember
: إرجاع صحيح إذا كان المستخدم الحالي عضوًا في مجموعات Local Administrators
، مما يعني أنه يمكن أن يرتفع معه.
يضيف بناء الجملة التلقائي إلى GSudo في PowerShell. بالإضافة إلى ذلك ، يقترح الأوامر الثلاثة السابقة ، مما يجعل سير العمل الخاص بك أكثر سلاسة من أي وقت مضى!
تمكين gsudo !!
على PowerShell ، لرفع آخر أمر تم تنفيذه.
يضيف وظائف:
على WSL ، والارتفاع root
هي مفاهيم مختلفة. يسمح root
بإدارة WSL الكاملة ولكن ليس نظام Windows. استخدم WSL الأصلي su
أو sudo
للوصول root
. للحصول على امتياز المسؤول في مربع Windows ، تحتاج إلى رفع عملية wsl.exe. يسمح gsudo
بذلك (ستظهر منبثق UAC).
على WSL Bash ، prepend gsudo
لرفع أوامر WSL أو gsudo -d
لأوامر CMD .
# رفع الافتراضي shellpc: ~ $ gsudo # قم بتشغيل CommandPC المرتفعة: ~ $ GSUDO MKDIR/MNT/C/Windows/MyFolder# قم بتشغيل CommandPC المرتفع PC: ~ $ GSUDO -D "Notepad C: Windowssystem32Driversetchosts"# اختبار GSUDO و Command SuccessRETVAL = $؟ ؛ if [$ retval -eq 0] ؛ Therecho "النجاح" ؛ elif [$ retval -eq $ ((999 ٪ 256))] ؛ ثم يتم قراءة كود خروج الفشل # gsudo (999) على أنه 231 على WSL (999 MOD 256) Echo "فشل GSUDO في الارتفاع!" ؛
GSUDO config # إظهار إعدادات وقيم التكوين الحالية. Gsudo config {key} [-global] [value] # اقرأ أو اكتب إعداد مستخدم GSUDO config {key} [-global]-reset # إعادة تعيين التكوين إلى القيمة الافتراضية -Global # يؤثر على جميع المستخدمين (تجاوز إعدادات المستخدم)
تسمح Credentials Cache
، إذا تم تمكينها ونشطها ، لرفعها عدة مرات من عملية الوالدين مع المنبثقة في UAC واحدة فقط. بعد 5 دقائق بدون ارتفاعات ، يتم إغلاق جلسة ذاكرة التخزين المؤقت تلقائيًا (مهلة قابلة للتكوين عبر gsudo config CacheDuration
).
في حين أن هذا مريح للغاية ، من المهم فهم مخاطر الأمن المحتملة. حتى لو كانت Gsudo نفسها آمنة ، فإن الضعف المتأصل يكمن في عملية المضيف. إذا تعرض نظامك بالفعل للخطر بسبب عملية ضارة ، فيمكنه معالجة العملية المسموح بها (على سبيل المثال ، CMD/PowerShell) وإجبار مثيل ذاكرة التخزين المؤقت GSUDO نشطة على رفع الامتيازات دون تشغيل موجه UAC.
هذا الخطر هو المفاضلة لاستخدام ذاكرة التخزين المؤقت لبيانات الاعتماد. ذاكرة التخزين المؤقت آمنة لاستخدامها طالما أنك واثق من عدم وجود عمليات ضارة تعمل على نظامك.
فيما يلي أوضاع Credentials Cache
:
Explicit:
(افتراضي) يظهر كل ارتفاع منبثقة UAC ، ما لم يتم بدء جلسة ذاكرة التخزين المؤقت يدويًا ...
لبدء أو إيقاف تشغيل جلسة ذاكرة التخزين المؤقت: gsudo cache {on | off}
هذا هو الوضع الافتراضي. (استخدم gsudo config CacheMode Explicit
للعودة إلى هذه القيمة).
Auto:
على غرار Unix-Sudo. يعرض الارتفاع الأول منبثقة UAC ويبدأ جلسة ذاكرة التخزين المؤقت تلقائيًا .
قم بتشغيل gsudo config CacheMode Auto
لاستخدام هذا الوضع.
Disabled:
كل ارتفاع يظهر منبثقة UAC ، ومحاولة بدء جلسة ذاكرة التخزين المؤقت سوف ترمي خطأ ..
قم بتشغيل gsudo config CacheMode Disabled
لاستخدام هذا الوضع.
في أي حال ، يمكنك إيقاف جميع جلسات ذاكرة التخزين المؤقت مع gsudo -k
.
يتعلم أكثر
لا يمكن للحالات المرتفعة الوصول إلى أسهم الشبكة المتصلة في المساحة غير المرتبطة. هذه ليست مشكلة gsudo
ولكن كيف يعمل Windows. استخدم- --copyNS
لتكرار أسهم الشبكة في الجلسة المرتفعة ، ولكن هذا ليس ثنائي الاتجاه وتفاعل (قد يطالب المستخدم/كلمة المرور).
يمكن وضع gsudo.exe
على حصة الشبكة واستدعاء كـ serversharegsudo {command}
ولكن لا يعمل إذا كان المجلد الحالي محركًا للشبكة. على سبيل المثال ، لا تقم بتخطيط servershare
إلى Z:
ثم Z:>gsudo do-something
.
يرجى الإبلاغ عن المشكلات في قسم القضايا.
لماذا يدعى gsudo
بدلاً من sudo
فقط؟
عندما أنشأت gsudo
، كانت هناك حزم sudo
أخرى على معظم مديري الحزم الشهيرة Windows مثل Chocolatey
و Scoop
، لذلك لم يكن لدي خيار آخر لاختيار اسم آخر. يقوم مثبتات gsudo
بإنشاء اسم مستعار لـ sudo
، لذلك لا تتردد في استخدام sudo
على سطر الأوامر الخاص بك لاستدعاء gsudo
.
لماذا انتقلت من .Net Framework 4.6
إلى .Net Core 7.0
؟
بدءًا من v1.4.0 ، تم تصميمه باستخدام .Net 7.0
nativeaot. يتم تحميله بشكل أسرع ويستخدم ذاكرة أقل ، ويتم تشغيله على الآلات دون تثبيت وقت تشغيل .NET. الإصدارات السابقة <v1.3.0
المستخدمة .NET 4.6 ، لأنه تم تضمينه في كل تثبيت Windows 10/11.
هل gsudo
منفذ *nix sudo
؟
لا. يذكر gsudo
من Sudo الأصلي فيما يتعلق بتوقعات المستخدم. العديد من ميزات sudo
هي *nix
محددة ولا يمكن أن يكون لها نظير Windows
. من المحتمل أن يتم تنفيذ ميزات أخرى (مثل sudoers
) ولكنها ليست في هذه المرحلة.
ما هي المتطلبات؟ هل تعمل في Windows 7/8؟
إنه يعمل على Win7 SP1 فصاعدًا. قد تعمل بعض الميزات فقط في Windows 10/11 ، مثل الارتفاع كـ TrustedInstaller.
كيف أعود إلى مستوى الأمان السابق بعد استخدام GSUDO؟
بالطريقة نفسها التي تفعل بها مع Unix/Linux sudo
: لا يغير gsudo
العملية الحالية ، بدلاً من ذلك ، تطلق عملية جديدة مع مستوى أذونات/تكامل مختلفة. للعودة إلى المستوى السابق ، ما عليك سوى إنهاء العملية الجديدة. Command Prompt
أو PowerShell
فقط اكتب exit
.
من فضلك تعطينا نجم!
ساعد في نشر الكلمة من خلال ذكر gsudo
في الشبكات الاجتماعية!
راعي أو تبرع