Чтобы получить доступ к каталогу, сам каталог, а также все промежуточные каталоги от корня вниз должны иметь разрешение x
для данного пользователя, его группы или всех. Это позволило бы читать файлы в каталоге, если бы кто-то знал их имена путей (, перечисляющие содержимое каталога, не было бы разрешено, если r
также не действовало ).
Для мира -запись -только каталог («запись» означает «разрешение создания и удаления файлов и подкаталогов, а также обновление их метаданных» ), права доступа к самому каталогу должны быть wx
, и все родительские каталоги должны иметь как минимум x
.
Если вы создаете «почтовый ящик» в своем домашнем каталоге, то:
cd
mkdir directory
chmod o=wx,g=wx directory
chmod a+x "$HOME"
Обратите внимание, что я также даю группеwx
доступ к каталогу здесь (вместо того, чтобы использоватьg=
).Члену группы, владеющему каталогом (, возможно, ваша основная группа ), в противном случае был бы явно запрещен доступ к каталогу, даже если o=wx
действовал.
Предполагая, что вы как владелец имеете rwx
разрешения на доступ к каталогу, это эквивалентно восьмеричным разрешениям 0733 для каталога "Drop Box".
Просто используйте tee
. Но чтобы получить стандартную ошибку, вам нужно перенаправить стандартную ошибку исходной программы. Канал(|
)только передает стандартный вывод в tee
, поэтому файл ошибок пуст. То, что вы хотели, это:
ls /etc /dvd /var 2> /tmp/ioerror | tee /tmp/ioutput
Если вы хотите видеть на экране и stderr, и stdout, попробуйте следующее:
ls /etc /dvd /var 2> >(tee /tmp/ioerror) | tee /tmp/ioutput
Это сначала перенаправит stderr на tee /tmp/ioerror
, что означает, что вы увидите его на экране и сохраните в файле, а затем он направит stdout на tee /tmp/ioutput
, гарантируя, что он также будет распечатан и сохранен в файле..