ACL
فهرست واپایش دسترسی (ACL سرواژهٔ Access Control List)، سامانهای برای تنظیم مجوزهای اضافی و انعطاف پذیرتر برای سامانههای پرونده است. این سامانه برای کمک به مجوزهای پرونده یونیکس طراحی شده است. 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>
- تنظیم مجوز بعنوان پیشفرض که به همه پروندهها و شاخههای جدید که به تازگی ساخته ارث میرسد(اعمال میشوند):
- این تنظیم بر روی پروندهها و فایل هایی که از جای دیگر کپی، یا جابهجا میشوند، تاثیر ندارد.
- مثلا: "u:user:rwx" یا "g:group:rx"
$ setfacl -dm "entry" <dir>
- برداشتن تنظیمهای مشخص(مثلا: "u:user" یا "g:group"):
$ setfacl -x "entry" <file/dir>
- برداشتن تنظیمهای پیشفرض:
$ setfacl -k <file/dir>
- برداشتن همه تنظیمها:
$ 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::---