নির্দিষ্ট অনুমতি সহ ফাইল এবং ফোল্ডারগুলি বের করুন


11

আমি 7 জীপ সহ উইন্ডোজে প্রচুর সাব-ফোল্ডার এবং ফাইল সহ একটি ফোল্ডার প্যাক করি, ভিপিএসে আপলোড করি এবং তারপরে কমান্ডটি চালাও:

tar -xvzf file.tar.gz

তারপরে সমস্ত আনপ্যাক করা ফাইল এবং ফোল্ডারগুলির 777 এর অনুমতি রয়েছে fold আমি কীভাবে এটি পাব যাতে ফোল্ডারগুলির 755 এবং ফাইল 644 এর অনুমতি থাকবে?


"কমান্ড লাইন ফু" নামে একটি ওয়েবসাইট রয়েছে যার প্রচুর অন্যান্য ধারণা রয়েছে।
জাঙ্গোফান

উত্তর:


13

আপনি যদি tar(1)নিয়মিত ব্যবহারকারী হিসাবে চালাচ্ছেন তবে এটি আপনার umaskডিফল্টরূপে প্রয়োগ করবে । আপনি যদি এটির tar(1)মতো চলমান থাকেন root, তবে আপনি সম্মান --no-same-permissionsজানাতে কমান্ড লাইন বিকল্প দিতে পারেন ।tar(1)umask

সুতরাং: হয় এটি নিয়মিত ব্যবহারকারী হিসাবে চালান:

umask 022
tar zxvf file.tar.gz

বা এটি চালান root:

umask 022
tar zxvf file.tar.gz --no-same-permissions

আপনি বিদ্ধ করতে চাইবেন umask 022আপনার ~/.bashrc, ~/.bash_profileঅথবা ~/.profile। ( bash(1)ফাইলগুলি শুরু করার বিষয়ে বিশদটির জন্য ম্যানপেজ দেখুন It's এটি জটিল))

সম্পর্কিত umaskবিশদগুলি আপনার শেলের ম্যানপেজ, umask(2)সিস্টেম-কল ম্যানপেজ, বা umask(1posix)পসিক্স-সরবরাহিত ইউটিলিটি ম্যানপেজে (যদি আপনি manpages-posixইনস্টল করেন) পাওয়া যায়।


umask 022 tar zxvf file.tar.gz -> এটি প্রতিটি ফাইলের জন্য পৃথকভাবে নিশ্চিতকরণের জন্য আমাকে জিজ্ঞাসা করে যদি আমি এটির এক্সট্রাক্ট করতে চাই

আপনি কি বিদ্যমান ফাইলগুলি অতিরিক্ত লেখার কাজ করছেন?
30:30

6

আপনার ডিরেক্টরি এবং ফাইলগুলির জন্য কাঙ্ক্ষিত অনুমতি সেট করতে ডিরেক্টরিটির নীচে নিম্নলিখিত কমান্ডগুলি চালনা করুন:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

বন্ধ হওয়া কোঁকড়ানো বন্ধনী এবং পিছনের স্ল্যাশের মধ্যে স্থান সম্পর্কে সচেতন হন


সন্ধান করুন:

কোনও ধারণা কেন এই আদেশটি আমাকে "সন্ধান করুন: ex -exec" এর পক্ষে যুক্তি হারিয়েছে? ধন্যবাদ।

সমাপ্তি কোঁকড়া বন্ধনী এবং\;
পসমা

2

আপনি যদি ক্যাপিটাল এক্স chmodব্যবহার করেন তবে আপনি কেবলমাত্র ডিরেক্টরিতে এক্সিকিউট করার অনুমতি সেট করতে এটি ব্যবহার করতে পারেন। অর্থাত

chmod -R ugo+X .

1

আমি এই সমাধানটি খুঁজে পেয়েছি যা আমার পক্ষে কাজ করেছিল। ফোল্ডার এবং সাবফোল্ডারগুলির জন্য:

chmod -R 777 */

এবং সমস্ত ফাইলের জন্য (ফোল্ডার এবং সাবফোল্ডারগুলিতেও):

find . -type f -name "*" | xargs chmod 644

এটি করার ভাল উপায় না হলে সমস্ত মন্তব্য স্বাগত welcome আমি সবেমাত্র লিনাক্স শিখতে শুরু করেছি।

মন্তব্য অনুসরণ করে, আরও শক্তিশালী সমাধান যা বিশেষ চরিত্রগুলিকে সুন্দরভাবে পরিচালনা করে তা হ'ল:

find . -type f -print0 | xargs -0 chmod 644  # For files
find . -type d -print0 | xargs -0 chmod 755  # For directories

তবে দ্বিতীয় কমান্ডটি আমাকে অনেকগুলি ফাইলের উপর এই আউটপুট দেয়: chmod: the': No such file or directory chmod: cannot access লোগো.টিএসটিএসটি অ্যাক্সেস করতে পারে না ': এই জাতীয় কোনও ফাইল বা ডিরেক্টরি chmod: access ./blog/wp-content/themes/OneRoom/LOGO': অ্যাক্সেস করতে পারে না ডি রেক্টরি

2
777সিস্টেমের খুব ছোট সংখ্যালঘুতে এটি বিপজ্জনক এবং শুধুমাত্র প্রযোজ্য।
012

2
আপনার দ্বিতীয় কমান্ডটি উন্নত করতে find . -type f -print0 | xargs -0 chmod 644-name "*"প্রয়োজনীয় নয়, এবং xargs(1)উপর ফাইলের নামের বিশ্লেষণ করবে স্পেস বা নতুন লাইন যদি না আপনি ব্যবহার -0- যা হওয়া ASCII উপর ফাইলের নামের parses NULচরিত্র, যা ফাইলের নামের মধ্যে প্রদর্শিত করতে পারবে না। -print0জন্য find(1)জন্য উপযুক্ত একটি মোড তার আউটপুট ফরম্যাট করতে এটা জিজ্ঞেস xargs -0ইনপুট।
30:32

0

অনুসন্ধান . -type f -exec chmod 644 {} \;


2
সুপারউসারে আপনাকে স্বাগতম, দয়া করে পরামর্শ দিন 1 লাইন উত্তর খুব কমই গৃহীত হয়, আপনি কি নিজের উত্তরটি আরও বিস্তারিতভাবে বর্ণনা করতে পারেন?
50-3
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.