কীভাবে ডিরেক্টরি তৈরি করতে হয় এবং একক কমান্ডে অনুমতি দেয়


107

কীভাবে একটি ডিরেক্টরি তৈরি করতে এবং লিনাক্সে একক কমান্ডে অনুমতি দেওয়া যায়?

আমাকে পুরো অনুমতি নিয়ে প্রচুর ফোল্ডার তৈরি করতে হবে 777

কমান্ড

mkdir path/foldername
chmod 777 path/foldername 

আমি দুটি কমান্ডে তৈরি এবং অনুমতি দিতে পছন্দ করি না। আমি কি একক আদেশে এটি করতে পারি?


1
mkdir temp; chmod 777 tempএক লাইন আপনি 'টেম্প' কে একটি ভেরিয়েবল বানিয়ে বাশ কমান্ড হিসাবে এটি সংরক্ষণ করতে পারেন। এই আপনি কি করতে খুঁজছেন?
স্টাইলফেল

1
হাই @ সাদা গোলাপ, দয়া করে সর্বশেষ উত্তরটি দেখুন, এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। বোনাস, এটি এমকেডির, chmod এবং একক বুলেটে আবদ্ধ হয়!
কস্টিন গুউ

উত্তর:


205

মতে mkdir, এর মানুষ পাতা ...

mkdir -m 777 dirname

1
আপনি প্লাস আমাকে -m বিকল্প সম্পর্কে বলতে পারেন?
পুরানি

@ হোয়াইটোজ-এম বিকল্পটি মোডের জন্য। সদ্য নির্মিত ডিরেক্টরিগুলির জন্য মোড ভেরিয়েবলের দ্বারা নির্দিষ্ট মানকে অনুমতি বিট সেট করে। মোড ভেরিয়েবলটি chmod কমান্ডের জন্য মোড প্যারামিটারের মতো একই মানগুলি প্রতীকী বা সংখ্যক আকারে গ্রহণ করে।
টিএমকাসুন

14
mkdir -p -m ভাঙ্গা হয়েছে, যেহেতু আপনার টাইপ করা পথে মোডটি কেবল সর্বশেষ ডিরেক্টরিতে প্রয়োগ করা হয়। উদাহরণস্বরূপ, mkdir -p -m 707 এক / দুই / তিন। এমনকি যদি তিনটি ডিরেক্টরিই নতুনভাবে তৈরি করা হয় তবে কেবলমাত্র শেষেরটিতে অনুরোধকৃত অনুমতি থাকবে এবং অন্যগুলি ডিফল্ট থাকবে। ইনস্টল-ডি-এম একইভাবে ভেঙে গেছে।
নাম

-pইতিমধ্যে উপরে উল্লিখিত @ ডিসপ্লেনামের আশেপাশে আরও একটি সমস্যা রয়েছে। -mশুধুমাত্র প্রযোজ্য হবে যদি একটি ডিরেক্টরি আসলে তৈরি করা হয়। এটি ইতিমধ্যে বিদ্যমান থাকলে এর মোডটি পরিবর্তন করা হবে না। আপনার প্রসঙ্গের উপর নির্ভর করে এটি ভাল বা খারাপ হতে পারে।
আদম বদুরা

1
mkdir -m777 ডিরেক্টরি
হুগো Deiró

19
install -d -m 0777 /your/dir

আপনি যা চান তা আপনাকে দেওয়া উচিত সচেতন হন যে প্রত্যেক ব্যবহারকারীর সেই ডিরেক্টরিতে ফাইল যুক্ত এবং মুছার অধিকার রয়েছে।


1
বোনাস, আপনি -g এবং / অথবা -ও যোগ করতে পারেন এবং আপনি একক শটে এমকেডির, ছোড এবং ছেঁকে রাখতে পারেন!
কস্টিন গুউ

4
এটা ভাঙ্গা. -d -m 070 এক / দুই / তিনটি ইনস্টল করুন। এমনকি যদি পথের তিনটি ডিরেক্টরিই নতুনভাবে তৈরি করা হয় তবে কেবলমাত্র শেষেরটিতে অনুরোধকৃত অনুমতি সেট থাকবে। mkdir -p -m একইভাবে ভেঙে গেছে।
নাম

@ ডিসপ্লেনাম: যা তবুও এর জন্য সঠিক অনুমতিগুলি নির্ধারণ করে three, ডিফল্ট অনুমতিগুলি এর পথে যাওয়ার জন্য যথেষ্ট।
মার্কাস ডাব্লু মাহলবার্গ

16

ডিরেক্টরিটি ইতিমধ্যে উপস্থিত থাকলে:

mkdir -m 777 /path/to/your/dir

যখন ডিরেক্টরিটি বিদ্যমান না থাকে এবং আপনি মূল ডিরেক্টরিগুলি তৈরি করতে চান:

mkdir -m 777 -p /parent/dirs/to/create/your/dir

