[1126804] Если я вас правильно понял, то в /dev/sdb есть какая-то файловая система, которую вы смонтировали. Здесь важны разрешения [1127355]в файловой системе [1127356], которая находится в /dev/sdb, разрешения /dev/sdb совершенно не относятся к вашему вопросу. За исключением того, что с разрешениями 0666 любой может обойти механизмы контроля доступа к этой файловой системе и получить произвольный доступ к содержимому устройства, но это другая проблема.
Если вы хотите ограничить доступ к файлам внутри файловой системы, то вы должны назначить файлам соответствующие права собственности и разрешения (начиная с корня этой файловой системы). Для файловых систем типа FAT mount(8) позволяет установить права собственности и доступа для всех файлов внутри файловой системы. Если вы хотите выставить все дерево только для определенных пользователей и скрыть его от всех остальных, то смонтируйте его где-нибудь, к чему имеют доступ только эти пользователи. Но обратите внимание, что любой пользователь может увидеть, что что-то монтируется (mount(8) или df(1) покажут это).
Чтобы избежать путаницы, вы, вероятно, должны подумать о прототипе Найти (1)
Как это:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [dir...] [expression]
Найти (1)
находит файлы в dir
. Выражение
- это логическое выражение, сформированное из тестов, которые применяются к найденным файлам. -Path
, -name
, --тип
являются примерами таких испытаний.
Выше в основном говорится -Path
не устанавливается dir
, но это аргумент взят по отношению к dir
.
говорит -Path '* SRC *'
совпадает как ./ SRC / FOO / BAR / TEST.C
и . /
. / Foo / src / bar / test. C
, но не ./ FOO / BAR / TEST.C
.
говорит *
- это подстановочный знак, и он соответствует каталогам. Он также говорит, что вы не должны спутать его с *
из мира DOS / Windows, где вам нужно написать *. *
, чтобы соответствовать файлам с «расширениями».
Или, по крайней мере, это мое понимание этого.
Удаляется любой файл в стандартной файловой системе UNIX, для которого ссылочный счетчик (например, сумма количества жестких ссылок и число открытых дескрипторов файлов *) достигает 0. Однако в современных UNIX-системах системный вызов rmdir
удаляет пустой каталог за одну операцию, а не .
и ..
один за другим.
Однако в исторических системах UNIX этот системный вызов не существовал. Вместо этого команда rmdir
представляла собой программу setuid ( исходный код можно найти здесь ), которая проверяла, что каталог пуст (кроме специальных записей), а затем удаляла ..
и .
, в этом порядке, а затем удалил сам каталог, все с unlink
системный вызов, который только root было разрешено использовать в каталогах (следовательно, почему команда была setuid). Таким образом, в этих системах число ссылок каталога будет на мгновение равно 1 после .
был удален, но до удаления каталога из родительского каталога он будет равен 0.
Команда rm
, кстати, не позволила даже root удалить каталоги. И rm -r
вызовет команду rmdir
для удаления каталогов после удаления их содержимого.
В этих исторических системах неправильное использование вызова unlink
из программы, выполняющейся от имени root, переход в состояние гонки с помощью rmdir
или mv
или создание файла в процессе, текущий каталог которого был удален (современные системы предотвращают это), может привести к зависанию файлов или каталогов, которые имеют число жестких ссылок выше 0, но не существуют в дереве каталогов. Это состояние было обнаружено dcheck
и по-прежнему является одной из проверок в fsck
, поскольку оно остается физически возможным в большинстве файловых систем.
Файловые системы, кстати, не требуются для реализации каталогов (включая .
и ..
) как обычные файлы с аппаратными ссылками. В этих файловых системах количество жестких ссылок каталога всегда будет отображаться как 0
(но, конечно, его существование в родительском каталоге соответствует «количеству ссылок» 1).
Поведение удаленного каталога (например, при проверке процессом, который уже открыл его или имеет его в качестве текущего каталога) и точное значение «счетчика ссылки» каталога не указаны. Например, в Mac OS X он сообщает о количестве жестких ссылок 2 , даже если у него нет реальных жестких ссылок. Даже если .
и ..
не отображаются в списке, каталог можно открыть и вызвать stat
с именем .
или ..
. В Linux число ссылок равно 0, но равно .
и ..
также работает.
Mac OS X также сообщает количество всех файлов в каталоге в качестве количества ссылок вместо количества подкаталогов. Но это 2, даже когда .
и ..
исчезли.
* Это включает в себя обычные открытые дескрипторы, разделы с отображением памяти (включая, например, выполнение двоичных файлов и общих библиотек) и текущие каталоги обработки.
-121--39847- Вы можете использовать debug
для дампа переменной:
- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
failed_when: "'FAILED' in command_result.stderr"
- name: dump command_result
debug: var=command_result
Это будет выводиться что-то вроде:
TASK: [dump command_result] **************************************************************
ok: [hostname] => {
"command_result": {
"changed": false,
"cmd": "/usr/bin/example-command -x -y -z",
"delta": "0:00:00.018233",
"end": "2015-05-07 09:33:08.444674",
"invocation": {
"module_args": "/usr/bin/example-command -x -y -z",
"module_name": "command"
},
"rc": 0,
"start": "2015-05-07 09:33:08.426441",
"stderr": "",
"stdout": "whatever",
"stdout_lines": [
"whatever"
],
"warnings": []
}
}
-121--202580- Да, «начальный путь» означает одно из отображаемых имен каталогов
рядом с началом команды find
,
после параметров, но до выражения.
Я интерпретирую вопрос, с которым вы связали, как предполагающий, что эта ОП
путался по поводу разницы между
находкой/и т.д....
и
найти -path/etc...
"Оно относится к комбинации начального пути и относительный путь в настоящее время исследованного объекта. «
я предполагаю, что автор того ответа воображает это
имеется каталог с именем tools/crowbar
,
который содержит файлы пить
, пищу
, глупость
и мудрость
.
Если вы говорите
, найдите tools/crowbar -path «* bar/foo *»
он найдет инструменты/ворон бар/foo d
и инструменты/ворон бар/foo лишество
, но не два других.
Я согласен с lcd047. Другими словами, если у вас есть структура каталогов, как
. ├───cat │ собака ├─── │ │ └─── конура │ └─── tac │ └─── src ├───dest ├───original │ рецепт ├─── │ └─── src └───src
then
find. -path «*/src/*»
найдет вещи во всех трех папках src
(и во всех их подкаталогах)
без сообщения о вещах в кошке
, кошке/собаке
, кошке/собаке/питомнике
,
cat/tac
, dest
, original
или original/recipe
.
Это помогает читать целые абзацы, а не только черешневые фрагменты предложения и ожидать, что они будут иметь смысл в изоляции.
Обсуждение теста - путь
в find (1) говорит,
-path образцов
Имя файла совпадает с именем оболочки образца образцов . Метасимволы не обрабатывают '
/
' или '.
'специально; так, например,
найти. -path. «/sr * sc »напечатает запись для каталога с именем './src/misc
' (если существует)....
OK, когда вы видите «имя файла», «шаблон оболочки»,
и «метасимволы» в одной строке,
ожидается, что вы подумаете о совпадении образца оболочки/
расширение имени пути, которое имеет специальные символы образца
*
, ?
и [
... ]
.
(«Metacharacter» в основном является словом $10 для «специального символа»).А потом он идет и показывает вам пример с *
в нем!
Так что вы должны уметь понять, о чем речь.
Так что же это говорит?
Посмотрите на пример: sr * sc
соответствует src/misc
.
Это отличие от расширения пути в оболочке,
где, как правило, необходимо использовать
что-то вроде sr * / * sc
для соответствия src/misc
.
И, нет, это не относится только к *
;
-тракт «sr???? sc»
и -тракт «sr [cim/] [cim/] [cim/] [cim/] [cim/] sc»
работать в одном и том же пути.
И они не спешат упоминать, что -path «* sr * sc»
будет соответствовать не только src/misc
, но и .src/misc
и src/.misc
;
несмотря на то, что * sr */* sc
обычно не совпадает с ними (в оболочке)
потому что, в расширении пути оболочки,
*
обычно не совпадает с именами, начинающимися с .
.