تشغيل الأوامر كالجذر دون استيثاق
في العديد من أنظمة التشغيل المبنية على لينكس، يمكن للمستخدمين المتقدمين استخدام الملف /etc/sudoers لجعل تشغيل أوامر معينة باستخدام sudo ممكنًا دون طلب الاستيثاق. لا يملك كيدي لينكس الملف /etc/sudoers ولا الأمر sudo، فكيف يمكن تحقيق الشيء نفسه؟
الجواب هو إعداد خدمة systemd تشغّل الأمر المحدد، ثم قاعدة polkit تسمح لك باستدعاء خدمة النظام دون الحاجة إلى الاستيثاق.
خدمة systemd
هذه خدمة systemd مثال تشغّل /usr/bin/systemd-sysext refresh --always-refresh=yes لتحديث امتدادات systemd:
/etc/systemd/system/sysext-refresh.service
[Unit]
Description=Refresh systemd extensions
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-sysext refresh --always-refresh=yes
قاعدة polkit
وهذه قاعدة polkit مثال تسمح للأعضاء النشطين المسجلين محليًا في مجموعة wheel باستدعاء خدمة systemd تلك دون استيثاق:
/etc/polkit-1/rules.d/50-sysext-refresh.rules
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
action.lookup("unit") == "sysext-refresh.service" &&
action.lookup("verb") == "start" &&
subject.local &&
subject.active &&
subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
لتقييد هذه القاعدة أكثر بحيث تتجاوز الاستيثاق لك وحدك، استبدل "wheel" باسم المستخدم الخاص بك.
استخدمها
بعد إنشاء الملفين، يمكنك تحديث امتدادات systemd دون استيثاق باستدعاء خدمة systemd: systemctl start sysext-refresh.
يمكن فعل الشيء نفسه مع أي أوامر أخرى؛ ببساطة أنشئ خدمات systemd وقواعد polkit مناسبة لها.
معلومات أكثر
المقالة مساهمة من Nate Graham تحت ترخيص CC-BY-4.0.