CHMOD - ফাইল বনাম ডিরেক্টরিগুলির জন্য বিভিন্ন অনুমতি প্রয়োগ করা Per


9

আমি কয়েকটি বাক্সে অনুমতিগুলি পরিষ্কার করার চেষ্টা করছি এবং chmod মানুষ পাশাপাশি সমস্ত ইন্টারনেট ডকুমেন্টেশন যে আমি কোনও ভাগ্য ছাড়াই একটি হ্যান্ডেল হ'ল - তাই আমরা এখানে যাই।

মূলত, আমি অনেক উপ ডিরেক্টরি এবং ফাইল সহ একটি ডিরেক্টরি পেয়েছি - এবং আমি নিম্নলিখিত অনুমতি সেট করতে চাই:

ডিরেক্টরিগুলির জন্য: 770 (u + rwx, g + rwx, o-rwx)

ফাইলগুলির জন্য: 660 (U + rw, g + rw, ax, o-rw)

যদি সম্ভব হয় তবে আমি একক পুনরাবৃত্ত chmod দিয়ে চেষ্টা করতে এবং এটি করতে চাই - প্রতিটি ডিরেক্টরিতে পুনরাবৃত্তি করা এবং ফাইল-দ্বারা-ফাইলের অনুমতিগুলি সেট করা এড়াতে।

আমার ধারণা আমি নিজের শেল স্ক্রিপ্ট না লিখে এটি করার একটি উপায় হয়ে উঠতে পারি - তবে আমি কিছুই খুঁজে পাচ্ছি না।

আমি তোমার সাহায্য কে সাধুবাদ জানাই!

উত্তর:


10

আমি কোনও স্ক্রিপ্টকে দরকারী বলে খুঁজে পাই কারণ এটি প্রায়শই ফাইল এবং ডিরেক্টরি উভয় ক্ষেত্রেই একই বদলে পরিবর্তন করার জন্য দরকারী এবং সেগুলি প্রায়শই সংযুক্ত থাকে। ফাইল সার্ভারে ভাগ করা ডিরেক্টরিগুলির জন্য 770 এবং 660, ওয়েব সার্ভার ডিরেক্টরিগুলির জন্য 755/644 ইত্যাদি I আমি কোনও স্ক্রিপ্ট ডাব্লু / রূটের বিনটিতে / ধরণের সার্ভারের জন্য সর্বাধিক ব্যবহৃত মোড রাখি এবং সাধারণ হয়ে গেলে নিজেই সন্ধান করি মোড প্রযোজ্য নয়।

#!/bin/sh
# syntax: setperm.s destdir
#
if [ -z $1 ] ; then echo "Requires single argument: <directoryname>" ; exit 1 ;                                       fi

destdir=$1

dirmode=0770
filemode=0660

YN=no

printf "\nThis will RECURSIVELY change the permissions for this entire branch:\n                                      "
printf "\t$destdir\n"
printf "\tDirectories chmod = $dirmode\tFiles chmod = $filemode\n"
printf "Are you sure want to do this [$YN]? "

read YN

case $YN in
        [yY]|[yY][eE][sS])
        # change permissions on files and directories.
        find $destdir -type f -print0 | xargs -0 chmod $filemode $i
        find $destdir -type d -print0 | xargs -0 chmod $dirmode $ii ;;

        *) echo "\nBetter safe than sorry I always say.\n" ;;
esac

কি দারুন! আমি ঠিক এটিই খুঁজছিলাম। আপনাকে অনেক ধন্যবাদ!
স্কোন করুন

আরে আইপ্যাওলো - আপনি কি "সুযোগ" লাইনের "$ ii" লাইনের "ফাইন্ড $ ডাস্টডির-টাইপ ডি-প্রিন্ট0 | xargs -0 chmod $ dirode $ ii ;;" ব্যাখ্যা করতে পারেন? আমি নিশ্চিত না কেন আমি কেন এটি "সন্ধান" ডাস্টডির-টাইপ ডি-প্রিন্ট0 | xargs -0 chmod $ direode $ i ;; "নয়; ধন্যবাদ!
স্কোন

20

স্ক্রিপ্টের দরকার নেই।

// ডিরেক্টরি:

find . -type d -exec chmod XXX {} \;

// নথি পত্র:

find . -type f -exec chmod XXX {} \;

17

আপনার ক্ষেত্রে এটি অন্যের মতো জটিল হওয়ার কারণ হতে পারে না (যদিও findএটি সাধারণভাবে এই ধরণের জিনিসটির জন্য একটি ভাল সরঞ্জাম) is মোডের মধ্যে পার্থক্য হ'ল এক্সিকিউট বিট। যদি এমনটি হয় যে কোনও ফাইলের ইতিমধ্যে এক্সিকিউট বিট সেট নেই, তবে আপনি chmodযেমনটি চেয়েছিলেন ঠিক তেমন অনুরোধে এটি করতে পারেন।

chmod -R u=rwX,g=rwX,o= FILE...

এখানে মূল কীটি মূলধন X, যা ম্যান পৃষ্ঠাটি ব্যাখ্যা করে

যদি ফাইলটি ডিরেক্টরি হয় বা ইতিমধ্যে কিছু ব্যবহারকারীর জন্য অনুমতি কার্যকর করেছে কেবল তখনই সম্পাদন / অনুসন্ধান করুন।

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


এটি দুর্দান্ত, তবে কেবল 777 লেখার চেয়ে বেশি দীর্ঘ। এক্স-এর জন্য কোনও শর্টহ্যান্ড আছে?
এলিয়ট বি

6

আমি খুঁজে পেয়েছি যে আমার ব্যবহারের ক্ষেত্রে কমপক্ষে, rsyncডিরেক্টরিটি নিজেই অনুলিপি chmodকরা থেকে সরাসরি ফাইলগুলির তালিকার সাথে ব্যবহার করার চেয়ে অনেক দ্রুত find

rsync -rpt --chmod=D770,F660 . .

আপনি যদি chownএকই ক্রিয়াকলাপে একটি যুক্ত করতে চান তবে rsyncআপনাকে --chown=user:groupবিকল্পটি দিয়ে তা করতে দিন ।


ওহো, এটি আসলে chmod -R এর চেয়ে অনেক দ্রুত।
এপেলি

Chmod এর চেয়ে অনেক দ্রুত। এইভাবে আরএসসিএন ব্যবহার করার জন্য কি কোনও ডাউনসাইড রয়েছে? আমি এটি অনেক করছি এবং সবকিছু ঠিক আছে বলে মনে হচ্ছে।
slothbear

1

পরিষ্কার এবং সহজ:

chmod 660 $(find . -type f)
chmod 770 $(find . -type d)

খুব মার্জিত পদ্ধতির।
user5336

3
সম্ভবত, তবে মনে রাখবেন যে ফাইলগুলির কোনও স্পেস না থাকলে কেবল এটিই কাজ করে। আরও একটি "নিরাপদ" পদ্ধতিটি হলfind ... -exec chmod ... {} \;
22
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.