همانطور که می دانید، کاربران عادی سیستم، مجوز اجرای بسیاری از دستورات مدیریتی را ندارند برای مثال، یک کاربر عادی، به صورت پیش فرض نمی تواند کاربر دیگری را ایجاد کند و یا کاربران دیگر را حذف نماید. برای اهدای مجوزهایی از این دست به یک کاربر عادی، می توان از فایل /etc/sudoers و دستور sudo کمک گرفت.
نکته: برای اصلاح فایل sudoers از دستور visudo استفاده می شود.
البته شکل اهدای این مجوز تفاوتهایی با هم دارند که در ادامه، چند نمونه ان را از نظر می گذرانیم.
1.امکان اجرای دستور به کاربر عادی با وارد کردن پسورد
شکل کلی:
[UserName] [HostName]=[Command1, Command2,..CommandN]
مثال: مجوز اجرای فایل root.sh به کاربر oracle داده می شود:
visudo
oracle ol7=/18c/home/root.sh
قبل از اهدای مجوز:
[[email protected] ~]$ /18c/home/root.sh
You must be logged in as user with UID as zero (e.g. root user) to run root configuration script.
Log in as user with UID as zero (e.g. root user) and restart root configuration script execution.
[[email protected] ~]$ sudo /18c/home/root.sh
oracle is not in the sudoers file. This incident will be reported.
بعد از اهدای مجوز:
[[email protected] ~]$ sudo /18c/home/root.sh
[sudo] password for oracle:
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /18c/home
Enter the full pathname of the local bin directory: [/usr/local/bin]:
2. امکان اجرای دستور به کاربر عادی بدون وارد کردن پسورد
شکل کلی:
[UserName] [HostName]= [NOPASSWD😏 [Command1, Command2,..CommandN]
مثال: کاربر oracle می تواند بدون وارد کردن پسوردش، کاربر دیگری را ایجاد نماید:
visudo
oracle ol7=NOPASSWD: /usr/sbin/useradd
قبل از اهدای مجوز:
[[email protected] ~]$ sudo useradd usef
[sudo] password for oracle:
Sorry, user oracle is not allowed to execute ‘/sbin/useradd usef’ as root on ol7.
بعد از اهدای مجوز:
[[email protected] ~]$ sudo useradd usef
[[email protected] ~]$
3.اهدای مجوز اجرای چندین دستور به یک کاربر عادی
مثال: کاربر oracle بدون وارد کردن پسوردی، امکان اجرای تمامی دستوراتی که فایل انها در زیر پوشه /bin و /usr/sbin قرار دارد، را خواهد داشت:
visudo
oracle ol7=NOPASSWD: /usr/sbin/* ,/bin/*
بعد از اهدای این مجوز:
[[email protected] ~]$ sudo userdel -r usef
[[email protected] ~]$
پ.ن 1: برای مشاهد لیست مجوزهای یک کاربر، می توان از سوییچ l به همراه دستور sudo استفاده کرد:
[[email protected] ~]$ sudo -l
User oracle may run the following commands on ol7:
(root) /18c/home/root.sh
(root) NOPASSWD: /usr/sbin/useradd
پ.ن 2: برای دسترسی نامحدود به کاربر oracle، می توان یکی از عبارات زیر را به فایل susoers اضافه کرد:
oracle ALL=(ALL) ALL
OR
oracle ALL=(ALL) NOPASSWD:ALL