উত্তর: কীভাবে পুনরাবৃত্তভাবে ডিরেক্টরি এবং ফাইলের অনুমতি সেট করবেন


52

জবাবদিহি হিসাবে, আমি এটি করতে পারি:

file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes

এবং এটি পুনরাবৃত্তভাবে সেই পথে সমস্ত ডিরেক্টরি এবং ফাইলগুলিতে মালিক, গোষ্ঠী এবং অনুমতিগুলিকে 0775 এ সেট করে। তবে আমি ডিরেক্টরিগুলি 0775 তে, এবং ফাইলগুলি 0664-এ সেট করতে চাই ans এটি করার জন্য উত্তর দেওয়ার কোনও উপায় আছে কি?


উত্তর:


33
file: dest=/foo/bar/somedir owner=root group=apache mode=u=rwX,g=rX,o=rX recurse=yes

ডিরেক্টরিগুলি 755 তে সেট করবে এবং ফাইলগুলি 644-এ সেট করবে।


এটি ফাইলগুলির জন্য কাজ করে না।
মিরজা

1
@ অ্যাডাম চান্স ম্যাজিকটি কোথায়? ইউ, জি, ও নির্দিষ্ট করে কীভাবে এটি সংখ্যার চেয়ে আলাদা করে তোলে (এবং কোথায় 644 লেখা আছে?)
লিনাক্সবন্দিত

4
উত্স কোডটিতে উল্লেখ করা হয়েছে যে প্রতীকী উগো হ্যান্ডলিংটি "ম্যান চিমড" এর হ্যান্ডলিংয়ের সমান - মূল / এক্স ডায়ার / ফাইলের স্থিতি এবং বিদ্যমান এক্সিকিউট বিটগুলির উপর ভিত্তি করে বিশেষ হ্যান্ডলিং রয়েছে। github.com/ansible/ansible/blob/…
মার্ক ট্যামস্কি

2
অন্য কথায়, Xহয় xডিরেক্টরি জন্য, এবং ফাইলের জন্য কিছুই নেই। এবং এইভাবে chmod, ansibleমোড স্ট্রিং আচরণ করে না । আমিও Sএকইরকম আচরণ করা চাই।
এক্স-ইউরি

1
তবে মনে রাখবেন যে এটি মালিকদের দ্বারা ফাইলগুলি সকলের দ্বারা নির্বাহযোগ্য করে তোলে ।
এক্স-ইউরি

25

উত্তরযোগ্য ফাইল / অনুলিপি মডিউলগুলি আপনাকে ফাইলের ধরণের উপর ভিত্তি করে অনুমতিগুলি নির্দিষ্ট করার গ্রানুলারিটি দেয় না যাতে আপনার সম্ভবত এই লাইনের সাথে কিছু করার মাধ্যমে ম্যানুয়ালি এটি করা দরকার:

- name: Ensure directories are 0755
  command: find {{ path }} -type d -exec chmod 0755 {} \;

- name: Ensure files are 0644
  command: find {{ path }} -type f -exec chmod 0644 {} \;

{{ path }}এর দ্বারা প্রতিটি ফাইল বা ডিরেক্টরিগুলির অনুমতিগুলি নির্দিষ্ট অনুমতিগুলিতে পুনরাবৃত্তি এবং পরিবর্তন করা হবে।

সূত্র: https://stackoverflow.com/a/28782805/1306186


@ লাকাইট্যাক্স্সি জিমনগিনের দেওয়া উত্তরটি পুনরাবৃত্তভাবে উপ-ডিরেক্টরিগুলির অনুমতি নির্ধারণ করে না।
দেজয় ক্লেটন

আহ তুমি ঠিক আছ! আমি একটি recurseবিকল্প দেখেছি তবে অন্যটি নয়।
ভাগ্যটাইক্সি

9

আপনি যদি জবাবদিহি করে মডিউল ফাইলটি ব্যবহার করতে চান তবে আপনি এটি করতে পারেন:

