নতুন ফাইল অনুমতি কীভাবে প্যারেন্ট ডিরেক্টরি থেকে উত্তরাধিকারী করবেন?


84

আমার কাছে একটি ডিরেক্টরি আছে data। তারপরে আমি ইউজার আইডি 'রোবট' এর অধীনে একটি স্ক্রিপ্ট চালাচ্ছি। রোবট dataডিরেক্টরিতে লিখে এবং ভিতরে ফাইল আপডেট করে। ধারণাটি dataআমার এবং রোবট উভয়ের জন্য আপডেট করার জন্য উন্মুক্ত।

সুতরাং আমি অনুমতি এবং মালিক গোষ্ঠীটি সেটআপ করি

drwxrwxr-x  2 me robot-grp 4096 Jun 11 20:50 data

যেখানে আমি এবং রোবট উভয়ই 'রোবট-জিআরপি'র অন্তর্ভুক্ত। আমি অনুমতি এবং মালিক গ্রুপ পুনরাবৃত্তভাবে পিতামাতার ডিরেক্টরি মত পরিবর্তন করি।

আমি নিয়মিত dataব্যবহার করে ডিরেক্টরিতে নতুন ফাইল আপলোড করি rsync। দুর্ভাগ্যক্রমে, নতুন আপলোড করা ফাইলগুলি আমার প্রত্যাশার মতো পিতামাতার ডিরেক্টরিটির অনুমতি লাভ করে না। পরিবর্তে এটি এর মতো দেখাচ্ছে

-rw-r--r-- 1 me users       6 Jun 11 20:50 new-file.txt

রোবট যখন আপডেট করার চেষ্টা করে তখন new-file.txtফাইলের অনুমতি না থাকার কারণে এটি ব্যর্থ হয়।

আমি নিশ্চিত না যে উমাস্কটি সেট করা সহায়তা করে। কোনও ক্ষেত্রে নতুন ফাইলগুলি সত্যই তা অনুসরণ করে না।

$ umask -S
u=rwx,g=rx,o=rx

আমি প্রায়শই ইউনিক্স ফাইলের অনুমতি নিয়ে বিভ্রান্ত হই। আমার কি সঠিক পরিকল্পনা আছে? আমি ডেবিয়ান লেনি ব্যবহার করছি।

উত্তর:


52

আপনি আপনার সিস্টেমের ডিফল্ট উমাস্ক পরিবর্তন করতে চান না, এটি একটি সুরক্ষা ঝুঁকি। স্টিকি বিট বিকল্পটি কিছুটা কাজ করবে তবে এসিএল ব্যবহার করা সবচেয়ে ভাল উপায়। এটি আপনার ভাবার চেয়ে সহজ। বেসিক এসিএলগুলির সমস্যা হ'ল এগুলি ডিফল্টরূপে পুনরাবৃত্ত হয় না। আপনি যদি কোনও ডিরেক্টরিতে এসিএল সেট করেন তবে কেবলমাত্র সেই ডিরেক্টরিতে থাকা ফাইলগুলি এসিএলকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। আপনি যদি একটি উপ-ডিরেক্টরি তৈরি করেন তবে ACL পুনরাবৃত্তি করতে সেট না করা এটি প্যারেন্ট এসিএল পায় না।

প্রথমে নিশ্চিত করুন যে ডিরেক্টরিটি চালু আছে তার জন্য ACL গুলি সক্ষম রয়েছে are আপনার যদি থাকে তবে আপনি tune2fsনিম্নলিখিতটি সম্পাদন করতে পারেন:

# tune2fs -l /dev/sda1 | grep acl
Default mount options:    user_xattr acl

আপনার যদি না থাকে tune2fs, তবে পরীক্ষা করুন fstabs:

# cat /etc/fstab 
/dev/system/root        /                       ext3    defaults        1 1
/dev/system/home        /home                   ext3    defaults        1 2
/dev/storage/data       /data                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2

চতুর্থ কলামটি "ডিফল্ট" বলতে আমার সিস্টেমে মানে (সেন্টোস 5.5), এসিএল চালু আছে। সন্দেহ হলে এটিকে খেলাপি হিসাবে ছেড়ে দিন। আপনি ACL এর এবং এটি ত্রুটি সেট আউট করার চেষ্টা করেন, তাহলে ফিরে যান এবং / etc ACL বিকল্প যোগ fstab অধিকার অক্ষমতা পর /: defaults,acl

আমি যা বুঝি সেগুলি থেকে আপনি ব্যবহারকারী গ্রুপের প্রত্যেকের ডেটা ডিরেক্টরিতে লেখার অ্যাক্সেস থাকতে চান। এটি নিম্নলিখিত দ্বারা সম্পন্ন:

setfacl -Rm g:users:rwX,d:g:users:rwX data/

আমি এই কমান্ডটি ব্যবহার করেছি তবে এটি আমার সমস্যার সমাধান করেনি, দয়া করে কীভাবে আমি এই আদেশটি পূর্বাবস্থায় ফিরিয়ে আনতে পারি?
Itai Ganot

