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


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.