ACL
لیست کنترل دسترسی (ACL)، سامانهای برای تنظیم مجوزهای اضافی و انعطاف پذیرتر برای سامانههای پرونده است. این سامانه برای کمک به مجوزهای پرونده یونیکس طراحی شده است. ACL به شما امکان می دهد برای هر کاربر یا گروهی به هر منبع دیسک مجوز دهید.
تعریف لیستهای کنترل دسترسی در کتابچه راهنمای لینوکس ، ACL ها برای تعریف حق دسترسی صحیحتر برای پروندهها و دایرکتوریها استفاده می شوند.
محتویات
نصب و راه اندازی
بسته acl یکی از وابستگیهای سیستمدی است، احتمالا از پیش نصب شده است. اگر اینطور نیست، میتوان با دستور زیر آن را نصب کرد:
$ sudo apt install acl
چرا از acl استفاده کنیم؟
به حالتی فکر کنید که در آن یک کاربر خاص عضو گروه ایجاد شده توسط شما نیست، اما همچنان میخواهید به برخی از موارد، دسترسی خواندن یا نوشتن داشته باشد، چگونه میتوانید این کار را بدون اینکه کاربر را عضو گروه کنید، انجام دهید؟ در اینجا میتوان از لیست کنترل دسترسی استفاده کرد.
روش کاربرد
setfacl و getfacl به ترتیب برای تنظیم ACL و نشان دادن ACL استفاده میشوند.
تنظیم ACL
- برای تنظیم مجوز برای یک کاربر(میتوان از نام کاربر یا ID آن استفاده کرد):
$ setfacl -m "u:user:permissions" <file/dir>
- برای تنظیم مجوز برای یک گروه(میتوان از نام گروه یا ID آن استفاده کرد):
$ setfacl -m "g:group:permissions" <file/dir>
- برای تنظیم مجوز برای دیگران:
$ setfacl -m "other:permissions" <file/dir>
To allow all newly created files or directories to inherit entries from the parent directory (this will not affect files which will be copied into the directory):
$ setfacl -dm "entry" <dir>
To remove a specific entry:
$ setfacl -x "entry" <file/dir>
To remove the default entries:
$ setfacl -k <file/dir>
To remove all entries (entries of the owner, group and others are retained):
$ setfacl -b <file/dir>
نمایش ACL
- برای نمایش ACL از دستور زیر استفاده کنید:
$ getfacl <file/dir>
مثال
تنظیم تمامی مجوزها(خواندن، نوشتن، اجرا) برای کاربر johnny در پروندهٔ abc:
$ setfacl -m "u:johnny:rwx" abc
بررسی مجوزها:
$ getfacl abc
# file: abc # owner: someone # group: someone user::rw- user:johnny:rwx group::r-- mask::rwx other::r--
تغییر مجوزهای کاربر johnny در پروندهٔ abc:
$ setfacl -m "u:johnny:r-x" abc
بررسی مجوزها:
$ getfacl abc
# file: abc # owner: someone # group: someone user::rw- user:johnny:r-x group::r-- mask::r-x other::r--
برداشتن همه ورودیهای ACL:
$ setfacl -b abc
بررسی مجوزها:
$ getfacl abc
# file: abc # owner: someone # group: someone user::rw- group::r-- other::r--
خروجی دستور ls
اگر در یک پرونده یا شاخه از ACL استفاده شده باشد، در خروجی فرمان
ls -l
با نشان دادن یک علامت + (بعلاوه) پس از مجوزهای Unix به شما اطلاع داده خواهد شد.
$ ls -l /dev/audio
crw-rw----+ 1 root audio 14, 4 nov. 9 12:49 /dev/audio
$ getfacl /dev/audio
getfacl: Removing leading '/' from absolute path names # file: dev/audio # owner: root # group: audio user::rw- user:solstice:rw- group::rw- mask::rw- other::---