উমাস্ক কীভাবে এসিএলগুলিকে প্রভাবিত করে?


12

কেউ আমাকে ব্যাখ্যা করতে পারবেন কীভাবে umaskএসিএলগুলি সক্রিয় করা হলে সদ্য নির্মিত ফাইলগুলির ডিফল্ট মাস্কটিকে কীভাবে প্রভাবিত করে? এই সম্পর্কে কিছু নথি আছে?

উদাহরণ:

$ mkdir test_dir && cd test_dir
$ setfacl -m d:someuser:rwx -m u:someuser:rwx .  # give access to some user
$ getfacl .
# file: .
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:someuser:rwx
default:group::---
default:mask::rwx
default:other::---
$ umask # show my umask
077
$ echo "main(){}" > x.c # minimal C program
$ make x # build it
cc     x.c   -o x
$ getfacl x
# file: x
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx           #effective:rw-
group::---
mask::rw-
other::---

আমি আশা করব mask:rwx। প্রকৃতপক্ষে সেট umaskকরার পরে 027আমি প্রত্যাশিত আচরণটি পাই।


077 এর umask সহ, আপনি একটি পাবেন mask::rw-। কিন্তু এটি আসলে আপনার প্রশ্ন নয়, তাই না?
slm

@ এসএলএম এটি আমার প্রশ্নের অংশ। আমি জানতে চাই যে নতুন ফাইলগুলির মুখোশ কীভাবে উমাস্কের উপর নির্ভর করে। আমি বেশ অবাক হয়েছিলাম যে 077 এর সাথে আমি পেয়েছি mask::rw-এবং mask::rwxযা পাই না এটি ডিরেক্টরিটির ডিফল্ট মুখোশ ছিল।
জোফেল

ঠিক আছে, আমি এখন আমার উত্তরটি উদাহরণগুলির সাথে আপডেট করছি যা এটি পরিষ্কার করতে সহায়তা করবে। আমাকে কয়েক মিনিট দিন।
slm

এই প্রশ্নটি নিবিড়ভাবে সম্পর্কিত।
জোফেল

উত্তর:


10

আমি এই উদাহরণটি পেয়েছি, শিরোনাম: লিনাক্সে এসিএল এবং এমএএসকে । এই নিবন্ধে নিম্নলিখিত উদাহরণগুলি প্রদর্শিত হয়েছে যা আমি মনে করি যে এসিএল কীভাবে 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

তথ্যসূত্র


@ জোফেল - যদি তা বোঝা যায় তবে আমাকে জানান।
slm

@ এসআইএম আপনার বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। এটি আমার আসল সমস্যার কাছাকাছি এনেছে: chmod সিস্কেলে গ্রুপের অনুমতি ফাইলের ( chmod("file",0760)-> mask:rw, chmod("file",0770)-> mask:rwx) মুখোশকে প্রভাবিত করে । সম্ভবত আমার এই সম্পর্কে একটি নতুন প্রশ্ন শুরু করা উচিত ...
জোফেল

@ জোফেল - হ্যাঁ এটি অন্য প্রশ্নের মতো মনে হচ্ছে।
slm

@ এসআইএম এবং এটি ইতিমধ্যে এখানে উত্তর দেওয়া হয়েছিল ।
জোফেল

"যখন লিনাক্স সিস্টেমে কোনও ফাইল তৈরি করা হয় তখন ডিফল্ট অনুমতিগুলি 0666 প্রয়োগ করা হয় ..." - ঠিক এটি সঠিক নয়, যেহেতু এটি অ্যাপ্লিকেশন তৈরির উপর নির্ভর করে
ilkkachu

2

সুরক্ষার উদ্দেশ্যে, লিনাক্স অপারেটিং সিস্টেম একটি এক্সিকিউট বিট সহ কোনও ফাইল স্বয়ংক্রিয়ভাবে তৈরি করার অনুমতি দেয় না। এটি সাইবার আক্রমণকারীদের এ জাতীয় ফাইলগুলিতে প্রোগ্রাম লিখতে এবং যদি তারা আপনার সার্ভারে অ্যাক্সেস অর্জন করে তবে এগুলি কার্যকর করতে বাধা দেয়। এটি কেবল একটি নিরাপত্তা সতর্কতা। আপনাকে chmod ইউটিলিটি তৈরি করার পরে ফাইলগুলিতে ম্যানুয়ালি এক্সিকিউট বিট সেট করতে হবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.