~4 دقیقه مطالعه • بروزرسانی ۱۰ اسفند ۱۴۰۴
1. مقدمهای بر سفارشیسازی Workflow در DirectAdmin
DirectAdmin ابزارهای مختلفی برای تغییر ظاهر، رفتار و سطح دسترسیها ارائه میدهد. این قابلیتها به مدیر سرور اجازه میدهند کنترل پنل را دقیقاً مطابق نیازهای خود تنظیم کنند.
مهمترین بخشهای قابل سفارشیسازی عبارتاند از:
- اسکریپتهای pre/post (هوکها)
- فایلهای commands.allow و commands.deny
- Feature Setها
- پلاگینها و مدیریت سطح دسترسی آنها
---
2. اسکریپتهای Pre/Post (هوکها)
DirectAdmin برای اکثر عملیاتها هوکهایی ارائه میدهد که میتوانید قبل یا بعد از انجام یک کار، اسکریپت دلخواه خود را اجرا کنید.
2.1 رفتار اسکریپتها
- pre.sh قبل از انجام عملیات اجرا میشود
- post.sh بعد از انجام عملیات اجرا میشود
- اگر اسکریپت pre با کد غیر صفر خارج شود، DirectAdmin عملیات را متوقف میکند
مثال: اگر بخواهید هنگام ایجاد کاربر جدید، یک عملیات اضافی انجام شود، از user_create_post.sh استفاده میکنید.
DirectAdmin لیست کامل هوکها را ارائه میدهد:
- لیست کامل اسکریپتهای *_post.sh
- لیست کامل اسکریپتهای *_pre.sh
---
3. کنترل دستورات با commands.allow و commands.deny
این فایلها برای هر کاربر به صورت جداگانه قابل تنظیم هستند و مشخص میکنند چه دستورات DirectAdmin برای کاربر مجاز یا غیرمجاز باشد.
مزایا:
- بدون نیاز به اسکریپتنویسی
- کنترل ساده و سریع
- قابل استفاده برای محدودسازی کاربران خاص
3.1 Login Keys
Login Keys امکان ایجاد چند رمز عبور برای یک حساب را میدهد، با قابلیت:
- محدودسازی دستورات
- محدودسازی IP
- تاریخ انقضا
- تعداد دفعات استفاده
---
4. Feature Sets
Feature Setها یک روش مدرن و قدرتمند برای کنترل سطح دسترسی کاربران هستند. برخلاف پکیجها که محدودیتها را کنترل میکنند، Feature Setها تعیین میکنند کاربر چه بخشهایی از DirectAdmin را میتواند ببیند یا اجرا کند.
4.1 ساختار Feature Set
در فایل user.conf یا پکیجها، مقدار زیر اضافه میشود:
feature_sets=view_domain:tickets:dns_only
قوانین:
- مقادیر با ":" جدا میشوند
- مقادیر نامعتبر نادیده گرفته میشوند
- مقدار خالی باعث حذف متغیر میشود
4.2 مسیر ذخیرهسازی Feature Setها
مسیر پیشفرض:
/usr/local/directadmin/data/templates/feature_sets/
مسیر سفارشی:
/usr/local/directadmin/data/templates/custom/feature_sets/
4.3 Feature Setهای پیشفرض
- dns_only — فقط مدیریت DNS
- email_only — فقط امکانات ایمیل
- tickets — سیستم پیام و تیکت
- view_domain — امکانات پایه مثل مشاهده دامنه و تغییر رمز
- core_functions — ترکیب view_domain + tickets
---
5. ساخت یک Feature Set سفارشی
5.1 ایجاد دایرکتوری
mkdir -p /usr/local/directadmin/data/templates/custom/feature_sets
cd /usr/local/directadmin/data/templates/feature_sets/
cp -rp core_functions ../custom/feature_sets/example_set
5.2 تعیین نام Feature Set
/usr/local/directadmin/data/templates/feature_sets/example_set/lang/en.name.txt
5.3 افزودن دستورات مجاز
فایل زیر را ویرایش کنید:
example_set/commands.allow
برای یافتن نام دستورات:
- DirectAdmin را در حالت debug اجرا کنید
- یا از API استفاده کنید:
curl -s $(da api-url --user=[DA_USER])/api/session | jq '.allowedCommands'
5.4 اعمال Feature Set
برای یک کاربر:
Admin Level → Show All Users → Modify → Feature Sets
برای یک پکیج:
Admin Level → Manage User Packages → Modify/Create → Feature Sets
---
6. پلاگینها
پلاگینها اسکریپتهایی هستند که امکانات جدیدی به DirectAdmin اضافه میکنند و با سطح دسترسی کاربر اجرا میشوند، بنابراین بهطور پیشفرض امن هستند.
نکته مهم: اگر پلاگین را با chmod 4755 ست کنید، میتواند با سطح root اجرا شود—این کار فقط در صورت اطمینان کامل از امنیت کد توصیه میشود.
---
7. مدیریت سطح دسترسی پلاگینها در پکیجها
پلاگینها میتوانند برای هر کاربر یا پکیج فعال یا غیرفعال شوند.
7.1 مسیرهای ذخیرهسازی
پکیج کاربر:
/usr/local/directadmin/data/users/USERNAME/packages/PACKAGE_NAME
فایل user.conf:
/usr/local/directadmin/data/users/USERNAME/user.conf
7.2 فعالسازی یا غیرفعالسازی پلاگینها
اجازه دادن به پلاگینها:
plugins_allow=plug1:plug2
ممنوع کردن پلاگینها:
plugins_deny=plug3:plug4
7.3 قوانین منطقی
- اگر هیچکدام وجود نداشته باشند → همه پلاگینها مجازند
- اگر
plugins_allowوجود داشته باشد → فقط همانها مجازند - اگر
plugins_denyوجود داشته باشد → همانها ممنوعند - اگر هر دو باشند →
plugins_allowتعیینکننده نهایی است
7.4 پاک کردن لیست پلاگینها
plugins_allow=[clear]
plugins_deny=[clear]
توجه: مقدار خالی plugins_allow= یعنی هیچ پلاگینی اجازه اجرا ندارد.
نوشته و پژوهش شده توسط دکتر شاهین صیامی