Я помню, что делал что-то вроде «XXX / home / user / dir / child / file», и он возвращал владельца и / или разрешение:
/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file
Но я не помню, что это была за команда. Есть идеи?
Я помню, что делал что-то вроде «XXX / home / user / dir / child / file», и он возвращал владельца и / или разрешение:
/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file
Но я не помню, что это была за команда. Есть идеи?
Ответы:
Команда могла бы быть:
namei -m /home/user/dir/child/file
namei -moздорово, что это также дает вам владельца.
sudo su nginx -s/bin/bash
Я думаю, что вы можете думать о 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 - имя пользователя / идентификатор пользователя-f - полный путь-i - не печатать отступы-d - только каталоги печати/home/user/dir/child/fileне детей.
-uдействительно необходимо? Кажется, это по умолчанию здесь (Tree вер. 1.6.0 под GNU Bash 4.2.45). Есть ли возможность отключить "username / userid"?
Подумав, я придумал это
#!/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'
| tacесли у вас есть, или | sed '1!G;h;$!d'если нет.
В каталоге, в котором вы хотите знать разрешения и владельцев предка:
for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done
Обратите внимание, что после этого вы будете в /:), если вы хотите вернуться туда, где вы были, оберните команду внутри
HERE=$(pwd)
...
cd ${HERE}
Командой, в которой вы ищете список разрешений и владельцев / групп, является ls -l .
-l опция используется для длинного формата листинга.
ls -l / path / to / list
Кроме того, если вы хотите получить список и скрытые файлы, добавьте опцию -a (все) .
ls -al / path / to / list
Также, если вы хотите перечислить разрешения в ваших подкаталогах, используйте опцию -R (рекурсивный) .
ls -Rl / path / to / list
В первом столбце отображаются разрешения (чтение (r), запись (w), выполнение (x)) и некоторые специальные разрешения (каталоги (d), - (обычный файл)), а в 3-м и 4-м столбцах показан файл / каталог. владелец и группа соответственно.
apropos modeилиapropos permissionsна OS X и Debian. Знаете ли вы, какую платформу / дистрибутив вы использовали? Это могла быть локальная команда? Вы можете написать скрипт для такого инструмента, используяdirnameиstat.