ফোল্ডারগুলিকে স্পর্শ না করে পুনরায় পুনরুক্তরূপে ফাইলগুলি থেকে সম্পাদনের অনুমতিগুলি কীভাবে সরানো যায়?


40

আমি একটি এনটিএফএস ড্রাইভে একটি ব্যাকআপ তৈরি করেছি এবং ভাল, এই ব্যাকআপটি সত্যই প্রয়োজনীয় প্রমাণিত। যাইহোক, এনটিএফএস ড্রাইভের অনুমতি মেসে উঠল। আমি এগুলি প্রতিটি ডাব্লু / ও ম্যানুয়ালি প্রতিটি ফাইল প্রতিটি ফিক্সে ফিরিয়ে আনতে চাই like

একটি সমস্যা হঠাৎ আমার সমস্ত পাঠ্য ফাইলগুলি কার্যকর করার অনুমতি অর্জন করেছে, যা ভুল wrong সুতরাং আমি চেষ্টা করেছি:

sudo chmod -R a-x folder\ with\ restored\ backup/

তবে এটি ভুল কারণ এটি xডিরেক্টরি থেকে অনুমতি সরিয়ে দেয় যা এগুলি অপঠনযোগ্য করে তোলে।

এক্ষেত্রে সঠিক কমান্ড কী?


1
মেটা: আমি কখনই বুঝতে পারি নি যে ইউনিক্স সিস্টেমগুলি ডস বা উইন্ডোজ ফাইল সিস্টেম থেকে মাউন্ট করা ফাইলগুলিতে এক্সিকিউট বিট যুক্ত করে। কারওর মতো কখনও এই ফাইলগুলি কার্যকর করা যায় না। আমি যেখানেই ব্যবহারিক ব্যবহারের ক্ষেত্রে আমার মাউন্ট বিকল্পগুলিতে সাধারণত "নোেক্সেক" যুক্ত করি।
এডওয়ার্ড ফ্যাল্ক

উত্তর:


68
chmod -R -x+X *

-xঅপসারণ সবার জন্য অনুমতি চালানো
দ্য +Xসব জন্য অনুমতি চালানো যোগ হবে, কিন্তু শুধুমাত্র ডিরেক্টরি জন্য।