ফাইল: গন্তব্য = / ফু / বার / সামিডির মালিক = মূল গোষ্ঠী = অ্যাপাচি মোড = 0644 পুনরাবৃত্তি = হ্যাঁ

ফাইল: গন্তব্য = / foo / বার / সামডির মালিক = মূল গোষ্ঠী = অ্যাপাচি মোড = 0775

এই পদ্ধতির সাহায্যে আপনি প্রথমে সমস্ত ফাইল (পুনরাবৃত্তি = হ্যাঁ) '644' তে সেট করেছেন এবং তারপরে আপনি / foo / bar / somedir '775' তে সেট করেছেন।

এটি নিখুঁত নয় কারণ প্রতিবার আপনি আপনার প্লেবুক খেললে এটি আপনার ডিরেক্টরি অনুমতি পরিবর্তন করবে। তবে কমপক্ষে এটি আদর্শবান, মডিউল কমান্ডের মতো নয়।

আপনি যদি 'পরিবর্তিত' স্থিতি রাখতে না চান তবে আপনি মডিউল স্ট্যাট ব্যবহার করতে পারেন। এটি সমস্ত ফাইল এবং ডিরেক্টরিকে / foo / bar / somedir এ তালিকাবদ্ধ করবে যাতে আপনি উত্তরটি নিবন্ধভুক্ত করেন এবং কেবলমাত্র সেই ফাইলগুলিতে একটি লুপ তৈরি করুন।


7
আপনার উত্তর 775. একমাত্র টপ লেভেল ডিরেক্টরির করার সময় সবার জন্য প্রয়োজন নেই, 644 সব subfiles এবং সাবডিরেক্টরি সেট হবে ডিরেক্টরি 775 হতে, সাব সহ।
এডওয়ার্ড নেড হার্ভে

এই পরামর্শটি আদর্শবান নয়। প্রথমে এক মান এবং পরে অন্যটিতে অনুমতি নির্ধারণের অর্থ হ'ল অনুমতিগুলি প্রতিটি রানেই পরিবর্তিত হবে।
কেভিন কেইন

5

আমি নিশ্চিত না যে ডিরেক্টরিগুলি 0775 ( rwxrwxr-x) এবং 0644 ( rw-r--r--) তে ফাইল সেট করা কতটা অনুভূতি হবে : গ্রুপ- রচনামূলক ডিরেক্টরিগুলি কিন্তু ফাইল নয়?

আপনি যদি rw-rw-r--ডিরেক্টরিগুলি ট্র্যাভারেবলের সময় ফাইলগুলি নির্বাহযোগ্য না হয় তা নিশ্চিত করার জন্য যদি আপনার ফাইলগুলি 0664 ( ) এ সেট করতে চান তবে কেবলমাত্র একটি chmodকমান্ড জড়িত একটি মার্জিত সমাধান রয়েছে :

chmod -c -R ug=rw,o=r,a-x+X "{{top_dir}}"

এখানে এটি কীভাবে উত্তরযোগ্য হিসাবে ব্যবহার করা যেতে পারে :

- name: recursive chmod example
  command: |
    chmod -c -R ug=rw,o=r,a-x+X "{{item}}"
  register: chmod_status
  changed_when: chmod_status.stdout != ""
  with_items:
    - "/home/user/sample/dir"

chmod -cউত্তরগুলিতে "পরিবর্তিত" স্থিতি জনসাধারণের জন্য আমরা সহজেই ব্যবহার করতে পারি এমন সমস্ত পরিবর্তন মুদ্রণ করে । আমি আশা করি এটি সার্থক হবে।


3

প্রয়োজন হলে কেবল মোডগুলি পরিবর্তন করতে:

- name: make dirs 0755   
  command: find {{ your_path }} -type d ! -perm 0755 -exec chmod 0755 {} \;

- name: make files 0644   
  command: find {{ your_path }} -type f ! -perm 0644 -exec chmod 0644 {} \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.