আমি একই chmod সেট করতে হবে, -rw-r - r-- এর জন্য নম্বর কীভাবে পাবেন ?
chmod
সমর্থন --reference
: "যখন --reference = RFILE পরিবর্তে RFILE এগুলিও মোড মান ব্যবহার" - man chmod।
আমি একই chmod সেট করতে হবে, -rw-r - r-- এর জন্য নম্বর কীভাবে পাবেন ?
chmod
সমর্থন --reference
: "যখন --reference = RFILE পরিবর্তে RFILE এগুলিও মোড মান ব্যবহার" - man chmod।
উত্তর:
stat
আউটপুট পরীক্ষা করুন :
# stat .xsession-errors
File: ‘.xsession-errors’
Size: 839123 Blocks: 1648 IO Block: 4096 regular file
Device: 816h/2070d Inode: 3539028 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ lik) Gid: ( 1000/ lik)
Access: 2012-05-30 23:11:48.053999289 +0300
Modify: 2012-05-31 07:53:26.912690288 +0300
Change: 2012-05-31 07:53:26.912690288 +0300
Birth: -
stat -c %a /path/to/file
আপনার প্রয়োজন ম্যাজিক ট্রিক।
সম্পূর্ণ অনুমতি মোড নম্বরটি একটি 4-অঙ্কের অষ্টাল সংখ্যা, যদিও বেশিরভাগ সময় আপনি কেবলমাত্র 3 টি স্বল্প-উল্লেখযোগ্য সংখ্যা ব্যবহার করেন। আর = 4, ডাব্লু = 2, এক্স = 1 নিয়ে অনুমতি গোপনে প্রতিটি গ্রুপ যুক্ত করুন। উদাহরণ স্বরূপ:
421421421
-rwxr-xr--
\_/ -- r+w+x = 4+2+1 = 7
\_/ -- r+_+x = 4+0+1 = 5
\_/ -- r+_+_ = 4+0+0 = 4 => 0754
এখন, কখনও কখনও আপনি এই মত একটি বিজোড় modestring দেখতে পাবেন:
-rwsr-xr-T
চতুর্থ x
অঙ্কটি মোডেস্ট্রিংয়ের বিটগুলিতে ওভারলোড করা হয় । যদি আপনি x
সেখানে ছাড়া অন্য কোনও চিঠি দেখতে পান , তবে এর অর্থ এই "বিশেষ" চতুর্থ-অঙ্কের বিটগুলির মধ্যে একটি সেট করা আছে, এবং যদি চিঠিটি ছোট ক্ষেত্রে হয় তবে x
সেই অবস্থানের জন্যও সেট করা থাকে। সুতরাং এটির জন্য অনুবাদটি হ'ল:
4 2 1
421421421
-rwsr-xr-T
+ + + -- s+_+T = 4+0+1 = 5
\_/ -- r+w+s = 4+2+1 = 7 (s is lowercase, so 1)
\_/ -- r+_+x = 4+0+1 = 5
\_/ -- r+_+T = 4+0+0 = 4 (T is uppercase, so 0) => 05754
কোনও সংখ্যাটি অক্টাল তা দেখানোর মানক ইউনিক্সের উপায়ে এটি একটি শূন্য দিয়ে শুরু করা। জিএনইউ chmod
আপনি যে মোডটি দিচ্ছেন তা ধরে নিবেন অষ্টাল যাইহোক, তবে শূন্যটি প্রতিরোধ করা সবচেয়ে নিরাপদ।
অবশেষে, আপনি যদি +
বিনয়ের শেষে একটি দেখতে পান:
-rwxr-xr-x+
তারপরে এর অর্থ এই যে ফাইলটির অনুমতি বাড়ানো হয়েছে এবং এর চেয়ে বেশি আপনার প্রয়োজন হবে chmod
। শুরুর জন্য setfacl
এবং getfacl
আদেশগুলি দেখুন into
অনুমতিগুলি কেবল বাইনারি সংখ্যার স্ট্রিং প্রতিনিধিত্ব। বেশিরভাগ দ্বারা প্রতিনিধিত্ব করা হয় , বাকি অক্ষর আছে।0
-
প্রাথমিক অনুমতিগুলির জন্য:
সব রূপান্তর করুন -
এবং ক্যাপ S
বা T
করতে 0
, বাকি উপস্থাপিত করে 1
।
ফলে নির্মিত বাইনারি নম্বরটি অষ্টাল হিসাবে মুদ্রিত করা উচিত:
$ a=-rw-r--r--
$ b=${a//[ST-]/0}
$ b=${b//[!0]/1}
$ printf '%04o\n' $((2#$b))
0644
এক লাইনে:
$ b=${a//[ST-]/0}; b=${b//[!0]/1}; printf '%04o\n' $((2#$b))
0644
অন্য 3 টি বিট সংশোধন এবং সনাক্তকরণে ত্রুটি 1000
, 2000
বা 4000
আরও কিছু কোডের প্রয়োজন:
#!/bin/bash
Say (){ printf '%s\n' "$@"; }
SayError(){ a=$1; shift; printf '%s\n' "$@" >&2; exit "$a"; }
e1="Permission strings should have 10 characters or less"
e2="Assuming first character is the file type"
e3="Permission strings must have at least 9 characters"
e4="Permission strings could only contain 'rwxsStT-'"
a=$1
((${#a}>10)) && SayError 1 "$e1"
((${#a}==10)) && { Say "$e2"; a=${a#?}; }
((${#a}<9)) && SayError 2 "$e3"
a=${a//[^rwxsStT-]}
((${#a}<9)) && SayError 3 "e4"
b=${a//[ST-]/0}; b=${b//[!0]/1}; c=0
[[ $a =~ [sS]......$ ]] && c=$((c|4))
[[ $a =~ [sS]...$ ]] && c=$((c|2))
[[ $a =~ [tT]$ ]] && c=$((c|1))
printf '%04o\n' "$((2#$b|c<<9))"
স্ট্রিং এবং হেক্স অনুমতি মান সহ ফাইলগুলির তালিকা পান। শেষে% N লাগানো যাতে আউটপুটটিকে এক্সেলে আরও সহজে রাখা যায়।
stat -c "%A %a %N" *
-rw-r--r-- 644 `file2.txt'
-rw-r--r-- 644 `file3.txt'
-rw-r--r-- 644 `file4.txt'
-rw-r--r-- 644 `file.txt'
drwxr-xr-x 755 `hsperfdata_root'
-rw-r--r-- 644 `junk.txt'
drwx------ 700 `vmware-root'
এটি একটি সুনির্দিষ্ট হেক্স অনুমতি সহ সমস্ত ফাইল সন্ধান করবে।
find /tmp1 -user root -perm 644