2
অনুমতিটি শেষ পর্যন্ত অনুমতিগুলিকে স্বাভাবিক অবস্থায় ফিরিয়ে আনতে আমি যে কমান্ডটি ব্যবহার করেছি: chmod -R a-x + X, u-x + rwX, go-wx + rX ডিরেক্টরি / name`
gaazkam

3
এছাড়াও বিএসডি

4
এটি "ফোল্ডারগুলিকে স্পর্শ না করে" প্রয়োজনীয়তা ব্যর্থ করে। যদি কার্যকর হয় (সম্ভবত বিশ্বের জন্য) কিছু ডিরেক্টরিতে ইচ্ছাকৃতভাবে সরানো হয়েছে? আপনার এটি যুক্ত করা উচিত নয়।
বেন ভয়েগট

4
এটি ম্যাকের জন্য কাজ করে নি। শুরুতে -আর পতাকাটি সরিয়ে নেওয়া এই লিনাক্স এবং ম্যাক উভয় টার্মিনালেই এই কাজটি তৈরি করবে। chmod -R -x+x *
জোমো 1984

2
প্রকৃত অর্থে এটি ওএসএক্সে চলে তবে এটিতে পছন্দসই প্রভাব নেই। আপনাকে এটি দুটি পৃথক পদক্ষেপ হিসাবে করতে হবে:chmod -R -x * && chmod -R +X *
টিম মিম

14

ঠিক আছে, আমি ম্যাক ওএস এক্স, বিএসডি, এবং লিনাক্সের জন্য "chmod" ম্যান পেজগুলি আবার পড়েছি এবং কয়েকটি পরীক্ষা-নিরীক্ষা করেছি। প্রতীকী মোড সম্পর্কে আমি যা শিখেছি তা এখানে। এটি জটিল হতে পারে তবে এটি বোঝার মতো:

  • সাধারণ ফর্মটি হ'ল ধারা [, ধারা …] যেখানে:
  • ধারা : = [উগোয়া] [+ - =] [rwxXstugo]
  • [ugoa] ( যিনি ) (একাধিক নির্দিষ্ট করুন) এর অর্থ ব্যবহারকারী, গোষ্ঠী, অন্যান্য, বা সকলের জন্য অনুমতি সেট করুন। নির্দিষ্ট না করা থাকলে ডিফল্টটি 'এ' হয় তবে উমাস্ক কার্যকর হয়।
  • [+ - =] ( ক্রিয়া ) (একটি নির্দিষ্ট করুন) এর অর্থ:
    • + এর অর্থ ইতিমধ্যে কার্যকরভাবে থাকা অনুমতিগুলিতে নির্দিষ্ট অনুমতিগুলি যুক্ত করুন
    • - এর অর্থ ইতিমধ্যে কার্যকরভাবে থাকা অনুমতিগুলি থেকে নির্দিষ্ট অনুমতিগুলি সরান
    • = এর অর্থ হ'ল নির্দিষ্ট অনুমতিগুলিতে অনুমতিগুলি সেট করুন, সমস্ত অন্যান্য পরিষ্কার করে
  • [rwxXstugo] ( অনুমতি ) (rwxXst এর একাধিক বা ugo এর মধ্যে একটি নির্দিষ্ট করে) নির্দিষ্ট ব্যবহারকারী (গুলি) এর জন্য নিম্নলিখিত হিসাবে অনুমতি নির্ধারণ করে:
    • r - পড়ুন
    • ডাব্লু - লিখুন
    • এক্স - এক্সিকিউট / অনুসন্ধান
    • এক্স - এক্সিকিউট / অনুসন্ধান iff ডিরেক্টরি বা কোনও এক্সিকিউট বিট ইতিমধ্যে সেট করা ছিল।
    • s - suid বা sgid
    • t - স্টিকি
    • u - ব্যবহারকারীর অনুমতি অনুলিপি করুন
    • g - গ্রুপের অনুমতি অনুলিপি করুন
    • ও - অন্যান্য অনুমতি অনুলিপি

সুতরাং উদাহরণস্বরূপ, a+xপ্রত্যেকের দ্বারা একটি ফাইল সম্পাদনযোগ্য করা হবে। a+Xপ্রত্যেকের দ্বারা এটি সম্পাদনযোগ্য একটি ফাইল তৈরি করে যদি এটি কারও দ্বারা কার্যকর করা হত।

a+xপ্রত্যেককে ডিরেক্টরি অনুসন্ধানযোগ্য করে তুলবে। a+Xপ্রত্যেককে ডিরেক্টরি অনুসন্ধানযোগ্য করে তুলবে।

বিএসডি এবং লিনাক্সের মধ্যে মূল পার্থক্যটি হ'ল বিএসডি এর সাথে, chmod কার্যকর করার আগে ফাইলের অনুমতিগুলির উপর ভিত্তি করে সংকল্পটি করা হয়। লিনাক্সের সাথে থাকাকালীন, + এক্স ক্লজটি কার্যকর হওয়ার আগেই সংকল্পটি করা হয়।

সুতরাং বিএসডি-র সাথে সংমিশ্রণটি a-x,a+Xকার্যকর / অনুসন্ধানের অনুমতি সরিয়ে ফেলবে এবং তারপরে প্রত্যেকের দ্বারা ডিরেক্টরি অনুসন্ধানযোগ্য হবে এবং এটি যদি কারও দ্বারা প্রকৃতপক্ষে নির্বাহযোগ্য হয় তবে ফাইল দ্বারা প্রত্যেকের দ্বারা সম্পাদনযোগ্য করে তোলে make

লিনাক্সের সাহায্যে a-x,a+Xএক্সিকিউট / অনুসন্ধানের অনুমতি সরিয়ে ফেলবে এবং তারপরে প্রত্যেকের দ্বারা ডিরেক্টরি অনুসন্ধানযোগ্য হবে, যখন কোনও ফাইলই কারও দ্বারা এক্সিকিউটেবল হয় না।


এখানে একটি কংক্রিটের উদাহরণ রয়েছে: বিএসডি মেশিনে: একটি ডিরেক্টরি, একটি এক্সিকিউটেবল ফাইল এবং একটি এক্সিকিউটেবল ফাইল:

drwxr-x---  2 falk  staff  68 Jul 19 18:01 fee/
-rwxr-x---  1 falk  staff   0 Jul 19 18:01 fie*
-rw-r-----  1 falk  staff   0 Jul 19 18:01 foe

লক্ষ্য করুন যে ডিরেক্টরি এবং "fie" উভয়ই এক্সিকিউটেবল / ব্যবহারকারী দ্বারা অনুসন্ধানযোগ্য, তবে অন্যের দ্বারা নয়।

এখন আমরা মৃত্যুদণ্ড কার্যকর করি chmod a-x,a+X *। প্রথম ধারাটি সমস্ত ফাইলের জন্য সমস্ত ব্যবহারকারীর কাছ থেকে এক্সিকিউট / অনুসন্ধান বিটটি ছিনিয়ে নেবে, তবে দ্বিতীয় ধারাটি "ফি" এবং "ফি" উভয়ের জন্য এটিকে আবার যুক্ত করবে। "ফি" কারণ এটি একটি ডিরেক্টরি, এবং "ফাই" কারণ এটিতে কমপক্ষে একটি নির্বাহযোগ্য বিট শুরু হয়েছিল had

drwxr-x--x  2 falk  staff  68 Jul 19 18:01 fee/
-rwxr-x--x  1 falk  staff   0 Jul 19 18:01 fie*
-rw-r-----  1 falk  staff   0 Jul 19 18:01 foe

আমি একই ফলাফল কার্যকর ছিল chmod -x+X

উপসংহার: জ্যাক গীবের সমাধান লিনাক্সে কাজ করবে, তবে বিএসডি-র জন্য আপনার দুটি পাস করতে হবে।

আমি এটি এসভিআর 4 বা অন্যান্য ইউনিক্স ভেরিয়েন্টে পরীক্ষা করিনি।


ভাল লাগছে। এ সম্পর্কে গবেষণা করার জন্য ধন্যবাদ।
জ্যাক গীব ২

10

এটি করার একটি উপায়:

find backup -type f -exec chmod 0644 {} +

6
এটি পরিবর্তন করতে চান না এমন অনুমতিগুলি যোগ করতে বা সরিয়ে দিতে পারে। ব্যবহার করা আরও ভালchmod a-x {}
এডওয়ার্ড ফালক

1
@ অ্যাডওয়ার্ডফাল্ক chmod a-x {}আপনি যে অনুমতিগুলি পরিবর্তন করতে চাননি সেগুলি সরিয়েও শেষ করতে পারে এবং এটি ফাইলগুলিকে বিশ্ব- লেখার যোগ্য হতে পারে। মুল বক্তব্যটি হল, 0644 একটি "সাধারণ যুক্তিসঙ্গত" সমঝোতা। ওপি অবশ্যই তার কম্পিউটারে ইন্টারনেট থেকে সমাধান প্রয়োগ করার আগে মস্তিষ্ককে নিযুক্ত করা উচিত।
স্যাট কাটসুরা

4
"কুড়াল" ব্যবহারকারীর, গোষ্ঠী, অন্যান্যগুলির জন্য নির্বাহের অনুমতিটি সরিয়ে দেয় এবং আমার অনুমতি অনুসারে অন্যান্য অনুমতিগুলি অপরিবর্তিত রাখে। আমার কি ভুল আছে?
এডওয়ার্ড ফালক

1
@ এডওয়ার্ডফাল্ক না, আপনি ঠিক বলেছেন তবে ফাইলগুলির সেটটি আসলে কী তা আপনি জানেন না এবং এর আগে কী কী অনুমতি রয়েছে তা আপনিও জানেন না chmod। যদি ব্যাকআপ ফাইলগুলিতে স্ক্রিপ্ট এবং বাইনারি থাকে তবে xসেগুলি থেকে সরানো ভুল। যদি chmodপূর্বের অনুমতিগুলি 0777 হয় তবে তারপরে chmod a-xসেগুলি 0666 রেখে যাবে যা সম্ভবত আপনি চান না। আমি যা বলছি chmod 0644তা হিউরিস্টিক্সের চেয়ে ভাল, chmod a-xএটি ভুল নয়।
স্যাট কাটসুরা

1
@ নাজিবআইড্রিসি বাদে আপনি জানেন, আপনি যখন বিদেশী ফাইল সিস্টেমে অনুলিপি দিয়েছিলেন তবে সেগুলি 0777 এ পরিবর্তিত হয়েছে যেখানে ইউনিক্সের অনুমতি নেই। ওপি যা করেছে ঠিক তেমনই।
স্যাটা ক্যাটসুরা

6
 find backup ! -type l ! -type d -exec chmod a-x {} +

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

মনে রাখবেন যে:

 find backup -type f -exec chmod a-x {} +

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


2

Zsh এ, শুধুমাত্র নিয়মিত ফাইলগুলি (প্রতীকী লিঙ্কগুলি সহ নয়) এবং ডট ফাইলগুলির সাথে মেলে গ্লোব কোয়ালিফায়ার ব্যবহার করুন :.D

sudo chmod a-x folder\ with\ restored\ backup/**/*(D.)

যদি কমান্ড লাইনটি দীর্ঘ হয় তবে আপনি ব্যবহার করতে পারেন zargs:

zargs -- folder\ with\ restored\ backup/**/*(D.) -- sudo chmod a-x 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.