রিকার্সিভ chmod: ফাইলগুলির জন্য rw, ডিরেক্টরিগুলির জন্য rwx


28

আমি chmodপ্রচুর ফাইল এবং ডিরেক্টরি চাই। হিসাবে xডিরেক্টরি তালিকায় ইঙ্গিত করে এবং আমি আবেদন করতে চাই নিয়মিত ফাইল চালানো rwফাইলের জন্য এবং rwxডিরেক্টরি জন্য। এটি কি কেবল chmodকমান্ড ব্যবহার করেই সম্ভব ?

যদি তা না হয় তবে সবচেয়ে সুবিধাজনক উপায় কী?

একটি এরকম chmod -R 770একটা সম্ভাবনা হিসাবে আমি নিয়মিত ফাইল এক্সিকিউটেবল পরিণত করতে চাই না নয়।


1
আপনি কি ফাইল এবং ডিরেক্টরিতে জনসাধারণের লেখার অনুমতি চান? তার মানে আপনার কোনও যত্ন নেই যে ফাইলগুলির মধ্যে কে ক্লোবার করে?
জোনাথন লেফলার

সত্য। আমি উপরে এটি পরিবর্তন করেছি।
মুছে ফেলা হয়েছে

উত্তর:


19

আমি একক findকমান্ড ব্যবহার করে উপলক্ষে এটি করি । কুরুচিপূর্ণ তবে কার্যকর।

find /p/a/t/h \( -type d -exec chmod 755 {} \; \) -o \( -type f -exec chmod 644 {} \; \)

"পথ" ফাঁকা রাখার ক্ষেত্রে "{}" उद्धিত করার দরকার নেই? লাইক find . -type d -exec chmod -vc 755 "{}" \;( -vcকিছু প্রতিক্রিয়া সহ )। (এবং সম্ভবত, পরিষ্কার করার জন্য, উত্তরের সাথে দুটি স্বতন্ত্র কমান্ড যুক্ত করুন?)
আরজান

না, {এর উদ্ধৃতি দেওয়ার প্রয়োজন নেই (আমি একেবারে নিশ্চিত হওয়ার জন্য পরীক্ষা করেছি)। কমান্ডের মধ্যে ser in সন্নিবেশ সন্ধান করলে এটি সঠিকভাবে পালানো যায়। আমি সন্ধানের অভ্যন্তরীণ কাজগুলি সন্ধান করিনি, তবে আমি ধরে নেব যে এটি এক্সিকিউটিভ () এ পাস করার জন্য একটি আর্গুমেন্ট অ্যারে তৈরি করে, এবং এটি অ্যারের মধ্যে ফাইলের নামটি স্ট্রিপিপি () করবে। Chmod এর যুক্তিগুলি তাকান, এটি সঠিকভাবে প্রদর্শিত হবে।
বাউমার্ট

37

ম্যান পৃষ্ঠা থেকে এক্স অনুমতিটি ব্যবহার করুন:

ফাইলটি ডিরেক্টরি হলে এক্সিকিউট / অনুসন্ধান বিটগুলি বা এক্সিকিউট / অনুসন্ধান বিটগুলির মধ্যে কোনও আসল (অবিবর্তিত) মোডে সেট করা থাকে। পার্ম চিহ্ন "এক্স" এর সাথে অপারেশনগুলি কেবল অপি প্রতীক "+" এর সাথে মিলিতভাবে অর্থবোধক এবং অন্য সমস্ত ক্ষেত্রে এড়ানো হবে।

সুতরাং নিম্নলিখিতগুলি করুন:

chmod -R a-x [directory]
chmod -R a+rwX [directory]

এটি সমস্ত ফাইল এবং ডিরেক্টরি থেকে এক্সিকিউট বিট সরিয়ে দেয় যারপরে প্রত্যেকটি বিষয়তে পড়ার এবং লেখার অধিকার যুক্ত করে এবং কেবল ডিরেক্টরিতে অধিকারগুলি কার্যকর করে। (প্রথম ধাপ থেকে কোনও নিয়মিত ফাইল আর কার্যকর করতে পারে না))


1
এটি নিয়মিত ফাইলগুলিতে 666 মোড জোর করে না। এটি যদি ইতিমধ্যে সেট করে থাকে তবে এটি নিয়মিত ফাইলগুলির জন্য নির্বাহযোগ্য বিট সাফ করে না।
কোয়াকোট কোয়েক্সোট

সুতরাং যে ক্ষেত্রে আপনি chmod -R a-x [directory]অনুসরণ করতে পারে chmod -R a+rwX [directory]?
জাওয়াদেল

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

আমি একবার করলে a-xডিরেক্টরিটি অ্যাক্সেসযোগ্য নয়। প্রকৃতপক্ষে, অনুমতি ছাড়ায় chmod ব্যর্থ হয় এবং ডিরেক্টরিতে থাকা ফাইলগুলি থেকে এক্সিকিউটেবল বিটটি সরিয়ে দেয় না। রুট না হয়ে এটি করার কোনও উপায় আছে কি?
অবাকর

14

এছাড়াও আপনি ব্যবহার করতে পারেন findসহ xargs:

find . -type f -print0 | xargs -0 chmod 666
find . -type d -print0 | xargs -0 chmod 777

যেখানে ডি ডিরেক্টরী বা এফ আইলিকে -typeনির্দিষ্ট করে ।


1
Xargs একটি দৈর্ঘ্য সীমাবদ্ধতা আছে না? এটি প্রচুর ফাইল এবং ডিরেক্টরি।
মুছে ফেলা হয়েছে

2
আমি প্রথমে ডিরেক্টরিগুলি করব, তারপরে ফাইলগুলি করব। অন্যথায়, অনুমতি না থাকার কারণে আপনি কিছু সাবট্রি মিস করার ঝুঁকি নিতে পারেন। এছাড়াও, তালিকাটি chmod এর আগে বা পরে স্কাউট করা হয়েছে কিনা তা পরীক্ষা করা উচিত, অন্যথায়, উপরের মতো। এবং হ্যাঁ, আমি xargs ব্যবহার করা থেকে বিরত থাকব।
স্টেফানো বোরিনি

1
xargsএকাধিক মৃত্যুদন্ড কার্যকর করার জন্য দীর্ঘ কমান্ড লাইনগুলি ভাঙ্গার জন্য যথেষ্ট স্মার্ট। আপনার xargs ম্যানপেজের সাথে পরামর্শ করুন এবং চেক করতে ভুলবেন না xargs --show-limits
মাইক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.