Почему не удается прочитать содержимое каталога? [дубликат]

Функция system() в awk запускает команду и возвращает ее статус. Вы получили 0, потому что команда выполнена успешно. Вывод date +'%s' печатался отдельно.

Чтобы получить вывод внешней команды, вы должны использовать getline():

$ echo foo bar baz | awk '{"date +%s" | getline d; printf "%s %s\n", d, $0}'
1491147643 foo bar baz

Нет ничего общего с OFS, потому что по умолчанию это пробел.


С помощью gawk или mawk вы также можете сделать:

echo foo bar baz | gawk '{printf "%s %s\n", systime(), $0}'

Функция systime() возвращает количество секунд с начала эпохи, не считая високосных секунд


IOW, вы можете сделать это в одиночку с помощью date:

date +'%s foo bar baz'

0
19.03.2019, 12:33
2 ответа

В вашем каталоге /media/diskотсутствует бит выполнения для группы и «других».

Это означает (ИМХО несколько запутанным образом ), что вы можете успешно прочитать из каталога (, поскольку бит чтения установлен )и перечислите его содержимое, а вы не можете воздействовать на него или войти в него (через cd), и это включает в себя перечисление его дочернего содержимого, пока маска разрешения 744.

Если вы хотите получить доступ к определенному подкаталогу (-ies)без предоставления доступа ко всему дереву, тогда достаточно удалить доступ на чтение, но установить бит выполнения:

$ su
# mkdir -p /tmp/parent/child
# chmod 711 /tmp/parent/
# chmod 755 /tmp/parent/child/
# touch /tmp/parent/child/test
# exit
$ ls /tmp/parent/
ls: cannot open directory '/tmp/parent/': Permission denied
$ cd /tmp/parent/
$ pwd
/tmp/parent
$ ls
ls: cannot open directory '.': Permission denied
$ ls child/
test
5
28.01.2020, 02:18

Глупость во многом основана -на мнении, но учтите, что требование прав «выполнения» для всех каталогов на пути означает, что доступ ко всему поддереву может быть запрещен путем отказа в доступе к корневому каталогу этого поддерева. «Выполнение» каталога не имеет особого смысла, поэтому бит xможет быть лучше назван «доступом» в случае каталогов.

Другими словами, установив разрешения /home/$USERна 700(, т.е. rwx------), мы можем быть уверены, что ни один другой пользователь не получит доступ к файлам $USER, даже если они или какая-либо программа, которую они используют, случайно создают файлы. с более либеральными разрешениями в своем домашнем каталоге. Есть только одно место для проверки, а не каждый файл.

1
28.01.2020, 02:18

Теги

Похожие вопросы