গিলস যেমন উল্লেখ করেছেন, setfacl
ডিফল্ট অনুমতিগুলি মূলত প্রতিস্থাপন করে সর্বাধিক অনুমতি নির্দিষ্ট করে umask
। সুতরাং নতুন তৈরি করা ফাইলগুলি যদি না rw
এই ফাইলটি তৈরি করে এমন অ্যাপ্লিকেশনগুলি বিশেষভাবে এটি কার্যকর করতে বলা হয়।
$ mkdir test
$ touch test/oldfile
$ getfacl test/oldfile
# file: test/oldfile
# owner: myuser
# group: myuser
user::rw-
group::r--
other::r--
$ setfacl -m d:g:mygroup:rwx test
$ touch test/newfile
$ getfacl test/newfile
# file: test/newfile
# owner: myuser
# group: myuser
user::rw-
group::r-x #effective:r--
group:mygroup:rwx #effective:rw-
mask::rw-
other::r--
উপরের কার্যকর পার্মসটি নোট করুন। (কেবলমাত্র কয়েকটি প্রোগ্রাম রয়েছে যেগুলি এটি তৈরি করে এমন ফাইলগুলিতে এক্সিকিউট বিট সেট করতে বলবে, যেমন gcc
এক্সিকিউটেবলের জন্য এবং cp
যদি ফাইলটি অনুলিপি করা হয় যদি এক্সিকিউটেবল হয়))
বা আপনি কি বোঝাতে চেয়েছেন যে প্রথম সেটফ্যাকল কমান্ডটি আপনি যেমনভাবে কাজ করছেন, কিন্তু দ্বিতীয়টি তা হয়নি? অন্য কথায়, আপনি পুরানো ফাইলগুলিতে অনুমতিগুলি স্থির করার সন্ধান করছেন, অন্য নিয়মিত ফাইলগুলি অনুমতি না দিয়েই ডিরেক্টরিগুলি ট্র্যাজেবল হতে পারে তা নিশ্চিত করে?
আমার সংস্করণটি আপনার যেমন পছন্দ করে তেমনি setfacl
অনুমতি দেয় X
:
setfacl g:mygroup:rwX
$ setfacl --version
setfacl 2.2.49
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ find test -ls
107513 4 drwxr-xr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-r--r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxr-xr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ setfacl -Rm g:somegroup:rwx test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rwxr-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ setfacl -Rm g:somegroup:rwX test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rw-r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
আপনার সংস্করণ setfacl
যদি এটি সমর্থন করে না, তবে কেন ব্যবহার find
করবেন না ?
অনুমতিগুলি ওভাররাইট করে, ফাইলগুলির জন্য rw এ সেট করে এবং ডায়ারের জন্য rwx
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
বিদ্যমান গ্রুপ অনুমতিগুলির উপর ভিত্তি করে মাইগ্রুপ ACL অনুমতি সেট করুন
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
আপনি সম্ভবত এটি পরীক্ষা করতে চাইবেন যে গ্রুপ মাস্ক কার্যকর অনুমতি দেয় provides যদি তা না হয় তবে আপনাকে এটি চালাতে হবে:
$ find . -type d -exec chmod g+rwX '{}' ';'