এটি কেবল চূড়ান্ত উপ-ডিরেক্টরিতে 777 অনুমতি দেবে। আমি কীভাবে এটি করতে পারি এবং সমস্ত অভিভাবক ডিরেক্টরিকেও 777 এর অনুমতি দিতে পারি?
লেভি

1
আমি এই জন্য কোন উত্তর না কিন্তু আমি এই জন্য উত্তর এখানে: stackoverflow.com/questions/3740152/...
পেড্রো ত্রুহিলো

নোট করুন যে এই আদেশটি এই সমস্যাটি "কীভাবে একটি ডিরেক্টরি তৈরি করতে হবে এবং একক কমান্ডে অনুমতি দেওয়া যায়" তা সমাধান করার জন্য। আমি বিশ্বাস করি আপনার প্রশ্নের সমাধানটি এরকম কিছু হবে:find /your/dirs -type d -exec chmod 755 {} \;
পেড্রো ট্রুজিলো

10

আইএমও, installএইরকম পরিস্থিতিতে কমান্ডটি ব্যবহার করা ভাল । আমি systemd-journaldরিবুটগুলি জুড়ে অবিরাম চেষ্টা করার চেষ্টা করছিলাম ।

install -d  -g systemd-journal -m 2755 -v /var/log/journal

7

আপনি একটি সাধারণ শেল স্ক্রিপ্ট লিখতে পারেন, উদাহরণস্বরূপ:

#!/bin/bash
mkdir "$1"
chmod 777 "$1"

একবার সংরক্ষণ করা হলে এবং এক্সিকিউটেবল ফ্ল্যাগ সক্ষম হয়ে গেলে আপনি এমকেডির এবং chmod এর পরিবর্তে এটি চালাতে পারেন:

./scriptname path/foldername

তবে, অ্যালেক্সের উত্তরটি আরও ভাল কারণ এটি তিনটির পরিবর্তে একটি প্রক্রিয়া তৈরি করে। আমি -mবিকল্প সম্পর্কে জানতাম না ।


থ্যাঙ্কস দেলান .. আমি শেল স্ক্রিপ্টে সেই কমান্ডটিও লিখেছি .. তবে আমি একক কমান্ডে করতে চাই।
পুরানি

7

কেবল উপরের উত্তরগুলি সম্প্রসারণ এবং উন্নত করতে:

প্রথমে, আমি জিএনইউ করিউটিলস ৮.২6 এর জন্য এমকেডির ম্যান পৃষ্ঠাটি যাচাই করব - এটি আমাদের '-ম' এবং '-পি' বিকল্প সম্পর্কে তথ্য দেয় (যথাক্রমে --mode = MODE এবং --parents হিসাবেও দেওয়া যেতে পারে) ):

... সেট [গুলি] ফাইল মোড (chmod হিসাবে), a = rwx - umask নয়

... বিদ্যমান থাকলে কোনও ত্রুটি নেই, প্রয়োজন অনুযায়ী পিতামহুল ডিরেক্টরি তৈরি করুন

বিবৃতিগুলি আমার মতে অস্পষ্ট এবং অস্পষ্ট। তবে মূলত, এটি বলে যে আপনি "chmod সংখ্যার স্বরলিপি" (অষ্টাল) দ্বারা নির্দিষ্ট অনুমতি দিয়ে ডিরেক্টরিটি তৈরি করতে পারেন বা আপনি "অন্যভাবে" যেতে পারেন এবং একটি / আপনার উমাস্ক ব্যবহার করতে পারেন।

পার্শ্ব দ্রষ্টব্য: আমি বলি "অন্য উপায়" যেহেতু উমাস্কের মানটি ঠিক তেমনই মনে হয় - একটি মুখোশ , chmod এর সংখ্যাসূচক স্বরলিপি হিসাবে "মঞ্জুরি" দেওয়ার পরিবর্তে অনুমতিগুলি আড়াল / অপসারণ করে।

umaskআপনার 3-অঙ্কের উমাস্ক কী তা দেখতে আপনি শেল-বিল্টিন কমান্ডটি কার্যকর করতে পারেন; আমার জন্য, এটা 022। এর অর্থ হ'ল আমি যখন mkdir yodirectoryকোনও প্রদত্ত ফোল্ডারে (বলি, মহোম) এবং statএটি সম্পাদন করি তখন আমি এর অনুরূপ কিছু আউটপুট পাব:

               755                   richard:richard         /mahome/yodirectory
 #          permissions                 user:group      what I just made (yodirectory),
 # (owner,group,others--in that order)                 where I made it (i.e. in mahome)
 # 

