همانطور که می دانید، کاربران عادی سیستم، مجوز اجرای بسیاری از دستورات مدیریتی را ندارند برای مثال، یک کاربر عادی، به صورت پیش فرض نمی تواند کاربر دیگری را ایجاد کند و یا کاربران دیگر را حذف نماید. برای اهدای مجوزهایی از این دست به یک کاربر عادی، می توان از فایل /etc/sudoers و دستور sudo کمک گرفت.
نکته: برای اصلاح فایل sudoers از دستور visudo استفاده می شود.
البته شکل اهدای این مجوز تفاوتهایی با هم دارند که در ادامه، چند نمونه ان را از نظر می گذرانیم.
1.امکان اجرای دستور به کاربر عادی با وارد کردن پسورد
شکل کلی:
[UserName] [HostName]=[Command1, Command2,..CommandN]
مثال: مجوز اجرای فایل root.sh به کاربر oracle داده می شود:
visudo
oracle ol7=/18c/home/root.sh
قبل از اهدای مجوز:
[oracle@ol7 ~]$ /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.
[oracle@ol7 ~]$ sudo /18c/home/root.sh
oracle is not in the sudoers file. This incident will be reported.
بعد از اهدای مجوز:
[oracle@ol7 ~]$ 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
قبل از اهدای مجوز:
[oracle@ol7 ~]$ sudo useradd usef
[sudo] password for oracle:
Sorry, user oracle is not allowed to execute ‘/sbin/useradd usef’ as root on ol7.
بعد از اهدای مجوز:
[oracle@ol7 ~]$ sudo useradd usef
[oracle@ol7 ~]$
3.اهدای مجوز اجرای چندین دستور به یک کاربر عادی
مثال: کاربر oracle بدون وارد کردن پسوردی، امکان اجرای تمامی دستوراتی که فایل انها در زیر پوشه /bin و /usr/sbin قرار دارد، را خواهد داشت:
visudo
oracle ol7=NOPASSWD: /usr/sbin/* ,/bin/*
بعد از اهدای این مجوز:
[oracle@ol7 ~]$ sudo userdel -r usef
[oracle@ol7 ~]$
پ.ن 1: برای مشاهد لیست مجوزهای یک کاربر، می توان از سوییچ l به همراه دستور sudo استفاده کرد:
[oracle@ol7 ~]$ 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
سلام میخوام یه grant به اسکیمایی که میسازم بدم تا بتونه خودش alter کنه
با with admin option و with grant option تونستم select , craete رو بدم اما alter را قبول نمیکند.
میشه کمکم کنین؟
سلام میخاین چه objectای را alter کنه؟