স্ট্রিং দ্বারা অনুমতি নম্বর কীভাবে পাবেন: -আরড-আর - r--


53

আমি একই chmod সেট করতে হবে, -rw-r - r-- এর জন্য নম্বর কীভাবে পাবেন ?


2
প্রোগ্রামগতভাবে বা আপনার কীভাবে অনুবাদ করতে হবে তা জানতে হবে?
mattdm

আমি অনুবাদ করতে অলস :) আমার পক্ষে এক মুহুর্তের জন্য স্থিতি ঠিক আছে।

9
"একই সেট" বলতে কী বোঝ? আপনার কাছে ইতিমধ্যে -rw-r - r-- অনুমতি সহ কোনও ফাইল রয়েছে এবং একই অনুমতি নিয়ে অন্য কোনও ফাইল সেট করতে চান? তারপর আপনার কিনা তা দেখতে chmodসমর্থন --reference: "যখন --reference = RFILE পরিবর্তে RFILE এগুলিও মোড মান ব্যবহার" - man chmod।
manatwork


আপনি কি ইউনিক্স ব্যবহার করছেন?
কুসালানন্দ

উত্তর:


53

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: -

11
stat -c %a /path/to/fileআপনার প্রয়োজন ম্যাজিক ট্রিক।
fromnaboo

এবং উত্তরটি উপরের অ্যাক্সেস ব্লকে রয়েছে। তিনি উদাহরণটিতে যে ফাইলটি ব্যবহার করেছিলেন সেটিতে প্রশ্নের মধ্যে একটির অ্যাক্সেস সেট আলাদা থাকে। প্রশ্নটির মধ্যে একটি অ্যাক্সেস দেখিয়েছে: (0644 / -rw-r - r--)
nycynik


26

সম্পূর্ণ অনুমতি মোড নম্বরটি একটি 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



3

অনুমতিগুলি কেবল বাইনারি সংখ্যার স্ট্রিং প্রতিনিধিত্ব। বেশিরভাগ দ্বারা প্রতিনিধিত্ব করা হয় , বাকি অক্ষর আছে।
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))"

0

স্ট্রিং এবং হেক্স অনুমতি মান সহ ফাইলগুলির তালিকা পান। শেষে% 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

-2

একটি দির মধ্যে সমস্ত সমবর্তী ফাইলের জন্য

-bash-4.1$ chmod -R 640 *

সমস্ত ফাইলের জন্য

-bash-4.1$ chmod 640 *
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.