Переглянути дозвіл / власника повного дерева каталогів


27

Я пам'ятаю, що робив щось на зразок "XXX / home / user / dir / child / file", і він повертав власнику та / або дозвіл:

/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file

Але я не пам'ятаю, що це за команда. У когось ідея?


Не бачачи нічого повчального від apropos modeабо apropos permissionsна OS X і Debian. Чи знаєте ви, яку платформу / дистрибуцію ви використовували? Можливо, це була команда для місцевих сайтів? Ви можете скриптувати такий інструмент, використовуючи dirnameта stat.
— mrb

Використання Arch Linux та досить ванільна установка, тому не надто багато встановлених додаткових інструментів. Зауважте, що це були дозволи власників І / АБО, я не впевнений на даний момент. Будь-яке було б корисно.
— видаліть мене

Відповіді:


31

Команда могла бути:

namei -m /home/user/dir/child/file

6
namei -moчудово, що він також дає вам власника.
— земляLon

2
ПОПЕРЕДЖЕННЯ: namei не відображатиме ACL або SELinux MAC у Linux. Я зрозумів, що ACL блокує nginx, вручну перевіривши йогоsudo su nginx -s/bin/bash
— Рей Фосс

28

Я думаю, ти можеш думати про treeкоманду. Наприклад:

$ tree -pufid apps/glassfish3/ | less
apps/glassfish3
[drwxr-xr-x saml    ]  apps/glassfish3/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/config
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/doc-files
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/security
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/sql
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/decorator
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable
...
...

Наведені вище перемикачі виконують наступне:

  • -p - дозволи
  • -u - ім’я користувача / userid
  • -f - повний шлях
  • -i - не друкувати рядки відступу
  • -d - друкувати лише каталоги

Список літератури


3
Я думаю, що його просили показати предків /home/user/dir/child/fileне дітей.
— Рафаель Аренс

@RaphaelAhrens - так, я розумію, але це не команда, про яку я знаю, що робить саме це, але є команда дерева, яка робить те, що я показала, і це підозріло схоже на те, що думала ОП.
— slm

Чи -uсправді потрібно? Здається, тут за замовчуванням (дерево вер. 1.6.0 під GNU bash 4.2.45). Чи є можливість замовкнути "ім'я користувача / userid"?
— Нікос Олександріс

1
@NikosAlexandris - якщо я скину цей перемикач, я не отримаю ім'я користувача. Моя версія: дерево v1.6.0. Я на Fedora 19, GNU bash, версія 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
— slm

Різні "за замовчуванням" між версіями bash? Дякуємо, що повідомили.
— Нікос Олександріс

3

Після того, як дав це кілька тисяч, я придумав це

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done

Вихід виглядає приблизно так

-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file
drwxr-xr-x 85 tant tant 5632 Jul  9 19:40:11 2013 /home/tant
lrwxr-xr-x 1 root wheel 8 Sep  4 23:53:27 2012 /home -> usr/home

Я сподіваюся, що це нормально, що це в зворотному порядку.

На основі коментарів, ось спосіб перерахувати від кореня вниз:

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done | sed '1!G;h;$!d'

1
Ви можете повернути назад, | tacякщо у вас є, чи | sed '1!G;h;$!d'ні.
— mrb

2
Це порушиться для відносних шляхів. Зробіть [ "$l_path" != / -a "$l_path" != . ]замість цього.

@Evan Teitelman dirname повинен дати повний шлях
— Рафаель Аренс

1
@RaphaelAhrens ні, він зрештою поверне крапку для відносного шляху.
— пік

1
Також, stat -lмабуть , має бути statабо ls -ld.

0

У довіднику, який ви хочете дізнатись дозволи та власники астерів:

for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done

Зауважте, що після цього ви прийдете /:), якщо ви хочете повернутися туди, де ви були, загорніть команду всередину

HERE=$(pwd)
...
cd ${HERE}

-1

Команда, яку ви шукаєте для переліку дозволів та власників / груп, - ls -l .

-l варіант використовується для формату довгого списку.

ls -l / шлях / до / списку

Крім того, якщо ви хочете перерахувати та приховані файли, тоді додайте параметр -a (all) .

ls -al / шлях / до / списку

Крім того, якщо ви хочете перерахувати дозволи у ваших підкаталогах, використовуйте параметр -R (рекурсивний) .

ls -Rl / шлях / до / списку

У першому стовпці відображаються дозволи (read (r), write (w), Execute (x)) та деякі спеціальні дозволи (каталоги (d), - (звичайний файл)), а 3-й та 4-й стовпці показують вам файл / каталог власник і група відповідно.


2
Я не думаю, що саме цього просять. Схоже, запитувач шукає список дозволів каталогів, які ведуть до файлу.
— Мат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.