আমি কীভাবে পুনরায় বিপরীতে অনুমতিগুলি চেক করব?


25

একটি কমান্ড আছে, আমি মনে করি এটি অ্যাপাচি নিয়ে আসে, বা এটি কোনওভাবে এর সাথে সম্পর্কিত, যা অনুমতিগুলি যাচাই করে নিচ্ছে down তাই আপনি যদি আমি /home/foo/bar/bazএটা আমার বলতে হবে কি অনুমতি জন্য baz, bar, foo, এবং home। কেউ কি জানেন যে এই আদেশটি বা এটি করার অন্য কোনও উপায় কী? কমান্ডটি মূলত আর্গুমেন্টে শুরু হয়, এবং /অনুমতিগুলি কীভাবে চলছে তা আপনাকে জানানোর জন্য এটি কাজ করে যাতে আপনার অনুমতি সংক্রান্ত সমস্যা আছে কিনা তা আপনি দেখতে পারেন।

উত্তর:


28

আপনি যে ইউটিলিটিটির কথা ভাবছেন তা হ'ল nameiকমান্ড। ম্যানুয়াল পৃষ্ঠা অনুযায়ী:

নামি তার যুক্তিগুলিকে যেকোন প্রকারের ইউনিক্স ফাইলের (সিমলিংক, ফাইল, ডিরেক্টরি এবং আরও কিছু) প্যাথনাম হিসাবে ব্যবহার করে। নামি তারপরে টার্মিনাল পয়েন্ট (ফাইল, ডিরেক্টরি, চর ডিভাইস ইত্যাদি) না পাওয়া পর্যন্ত প্রতিটি পাথের নাম অনুসরণ করে। যদি এটি একটি প্রতীকী লিঙ্ক খুঁজে পায়, আমরা লিঙ্কটি প্রদর্শন করি এবং প্রসঙ্গটি দেখানোর জন্য আউটপুট ইনডেন্ট করে এটি অনুসরণ করা শুরু করি।

আপনার ইচ্ছা অনুযায়ী আউটপুটটি প্রাপ্ত হতে পারে:

$ namei -l /usr/src/linux-headers-2.6.35-22/include/
f: /usr/src/linux-headers-2.6.35-22/include/
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxrwsr-x root src  src
drwxr-xr-x root root linux-headers-2.6.35-22
drwxr-xr-x root root include

nameiকমান্ড অংশ লিনাক্স-util-ng সফ্টওয়্যার প্যাকেজ। দেখুন ম্যানুয়েল পৃষ্ঠা আরো বিস্তারিত জানার জন্য।


এটি হতে পারে বলে মনে হচ্ছে এটি কেবলমাত্র সিমলিংকের জন্যই করে, যদিও আমি কী ব্যবহার করছি এবং এটি কোনও সিমলিংকে ছিল কিনা তা আমার মনে নেই।
xenoterracide

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