উবুন্টু দিয়ে কৌতুকটি করেছিলেন sudo setfacl -Rm g:users:rwX,d:g:users:rwX /var/www/logs_or_something। পিএইচপিউইনিট পরীক্ষায় সমস্যা ছিল। চলমান পরীক্ষা থেকে লগ ফাইলগুলি তৈরি করার পরে আপাচে ব্যবহারকারী www-dataতাদের লিখতে / পড়তে পারেনি।
s3m3n

2
@Itai Ganot - অনুযায়ী setfaclman পৃষ্ঠা , -bবা --remove-allবর্ধিত ACLs সরিয়ে ফেলা হয়।
jww

সুতরাং, আপনি ঠিক setfacl -Rm g:users:rwX,d:g:users:rwX data/শেষে যুক্ত হবে /etc/fstab?
425nesp

@ পাইয়া নং শুধুমাত্র পরিবর্তন / ইত্যাদি করতে / fstab ফাইলের মধ্যে পরিবর্তন হয় defaultsথেকে defaults,aclsetfaclটার্মিনাল থেকে চালানো উচিত এমন একটি কমান্ড। data/আপনি যে ডিরেক্টরিটি পরিবর্তন করতে চান তার পথ দ্বারা প্রতিস্থাপন করা উচিত।
সেগফল্ট

32

ডিরেক্টরি সেটগিড ( g+s) চিহ্নিত করে নতুন ফাইল ডিরেক্টরিটির গোষ্ঠী মালিকানার উত্তরাধিকারী হয়ে উঠবে, তবে আরএসসিএনসি বিকল্পটি এটিকে -gওভাররাইড করার চেষ্টা করবে।


11
সেটগিড বিট কেবল তৈরি ফাইলগুলি গ্রুপের উত্তরাধিকারী করে তোলে / যদি / নতুন ফাইল তৈরি করা ব্যক্তি সেই গোষ্ঠীর সদস্য হয়; যদি ব্যবহারকারী তৈরির মালিক হন তবে তিনি গ্রুপের সদস্য না হন বা ডিরেক্টরিটি বিশ্ব লিখনযোগ্য, সেটগ্রিড বিট কিছুই করবে না। এবং সমস্ত ফাইল-তৈরি ব্যবহারকারীদের জন্য উমাস্ক এখনও উপযুক্ত গ্রুপ অ্যাক্সেসের অনুমতি দেওয়ার জন্য সেট করা দরকার।
dannysauer

1
@ উদ্যানসৌয়ের "যদি ব্যবহারকারী তৈরির মালিক হন তবে তিনি গ্রুপের সদস্য না হন ... সেটগিড বিট কিছুই করবে না" - আপনাকে ধন্যবাদ। এখনই জ্ঞান তৈরি করে - তবে আরএসসিএনসি থেকে কোনও প্রতিক্রিয়া না পেয়ে, ভাবছেন কেন এটি কাজ করছে না।
ব্যবহারকারী 12345

4

অন্যান্য উত্তরগুলি সাধারণ ক্ষেত্রে প্রযোজ্য, তবে আপনি যেমন উল্লেখ করেছেন যে আরএসসিএনসি সমস্যাটির উত্স, আপনি কেবলমাত্র তার অনুরোধটি টিউন করতে পারেন।

শুরু করার জন্য, জনপ্রিয় -aপতাকাটি আরএসসিএন কপির অনুমতি দেয়; ব্যবহার -rএর istead -aঅথবা অ্যাড -no-p(কোন অনুমতি সিঙ্ক-এর জন্য) এবং -no-g(কোন গ্রুপ সিঙ্ক-এর জন্য)। এছাড়াও --chmodনতুন তৈরি করা ফাইলগুলিতে অনুমতি পরিবর্তনের জন্য আরএসসিএনচি পতাকা সমর্থন করে।


3

আপনার উমাস্ক আপনার যে অনুমতি চান তা ভুল। আপনি 002 এর একটি উমাস্ক চান currently আপনার বর্তমানে 022 এর একটি উমাস্ক রয়েছে Also এছাড়াও ডিরেক্টরিটি সেটগিড তৈরি করার বিষয়ে মন্তব্যটি সঠিক, তবে আমি নিশ্চিত নই যে ফাইল গ্রুপের মালিকানা এমন কিছু যা আপনি পরিবর্তন করতে চান কিনা।

ইউনিক্স ফাইল অনুমতিগুলি আসলে খুব সাধারণ একটি মডেল। আমি এসিএলগুলি নিজেকে সম্পূর্ণ বিভ্রান্ত করতে দেখি। :-)


4
"ইউনিক্স ফাইলের অনুমতিগুলি আসলে খুব সহজ একটি মডেল I এসিএলগুলি নিজেকে সম্পূর্ণ বিভ্রান্ত করতে দেখি।" - আমি বিপরীতটি অনুভব করি (তবে যাইহোক +1)। এসিএল (এবং এসিইগুলিকে মঞ্জুর / অস্বীকার করুন) সহজ, এবং ইউনিক্স অনুমতিগুলি কোনও অর্থ দেয় না। তবে এটি এমন একজন লোকের কাছ থেকে আসছে যিনি একটি পোস্টফিক্স / ডোভকোট / ক্ল্যাম / স্প্যামআস্যাসিন ইনস্টল ভুগছেন।
jwww
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.