আমি এই উদাহরণটি পেয়েছি, শিরোনাম: লিনাক্সে এসিএল এবং এমএএসকে । এই নিবন্ধে নিম্নলিখিত উদাহরণগুলি প্রদর্শিত হয়েছে যা আমি মনে করি যে এসিএল কীভাবে umask
একে অপরের সাথে যোগাযোগ করে এবং বুঝতে সাহায্য করে to
পটভূমি
একটি লিনাক্স সিস্টেমে কোনও ফাইল তৈরি করা হলে ডিফল্ট অনুমতিগুলি 0666
প্রয়োগ করা হয় যখন একটি ডিরেক্টরি তৈরি করা হয় তখন ডিফল্ট অনুমতিগুলি 0777
প্রয়োগ করা হয়।
উদাহরণ 1 - ফাইল
ধরা যাক আমরা আমাদের উমাস্ককে 077 এ সেট করেছি এবং একটি ফাইল স্পর্শ করি। আমরা strace
যখন এটি করি তখন আমরা আসলে কী ঘটছে তা দেখতে ব্যবহার করতে পারি:
$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile
এই উদাহরণে আমরা দেখতে পাচ্ছি যে সিস্টেম কলটি open()
0666 এর অনুমতি নিয়ে করা হয়েছে, তবে ততক্ষণে যখন umask 077
কার্নেলটি প্রয়োগ করা হয় তখন নিম্নলিখিত অনুমতিগুলি সরানো হয় ( ---rwxrwx
) এবং আমরা rw-------
ওরফে 0600 রেখে চলেছি।
উদাহরণ - 2 ডিরেক্টরি
ডিরেক্টরিগুলিতে একই ধারণাটি প্রয়োগ করা যেতে পারে, ডিফল্ট অনুমতিগুলি 0666 হওয়ার পরিবর্তে সেগুলি 0777।
$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777) = 0
drwxr-xr-x 2 saml saml 4096 Jul 9 10:55 testdir
এবার আমরা mkdir
কমান্ডটি ব্যবহার করছি । mkdir
কমান্ড তারপর সিস্টেম কল নামক mkdir()
। উপরের উদাহরণে আমরা দেখতে পারি যে mkdir
কমান্ড নামক mkdir()
defaul অনুমতিসহ সিস্টেম কল 0777
( rwxrwxrwx
)। এবার 022
নিম্নলিখিত অনুমতিগুলির একটি উমাস্ক সহ মুছে ফেলা হবে ( ----w--w-
), সুতরাং rwxr-xr-x
ডিরেক্টরিগুলি তৈরি করার সময় আমরা 0755 ( ) রেখে আসি ।
উদাহরণ 3 (ডিফল্ট এসিএল প্রয়োগ করা)
এখন একটি ডিরেক্টরি তৈরি করুন এবং এটি প্রদর্শিত হবে যখন ডিফল্ট এসিএল এটির সাথে একটি ফাইলের সাথে প্রয়োগ করা হয় তখন কী ঘটে।
$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir
$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx #effective:rwx
default:group::r-x #effective:r-x
default:mask::rwx
default:other::r-x
এখন ফাইলটি তৈরি করা যাক aclfile
:
$ strace -s 128 -fvTttto luvly touch acldir/aclfile
# view the results of this command in the log file "luvly"
$ less luvly
এখন নতুন তৈরি ফাইলের অনুমতি পান:
$ getfacl --all-effective acldir/aclfile
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
মুখোশটি লক্ষ্য করুন mask::rw-
,। mask::rwx
ডিরেক্টরিটি তৈরি করার সময় কেন এটির মতো নয় ?
luvly
ফাইলটি তৈরির জন্য কোন ডিফল্ট অনুমতি ব্যবহার করা হয়েছিল তা দেখতে লগ ফাইলটি পরীক্ষা করুন :
$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>
এখান থেকে এটি কিছুটা বিভ্রান্তি পেয়েছে। rwx
ডিরেক্টরিটি তৈরি হওয়ার সময় মুখোশটি সেট করে আপনি ফাইল তৈরির জন্য একই আচরণ আশা করতে পারেন তবে এটি সেভাবে কাজ করে না। কারন কার্নেলটি open()
এর ডিফল্ট অনুমতি নিয়ে ফাংশনটি কল করছে 0666
।
সংক্ষেপ
- ফাইলগুলি কার্যকর করার অনুমতি পাবেন না (মাস্কিং বা কার্যকর)। আমরা কোন পদ্ধতিটি ব্যবহার করি তা বিবেচনা করে না: এসিএল, উমাস্ক বা মাস্ক এবং এসিএল।
- ডিরেক্টরিগুলি কার্যকর করার অনুমতি পেতে পারে তবে এটি মাস্কিং ক্ষেত্রটি কীভাবে সেট করা আছে তার উপর নির্ভর করে।
- এসিএল অনুমতিগুলির অধীনে থাকা কোনও ফাইলের অনুমতি নির্ধারণের একমাত্র উপায় হ'ল ম্যানুয়ালি সেগুলি ব্যবহার করে সেট করা
chmod
।
তথ্যসূত্র
mask::rw-
। কিন্তু এটি আসলে আপনার প্রশ্ন নয়, তাই না?