আমি কীভাবে ইউনিক্সের একটি কমান্ডের ডিরেক্টরিতে সমস্ত ফাইল অনুমতিগুলি পরিবর্তন করতে পারি?
আমি কীভাবে ইউনিক্সের একটি কমান্ডের ডিরেক্টরিতে সমস্ত ফাইল অনুমতিগুলি পরিবর্তন করতে পারি?
উত্তর:
পুনরাবৃত্তির সাথে ফাইল বা ডিরেক্টরিতে প্রবেশের অনুমতি পরিবর্তন করতে chmod
কমান্ডটি ব্যবহার করুন ( এর নির্দিষ্ট বিকল্পগুলি সম্পর্কে আরও পড়তে ম্যান chmod দেখুন):
chmod +x dir # Set a directory to be listable
chmod +x file # Set a file to be executable
একটি ফাইল / ডিরেক্টরিটির মালিককে পুনরাবৃত্তভাবে পরিবর্তন করতে (সমস্ত বংশধরকে প্রভাবিত করে):
chown -R username dir # Recursively set user
chown -R username:groupname dir # Recursively set user and group
ডিরেক্টরিতে সমস্ত ফাইলের অনুমতি বিট পরিবর্তন করতে, পুনরাবৃত্তি:
find dir -type f -exec chmod 644 {} ';' # make all files rw-r-r-
সমস্ত ডিরেক্টরিতে অনুমতি বিট পরিবর্তন করতে:
find dir -type d -exec chmod 755 {} ';' # make all directories rwxr-xr-x
আপনি ঠিক এটি করতে পারলে ভাল লাগবে:
chmod -R 755 dir
তবে এতে সমস্যা আছে। এটি ফাইল এবং ডিরেক্টরি একই আচরণ করে। উপরের কমান্ডটি ডিরেক্টরিগুলি সমস্ত ব্যবহারকারীর দ্বারা তালিকাভুক্ত ও পাঠযোগ্য করে তোলে তবে এটি সমস্ত ফাইলকে সম্পাদনযোগ্য করে তোলে যা সাধারণত আপনি করতে চান না।
যদি আমরা এটিকে পরিবর্তন করি তবে আমরা 644
আরও একটি সমস্যা পাই:
$ chmod -R 644 x2
chmod: cannot access `x2/authors.html': Permission denied
chmod: cannot access `x2/day_of_week.plot': Permission denied
chmod: cannot access `x2/day_of_week.dat': Permission denied
chmod: cannot access `x2/commits_by_year.png': Permission denied
chmod: cannot access `x2/index.html': Permission denied
chmod: cannot access `x2/commits_by_year.plot': Permission denied
chmod: cannot access `x2/commits_by_year_month.plot': Permission denied
chmod: cannot access `x2/files_by_date.png': Permission denied
chmod: cannot access `x2/files.html': Permission denied
...
সমস্যাটি হ'ল 644
ডিরেক্টরি তালিকার বিটটি বের করে, এবং এই পার্শ্ব প্রতিক্রিয়াটি ফাইল ট্রিটিকে আরও অনুসরণ করতে বাধা দেয়। আপনি ব্যবহার করে এই সমস্যাটি নিয়ে কাজ করতে পারেন sudo
, তবে আপনি এখনও এমন ডিরেক্টরিগুলি সমাপ্ত করেছেন যা সম্পূর্ণরূপে অ-রুট ব্যবহারকারীদের পক্ষে অকেজো।
মুল বক্তব্যটি হ'ল chmod -R
কিছু ক্ষেত্রে (যেমন chmod -R g-r
) ঠিক ঠিক কাজ করে তবে আপনি -x
বিটটি নিয়ে ঝামেলা করতে চান এমন ক্ষেত্রে নয় , কারণ এটি ফাইল ও ডিরেক্টরিতে নির্বিচারে কাজ করে ope
644
বা তিনি মোটেও -x
ডিরেক্টরিতে সেট করছেন? প্রশ্নটি কেবল এই শর্ত দেয় যে তিনি অনুমতিগুলি পরিবর্তন করতে চান, বিশেষত কোনওটি নয়।
chmod -R go=u,go-w /dir
chmod
একটি -R
পতাকা রয়েছে যার অর্থ ফাইল এবং ডিরেক্টরিগুলিতে পুনরাবৃত্তভাবে অনুমতি পরিবর্তন করা।
ফোল্ডারগুলির জন্য সঠিক জিনিসটি করতে আপনি মূলধন 'এক্স' ব্যবহার করতে পারেন: 'এক্স' = "কেবলমাত্র ফাইলটি ডিরেক্টরি হয় বা ইতিমধ্যে কিছু ব্যবহারকারীর জন্য অনুমতি কার্যকর থাকলেই কেবল এক্সিকিউট / অনুসন্ধান করুন"
সুতরাং, যেমন: chmod -R ug = rwX, o-rwx।
পুরো গাছটিকে মালিক এবং প্রতিটি ফাইলের গোষ্ঠীতে অ্যাক্সেসযোগ্য এবং অন্য কারও কাছে অ্যাক্সেসযোগ্য করে তুলবে। ইতিমধ্যে কার্যকর হওয়া ফাইলগুলির পরেও কার্যকর হবে এবং সমস্ত ডিরেক্টরিতে ব্যবহারকারীর এবং গোষ্ঠীর জন্য 'এক্স' থাকবে অন্যদের জন্য নয়।
chmod -R 444 somedir
এটিতে ফাইল সহ ডিরেক্টরিতে চেষ্টা করুন। আপনি পাবেন Permission denied
কারণ -x পতাকাটি ডিরেক্টরিগুলি বন্ধ করে দিচ্ছে এবং ডিরেক্টরিটি পড়া চালিয়ে যাওয়া দরকার।
chmod -R <file permission> *
ম্যান পৃষ্ঠা থেকে chmod
:
-R, --recursive
change files and directories recursively
একাধিক দিকের জন্য স্যুইচ chmod
সহ ব্যবহার করুন -R
যা উপ ডিরেক্টরি গাছের ভিতরে কয়েক মিলিয়ন ফাইল রয়েছে এবং আপনি একসাথে এই ফাইলগুলির ফাইলের অনুমতিগুলি পরিবর্তন করতে চান।
ফাইল অনুমতি যেমন হতে পারে। 777, 755, 644 ইত্যাদি