নতুন নির্মিত ফাইলগুলিতে ফাইল অনুমতিগুলি কীভাবে প্রয়োগ করা হয়?


12

আমার একটি ডিরেক্টরি রয়েছে যাতে নিম্নলিখিত অনুমতিগুলি সেট থাকে:

drwxr-s---. user group folder

ডেস্কটপে, আমি এই ফোল্ডারটি অ্যাক্সেস করি এবং একটি নতুন ফাইল কল তৈরি করতে ডান ক্লিক করুন foo.txt। তারপরে টার্মিনালটি ব্যবহার করে, আমি কমান্ডটি ব্যবহার করে অন্য একটি ফাইল তৈরি করেছি $ touch bar.txt

আমি যখন এই ফাইলগুলির জন্য অনুমতিগুলি পরীক্ষা করি তখন আমার কাছে রয়েছে:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

আমি আশা করেছিলাম -rw-r-----. user group। গ্রুপের জন্য অতিরিক্ত লেখার অনুমতি এবং অন্যের পড়ার অনুমতি কীভাবে আসে?

উত্তর:


16

setguid

কর্মক্ষেত্রে এখানে 2 টি বাহিনী রয়েছে। প্রথমটি ফোল্ডারে সক্ষম হওয়া সেটগিড বিট folder

drwxr-s---. user group folder

এটা sএই লাইন শুরুতে অক্ষরের প্যাকে। তাদের এভাবে গ্রুপ করা হয়েছে:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

এর r-sঅর্থ এই যে ফোল্ডারের অভ্যন্তরে তৈরি হওয়া কোনও ফাইল বা ডিরেক্টরিগুলি স্বয়ংক্রিয়ভাবে গ্রুপে সেট হয়ে যাবে group

ফাইলগুলির কারণেই এটি তৈরি হয়েছিল foo.txtএবং এরকমই bar.txtতৈরি হয়েছিল:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

অনুমতি & umask

আপনি যে অনুমতিগুলি দেখছেন সেটি অন্য বিষয়। এগুলি আপনার জন্য সেটিংস দ্বারা পরিচালিত হয় umaskumaskকমান্ডটি দিয়ে আপনি কী সেট করেছেন তা আপনি দেখতে পারেন umask:

$ umask
0002

দ্রষ্টব্য: এই বিটগুলিকে "মোড" বিটও বলা হয়।

এটি একটি মাস্ক তাই এটি সক্ষম হওয়া অনুমতি সম্পর্কিত যে কোনও বিট অক্ষম করে। এই উদাহরণে আমি চাই কেবলমাত্র কিছুটা অন্যের লেখার অনুমতি।

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

এই কমান্ডের "বিটস" এর উপস্থাপনা দশমিক আকারে। সুতরাং একটি 2 বাইনারি আকারে 010 এর সমান, যা রাইট বিট। একটি 4 (100) এর অর্থ আপনি পড়তে অক্ষম করতে চান। একটি 7 (111) এর অর্থ আপনি সমস্ত অক্ষম পড়তে / লিখতে / সম্পাদন করতে চান। এখান থেকে এটি নির্মাণ করা:

$ umask 007

অন্যান্য ব্যবহারকারীদের জন্য বিটগুলি পঠন / লেখার / চালানো অক্ষম করে।

তাহলে আপনার ফাইলগুলির কি হবে?

ভাল umaskকোনও নতুন ফাইল তৈরি হওয়ার পরে সেটি অনুমোদনের অনুমতি দেয়। সুতরাং আমাদের যদি নিম্নলিখিত umaskসেট থাকে:

$ umask 007

এবং নতুন ফাইলগুলি স্পর্শ করা শুরু করল, আমরা সেগুলি এ জাতীয়ভাবে তৈরি দেখতে চাই:

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

যদি আমরা এটিকে অন্য কোনওটিতে পরিবর্তন করি তবে এটি বলুন:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

আমরা ইতিমধ্যে তৈরি করা ফাইলগুলিতে এর কোনও প্রভাব পড়বে না। এখানে দেখো:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

তাহলে ফাইল ব্রাউজার দিয়ে কী চলছে?

umaskকি আমি একটি "নরম" সেটিং নামক চাই। এটি কোনওভাবেই নিখুঁত নয় এবং ইউনিক্সে বেশ কয়েকটি উপায়ে মোটামুটি সহজেই পাশ করা যেতে পারে। সরঞ্জামগুলির মধ্যে অনেকগুলি সুইচ নেয় যা আপনাকে তাদের ক্রিয়াকলাপের অংশ হিসাবে অনুমতিগুলি নির্দিষ্ট করতে দেয়।

mkdirউদাহরণস্বরূপ নিন :

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

সঙ্গে -mসুইচ আমরা ওভাররাইড করতে পারে umasktouchতাই আপনাকে সৃজনশীল হতে হবে আছে কমান্ড এই সুবিধা নেই। এই U&L প্রশ্নোত্তর শিরোনাম দেখুন: কমান্ড লাইনে সেট করা অনুমতি নিয়ে ফাইলগুলি তৈরি করা যায়? এই জাতীয় পদ্ধতির জন্য।

অন্যান্য উপায়? শুধু ওভাররাইড umask। ফাইল ব্রাউজারটি সম্ভবত এটি করছে বা সম্পূর্ণরূপে উপেক্ষা করে umaskএবং এটির জন্য কনফিগার করা হয়েছে এমন অনুমতিগুলি ব্যবহার করে ফাইলটি বিছিয়ে দেওয়া।


আমি ভেবেছিলাম যে উমাস্ক অ্যাডিশন নয়, সুবিধাগুলি সরিয়ে নেবে। নাকি আমি কিছু মিস করছি?
প্রশ্ন ওভারফ্লো

@ কিউশনওভারফ্লো - ফাইল এবং ডিরেক্টরি তৈরি করার সময় আপনি কী অনুমতিগুলি অনুমোদিত তা নিয়ন্ত্রণ করেন। সুতরাং এটির নাম এটি তৈরির প্রক্রিয়া চলাকালীন বিটগুলি মাস্ক করে।
slm

আমার উমাস্ক পড়ে 0002। যদি উমাস্ক অনুমতিগুলি অপসারণের পরিবর্তে অনুমতিগুলি সেট করে, তবে এক্সিকিউট বিটটি ব্যবহারকারী এবং গোষ্ঠী উভয়ের জন্যই সেট করা হবে যখন আমি করি touchতবে তা হয় না।
প্রশ্ন ওভারফ্লো

@ কিউশন ওভারফ্লো - এটি touchআদেশের একটি সীমাবদ্ধতা । : লিঙ্ক আমার এ অন্তর্ভুক্ত এই লিঙ্কটি দেখুন unix.stackexchange.com/questions/47178/...
SLM

মন্তব্যের উপর ভিত্তি করে কয়েকটি বিষয় পরিষ্কার করতে: 1) নতুন ফাইলের অনুমতি সর্বদা উমাস্ক + ফাইল তৈরির জন্য ব্যবহৃত প্রোগ্রাম দ্বারা নির্ধারিত হয়, 2) অনুমতিগুলি কখনই প্যারেন্ট ডিরেক্টরি থেকে প্রাপ্ত হয় না।
প্রশ্ন ওভারফ্লো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.