প্রদত্ত ডিরেক্টরি জগতের তৈরি সমস্ত ফাইলকে পঠনযোগ্য করার জন্য আমি কি আমার উমাস্ককে ACL গুলি ব্যবহার করে ওভাররাইড করতে পারি?


12

ধরুন আমার উমাস্ক 0077।

আমার একটি ডিরেক্টরি রয়েছে, fooএটির জন্য আমি বিশেষ অনুমতি প্রয়োগ করতে চাই। আমি যে ফাইলগুলিতে তৈরি করি fooসেগুলি বিশ্ব পঠনযোগ্য এবং সমস্ত ডিরেক্টরি বিশ্ব পাঠযোগ্য এবং কার্যকর হতে হবে।

বর্তমানে, আমি যদি একটি ফাইল তৈরি করি তবে এটি 0600 হবে এবং একটি ডিরেক্টরি 0700 হবে:

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

আমার উমাস্ক নির্বিশেষে আমি ফাইলটি 0644, এবং ডিরেক্টরি 0755 হতে চাই:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

আমি কীভাবে এটি অর্জন করতে পারি?


আপনি "ডিরেক্টরি প্রতি উমাস্ক" গুগল করার চেষ্টা করেন নি, তাই না? যদি আমার কাছে অনুমতি থাকে তবে আমি আপনাকে এটির জন্য নিচে নামিয়ে দেব, কারণ তৃতীয় হিট আপনি যা চান ঠিক তা করতে ব্যাশ হ্যাক (অন্য ব্যবহারকারীদের জন্য নয়, কেবল আপনার জন্যই মঞ্জুর))
ব্রেট ডিকেম্যান

3
@ বিডিআই আমি এটি দেখেছি। আমি এটি করার অন্যান্য উপায়ে আকর্ষণীয়, আশা করি এসিএল ব্যবহার করে। আমি বরং প্রতিটি সিডিতে আমার উমাস্কটি পরীক্ষা / পরিবর্তন করতে বা বাশ ফাংশনগুলিকে ওভাররাইড করব না।
স্টিকম্যানগম্বি

উত্তর:


15

হ্যাঁ, এসিএলগুলি এটি করতে পারে।

  1. আপনার ফাইল সিস্টেমটি এসিএলে মাউন্ট করা আছে তা নিশ্চিত করুন। এটি পরীক্ষা করতে, টাইপ করুন mount। আপনি অন্যান্য অনুমতিগুলির মধ্যে তালিকাবদ্ধ 'acl' দেখতে পাবেন, যেমন:

    /dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
    

    যদি এটি এসিএল মাউন্ট করা না থাকে তবে / ইত্যাদি / fstab খুলুন এবং বিকল্পগুলির তালিকায় 'এসিএল' যুক্ত করুন:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>   <options>       <dump>  <pass>
    /dev/sda1       /          ext3     noatime,errors=remount-ro,acl 0       1
    

    এখন, নতুন বিকল্পগুলির সাথে চলমান ফাইল সিস্টেমটি পুনরায় মাউন্ট করুন:

    mount -v -o remount /
    
  2. এসসিএল ইউটিলিটিগুলি ইনস্টল করুন। উবুন্টু / ডেবিয়ানে, এটি হ'ল:

    sudo apt-get install acl
    
  3. আপনার নতুন বন্ধুরা setfaclএবং getfaclsetfaclকোনও ডিরেক্টরিতে ডিফল্ট এসিএল পরিবর্তন করতে ব্যবহার করুন :

    setfacl -d -m o:r foo
    

    -dডিফল্ট সেট করে, -mএসিএল সংশোধন করে এবং o:r"অন্যকে" পড়ার অধিকার মঞ্জুরি দেয়। ডিরেক্টরিতে ডিফল্ট সেট করা কোনও ডিরেক্টরিতে সেটগ্রিড সেট করার সমান , তবে গ্রুপটি উত্তরাধিকার সূত্রে সদ্য নির্মিত ফাইলগুলির পরিবর্তে তারা এসিএল উত্তরাধিকার সূত্রে প্রাপ্ত হয়। একসাথে সেটগিড এবং এসিএল শক্তিশালী হতে পারে, কারণ আপনি কার্যকরভাবে গ্রুপ-ভিত্তিক প্রতি ডিরেক্টরি উমাস্কের জন্য একটি গোষ্ঠীকে ডিফল্ট অনুমতি দিতে পারেন এবং সেই গ্রুপের অন্তর্ভুক্ত নতুন তৈরি ফাইলগুলি পেতে পারেন।

  4. আপনার কাজ পরীক্ষা করুন: ls -lএখন স্ট্যান্ডার্ড ফাইল অনুমতি ছাড়াও এসিএলের উপস্থিতি নির্দেশ করে একটি অতিরিক্ত "+" দেখানো উচিত।

    % ls -la foo/
    drwxr--r--+
    

    আপনি এসিএল ব্যবহার করে বিস্তারিত তথ্য পেতে পারেন getfacl

    % getfacl foo
    # file: foo
    # owner: you
    # group: you
    user::rwx
    group::r--
    other::r--
    default:user::rwx
    default:group::---
    default:other::r--
    

1
এটি আমার পক্ষে কাজ করছে বলে মনে হয় না। setfaclএবং getfaclপ্রত্যাশিত আউটপুটটি ফিরিয়ে দিচ্ছে, তবে পিতামাতার ডিরেক্টরিতে কেবল ডিরেক্টরি (ফাইল নয়) এসিএলকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং তারপরেও আমার উমাস্ক ডিফল্টর চেয়ে বেশি অগ্রাধিকার গ্রহণ করে (যদি তারা বিশ্ব পাঠযোগ্য default:other::r--না হয় তবে অন্য ব্যবহারকারীকে অনুমতি দেয় না তাদের অ্যাক্সেস করুন)। আমি কি স্পষ্ট কিছু মিস করেছি?
স্টিকম্যাংম্বি

একটি জিনিস আমি খুঁজে পেয়েছি (সম্ভবত এটিই সমস্যা): রূপটি বর্তমান ব্যবহারকারীর সাথে মেলে এমন প্রথমটি (ব্যবহারকারী, গোষ্ঠী, অন্যান্য) ব্যবহার করবে বলে মনে হয়। এটি হ'ল, যদি আপনি ফাইলটির জন্য গ্রুপের অন্তর্ভুক্ত হন, তবে গ্রুপের জন্য এসিএল প্রক্রিয়া করা হবে, অন্যের জন্য এসিএল নয়। আপনি যদি -d দিয়ে ডিরেক্টরিটি প্রয়োগ করেন তবে
এসিএলটি

1
এইচএম, আবার এটি চেষ্টা করে দেখুন এবং সবকিছু ঠিকঠাক কাজ করেছে। দুঃখিত, প্রথমবার আমি কী ভুল করেছিলাম তা নিশ্চিত নই! ধন্যবাদ :)
স্টিকম্যানগম্বি

3

আপনি যেমন মাস্ক ACL- সম্পত্তি সেট করে ডিরেক্টরিতে একটি umask জোর করতে পারে:

setfacl -d -m mask:07 .

-4

কেবল অনডির ইনস্টল করুন এবং আপনার প্রয়োজন অনুসারে এটি সঠিকভাবে কনফিগার করুন। আমি এখানে অবস্থিত একটি অনুরূপ সমস্যার উত্তর দিয়েছি ।


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