আমার জন্য নয় :( এটি আমার
পক্ষে সিমলিংকের

আপনি কি সংস্করণ ব্যবহার করছেন? আমি 2.18
xenoterracide

2
যারা অলস তাদের জন্য নামি ব্যবহারের আর একটি দরকারী উপায়। namei -l $PWD/public_html/আপনার বর্তমান দির থেকে পার্মের তালিকা পেতে আপনার বর্তমান দির থেকে আমাদের W পিডাব্লুডি করুন।
নীলাও

7

আমি কোনও কমান্ড সম্পর্কে অবগত নই, তবে স্ক্রিপ্টটি লেখা বেশ সহজ:

#!/bin/bash    
ARG=$1
while [[ "$ARG" != "." && "$ARG" != "/" ]]
do
        ls -ld -- "$ARG"
        ARG=`dirname -- "$ARG"`      
done

উদাহরণ:

$ perms.sh /tmp/1/2/3/hello.txt

-rw-rw-r--    1 user    group          0 Jan 14 16:59 /tmp/1/2/3/hello.txt
drwxrwxr-x    2 user    group       4096 Jan 14 16:59 /tmp/1/2/3
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1/2
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1
drwxrwxrwt   12 root     root       4096 Jan 14 17:02 /tmp

2

একটি মজাদার সমাধানের জন্য পুনরাবৃত্ত বাশ ফাংশন সম্পর্কে কীভাবে:

[bash#] function uptree { ( \ls -ld -- "$PWD"; [ "$PWD" = '/' ] && return; cd ..; uptree ) | column -t ; } 

[bash#] pwd
/home/frielp/bin/dev

[bash#] uptree
drwxrwxr-x.  2   frielp  frielp  4096  Dec  14  14:50  /home/frielp/bin/dev
drwxr-xr-x.  15  frielp  frielp  4096  Aug  23  10:48  /home/frielp/bin
drwxr-xr-x.  60  frielp  frielp  4096  Jan  14  16:48  /home/frielp
drwxr-xr-x.  4   root    root    4096  Dec  1   09:14  /home
dr-xr-xr-x.  23  root    root    4096  Jan  14  08:18  /

[bash#] pwd
/home/frielp/bin/dev
[bash#] 

এটি আমার প্রিয় কারণ এটির কোনও নির্ভরতার প্রয়োজন নেই। এটি সেটটি তৈরি করতে চাই cd .. >/dev/nullযদিও আমাদের মধ্যে তাদের জন্য একটি $CDPATHসেট রয়েছে (যার ফলে সিডির বর্তমান
ডিরটি

2

আমি মনে করি আপনি যে আদেশটি সন্ধান করছেন তা হ'ল:

namei -l `pwd`

যা / tmp / foo / বারে মৃত্যুদন্ড কার্যকর করা হলে আপনাকে একটি তালিকা দেয়:

drwxr-xr-x root   root   /
drwxrwxrwt root   root   tmp
drwxr-xr-x user   group  foo
drwxr-xr-x user   group  bar

1

এটি সহজেই ওয়ান-লাইনার তৈরি করা যেতে পারে। এটি পুনরাবৃত্তিযোগ্য নয় এবং এটি ব্যাশের ক্ষেত্রে তুলনামূলকভাবে দ্রুত উপায় হওয়া উচিত। প্রতিটি লুপে পিডাব্লুডিকে কল করা বিশেষভাবে দ্রুত হয় না, তাই পারলে এড়িয়ে চলুন।

#!/bin/bash
if [ -n "$1" ]; then
    echo "Usage: $0 [FILE]"
    exit 1
fi
cd -P -- "$1"
IFS="/"
set -f # turn off globbing for the expansion of $PWD below
for dir in $PWD; do
    stat -c "$PWD %A" .
    cd ..
done

বিকল্প, বর্তমান ডিরেক্টরিটির জন্য একটি ওয়ান-লাইনার।

(IFS="/"; set -f; for dir in $PWD; do stat -c "$PWD %A" .; cd ..; done)

এটা কি ওয়ান-লাইনার? আমি কি কিছু রেখে গেলাম?
ফুনেহে

পিডব্লিউডির জন্য ওয়ান-লাইনার হিসাবে: পুশড $ (পিডব্লিউডি)> / দেব / নাল; OIFS = $ IFS; IFS = "/"; dir in $ (pwd); স্ট্যাটাস-সি "$ (পিডব্লিউডি)% এ" করুন ;; সিডি ..; সম্পন্ন; IFS = $ OIFS; পপড> </ দেব / নাল
ইন্দিণ্ডিশ

আপনার স্ক্রিপ্টটি ফাঁকা জায়গা বা গ্লোববিং অক্ষরযুক্ত ফাইলের নামের সাথে কাজ করবে না।
গিলস 16:32-তে

গিলস, আমি অনুমান করি না। এটি মূলত ছিল, তবে আমি এটিকে সম্পাদনা করেছিলাম। আমি xargs সরিয়েছি এবং এটি আবার সঠিকভাবে কাজ করা উচিত।
ewindisch

পুশড এবং পপড কেন ব্যবহার করবেন? বা প্রমাণ, এই বিষয়ে? সমস্ত পরিবর্তন স্থানীয় রাখার জন্য আপনি একটি সাব-শেল (প্রথম বন্ধনী) ব্যবহার করতে পারেন। স্পেস সহ ডিরেক্টরিগুলির নাম রক্ষা set -fকরতে এবং গ্লোব্বিং বন্ধ করতে আপনার ডাবল উদ্ধৃতি প্রয়োজন । cd -Pসমস্ত symlinks অনুসরণ।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

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