এখন, এই অষ্টাল অনুমতি সম্পর্কে আরও একটি সামান্য বিট যোগ করতে। আপনি যখন কোনও ডিরেক্টরি তৈরি করেন, "আপনার সিস্টেম" আপনার ডিফল্ট ডিরেক্টরিটিকে '[যা নতুন ডিরেক্টরিগুলির জন্য প্রযোজ্য (এটির মান 77 777 হওয়া উচিত)] নেয় এবং ইও (ইউ) মাস্কে চড় মারে, কার্যকরভাবে per কিছু অনুমতিগুলি লুকিয়ে রাখে'। আমার উমাস্ক 022 - এখন যদি আমরা 777 থেকে 022 কে "বিয়োগ" করি (প্রযুক্তিগতভাবে বিয়োগ একটি অতিরিক্ত চাপ এবং সর্বদা সঠিক না হয় - আমরা আসলে পারম বন্ধ করে দিচ্ছি বা তাদের মুখোশ ফেলা করছি) ... আমরা বিবৃত হিসাবে 755 পাই (বা "বিধিবদ্ধ" ) আগে।

আমরা 3-অঙ্কের অষ্টালের সামনে '0' বাদ দিতে পারি (সুতরাং সেগুলি 4 সংখ্যার হতে হবে না) যেহেতু আমাদের ক্ষেত্রে আমরা কোনও স্টিকিবিট, সেটুইড বা সেটগিড চাইনি (বা বরং উল্লেখ করিনি) (আপনি তাদের দেখতে চান, বিটিডব্লিউ, আপনি 777 যাচ্ছেন সেগুলি তারা কার্যকর হতে পারে)। সুতরাং অন্য কথায়, 0777 বোঝায় (বা সমতুল্য) 777 (তবে 777 অবশ্যই 0777 এর সমতুল্য নয় - যেহেতু 777 কেবল অনুমতিগুলি নির্দিষ্ট করে, সেটুইডস, সেটগিড ইত্যাদি নয়)

এখন, আপনার প্রশ্নে এটি বিস্তৃত অর্থে প্রয়োগ করতে - আপনার কাছে কয়েকটি বিকল্প রয়েছে (ইতিমধ্যে)। উপরের সমস্ত উত্তরগুলি কাজ করে (কমপক্ষে আমার কোর্টিলগুলি অনুযায়ী)। আপনি একসাথে 7 with permission অনুমতি নিয়ে সাব ডিরেক্টরি (নেস্টেড ডিরেক্টরি) তৈরি করতে চাইলে আপনি উপরের সমাধানগুলিতে সমস্যাগুলি (বা সম্ভবত হওয়ার সম্ভাবনা খুব কম) করতে পারেন । বিশেষত, আমি যদি 022 এর উমাস্ক সহ মহোমে নিম্নলিখিতগুলি করি:

mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff

আমি 755উভয়ের জন্য পার্সাম পাব yodirectoryএবং yostuffকেবল 777পার্মের জন্য mastuffinyostuff। সুতরাং দেখা যাচ্ছে যে এটিই umaskকেবল থাপ্পর মেরেছে yodirectoryএবং yostuff... এটির জন্য আমরা একটি সাবসেল ব্যবহার করতে পারি:

( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )

এবং এটাই. ইয়স্টফ, মাস্টফিনিস্টোস্টফ এবং ইওডিরেক্টরির জন্য 777 পার্সস ms


7

আপনি ডিরেক্টরি তৈরি করতে এবং একই সাথে অনুমতি দেওয়ার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন

mkdir -m777 path/foldername 

1
-ম

1

করবেন না: mkdir -m 777 -p a/b/c যেহেতু এটি কেবল 777সর্বশেষ ডিরেক্টরিতে অনুমতি সেট করবে , সি; a এবং b আপনার উমাস্কের ডিফল্ট অনুমতি নিয়ে তৈরি করা হবে।

অনুমতি নিয়ে কোনও নতুন ডিরেক্টরি তৈরি করার পরিবর্তে 777, mkdir -pযেখানে আপনি উমাস্ককে ওভাররাইড করেন সেখানে একটি সাব-শেল চালান :

(umask u=rwx,g=rwx,o=rwx && mkdir -p a/b/c)

মনে রাখবেন যে এর আগে, ক, বি এবং সি এর কোনও উপস্থিতি থাকলে অনুমতিগুলি পরিবর্তন হবে না।


হ্যাঁ, আপনি যদি 4-অঙ্কের উমাস্ক পাস করেন তবে অগ্রণী অঙ্কটি সর্বদা শূন্য হতে হবে (যদিও আপনি এটি বাদ দিতে পারেন)। এটি chmod এর সাথে প্রতিসাম্যের জন্য হতে পারে, যেখানে প্রথম অষ্টাল অঙ্কটি সেটুইড, সেটগিড এবং স্টিকি বিট সেট করে তবে এটি যদি অর্থহীন হয় তবে এটি উজ্জ্বল যেহেতু উমাস্ক আপনাকে সেগুলি সীমাবদ্ধ করতে দেয় না।
জন মেলর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.