تحويل أذونات Unix بين الصيغة الرمزية والثمانية
يتحول rwxr-xr-- إلى 754، ويعود 754 إلى rwxr-xr--، لأن القراءة تساوي 4 والكتابة 2 والتنفيذ 1 لكل فئة من المستخدمين. الصقوا أيًّا من الصيغتين لتحصلوا على كلتيهما، مع الإشارة إلى القيم المعيبة بدل تخمينها. مجانًا في متصفحكم.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- rwxr-xr--
- المُدخَل
- rwxr-xr--
- تنسيق المدخلات
- symbolic
- ثماني
- 754
- رمزي
- rwxr-xr--
أذونات Unix موجزة، لكن الانتقال بين صيغتيها قد يسبب أخطاء عند مراجعة عملية نشر أو كتابة أمر chmod أو توثيق تغيير أمني. تقبل هذه الأداة قيمة رمزية من 9 محارف مثل rwxr-xr-- أو قيمة ثمانية من 3 أرقام مثل 754، وتتحقق من كل موضع ثم تعيد الصيغتين. التحويل حتمي ولا يستخدم الشبكة أو نظام الملفات، ولا يفسر الإذن بالاستناد إلى ملف حقيقي. تؤدي الأرقام غير الصالحة والحروف الموضوعة في غير مكانها والبادئات الزائدة والمسافات والقيم الناقصة إلى خطأ إدخال صريح بدلًا من نتيجة تبدو معقولة وهي خاطئة.
افهم صيغتي تمثيل الأذونات
يصف إذن Unix القياسي الوصول لثلاث فئات بترتيب ثابت: مالك الملف، والمجموعة المالكة، وسائر المستخدمين. يمنح الترميز الرمزي كل فئة كتلة من 3 محارف. وتعني المواضع دائمًا القراءة ثم الكتابة ثم التنفيذ؛ لذلك يمنح rwx الأذونات الثلاثة، ويمنح r-x القراءة والتنفيذ، بينما يمنح r-- القراءة وحدها.
تضغط الصيغة الثمانية البتات نفسها في رقم واحد لكل فئة. تساوي القراءة 4، والكتابة 2، والتنفيذ 1. وينتج عن جمع القيم المفعلة رقم من 0 إلى 7.
لذلك يصبح rwx مساويًا لـ 7، وr-x مساويًا لـ 5، وr-- مساويًا لـ 4، فتكون rwxr-xr-- مكافئة لـ 754. تحافظ الأداة على ترتيب المالك ثم المجموعة ثم الآخرين بدقة. وهي لا تستعلم عن المستخدمين أو المجموعات أو قوائم التحكم في الوصول أو بيانات نظام الملفات.
يجعل هذا النطاق المحدد النتيجة متوقعة وملائمة للبرامج النصية والمراجعات وأدلة التشغيل والمواد التعليمية.
أدخل قيمة رمزية أو ثمانية منضبطة
أدخل سلسلة إذن واحدة فقط في حقل النص. في الإدخال الثماني، قدم 3 محارف بالضبط مستخدمًا الأرقام من 0 إلى 7، مثل 640 أو 755. وفي الإدخال الرمزي، قدم 9 محارف بالضبط، مقسمة من حيث المعنى إلى كتل المالك والمجموعة والآخرين.
يجب أن تضع كل كتلة r في موضع القراءة، وw في موضع الكتابة، وx في موضع التنفيذ؛ واستخدم شرطة عند غياب الإذن. تكون القيمة rw-r----- صالحة، أما wr-r----- فغير صالحة لأن الحروف في مواضع خاطئة. التحقق صارم عن قصد.
لا تزيل الأداة المسافات، ولا تقبل أمر chmod، ولا تقبل محرف نوع الملف الأول من مخرجات ls، ولا تحذف صفرًا بادئًا بصمت. كما تستثني setuid وsetgid وsticky bit لأن هذه البتات الخاصة تحتاج إلى قواعد رمزية إضافية. يمنع رفض الصيغ غير المدعومة التطبيع غير المقصود ويكشف الإدخال المشوه فورًا قبل استخدامه في أتمتة النشر.
استخدم النتيجة بأمان في العمل التشغيلي
تحدد الاستجابة ما إذا كانت القيمة المرسلة ثمانية أم رمزية، وتعيد حقولًا موحدة للصيغتين. يمكن عرض الحقل الرمزي على المراجع الذي يحتاج إلى حقوق وصول مقروءة، واستخدام الحقل الثماني في أمر أو قالب بنية تحتية أو سجل إعداد. تذكر دائمًا أن التحويل ليس تحليلًا للتفويض.
فقد يظل الوضع الصحيح حسابيًا غير مناسب لمفتاح حساس أو دليل مشترك أو ملف تنفيذي أو حساب خدمة. قبل تطبيقه، تحقق من مالك الهدف، ومن الحاجة إلى إذن التنفيذ لاجتياز الدليل، ومن أي وصول تضيفه ACL الافتراضية، ومن توقع التطبيق لبتات خاصة. لا تغير هذه الأداة أي ملف ولا تزعم أن وضعًا ما آمن؛ بل تحول القيمة المقدمة فقط.
يفيد هذا الفصل في إجراءات ضبط التغيير لأنه يتيح التحقق من التنسيق قبل تنفيذ أي أمر ذي امتيازات.
حالات الاستخدام
راجع تغيير chmod
حوّل الوضع الثماني إلى كتل مقروءة للمالك والمجموعة والآخرين قبل الموافقة على عملية نشر.
حضّر قيمة إعداد
حوّل إذنًا رمزيًا تمت مراجعته إلى القيمة الموجزة ذات 3 أرقام التي تتطلبها الأتمتة.
تحقق من التوثيق
تأكد من أن الصيغتين الرمزية والثمانية في دليل إجرائي تصفان بتات Unix الأساسية نفسها.
الأسئلة الشائعة
هل تعدّل هذه الأداة ملفًا؟
لا. فهي تحوّل النص فقط ولا تصل إلى نظام الملفات مطلقًا.
هل الأوضاع ذات 4 أرقام مدعومة؟
لا. يقبل هذا الإصدار 3 أرقام أساسية للمالك والمجموعة والآخرين من دون البتات الخاصة.
هل يمكن لصق مخرجات ls -l؟
لا. أزل محرف نوع الملف الأول وقدم محارف الإذن التسعة فقط بدقة.
لماذا تُرفض المسافات؟
يمنع التحقق الصارم قبول تنسيق مخفي بصمت داخل أتمتة حساسة أمنيًا.
لماذا تُرفض قيمة مثل wr-r-----؟
لكل مجموعة من ثلاثة محارف مواضع ثابتة: القراءة أولًا ثم الكتابة ثم التنفيذ. وفي wr-r----- تبادلت الحروف مواضعها، فلا تُعد إذنًا صالحًا. ضعوا كل حرف في مكانه واستخدموا شرطة حيث ينقص أحد الحقوق.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/security/file-permission-symbolic-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"rwxr-xr--"}'const res = await fetch("https://api.kit.forhosting.com/security/file-permission-symbolic-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "rwxr-xr--"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/file-permission-symbolic-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "rwxr-xr--"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/file-permission-symbolic-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"rwxr-xr--"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"rwxr-xr--"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/file-permission-symbolic-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "rwxr-xr--"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.file_permission_symbolic_convert",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
استخدم النتيجة بأمان في العمل التشغيلي
ويمكن للعملاء المؤتمتين اعتبار استجابة invalid_input سببًا إلزاميًا للتوقف بدلًا من متابعة العمل بأذونات مفترضة أو بقيمة لم تُفسر كاملة.
أسئلة تقنية
ما تكلفة استدعاء API؟
تبلغ تكلفة كل طلب API مقدار $0.002. ويمكن تشغيل إصدار المتصفح محليًا داخل الصفحة.