Итак, вы хотите, чтобы файлы/каталоги, созданные в этом каталоге, наследуют разрешения родительского каталога?
Для этого вам нужно использовать ACL по умолчанию(acl(5)
):
If a default ACL is associated with a directory, the mode parameter to the functions creating file objects and the default ACL of the directory are used to determine the ACL of the new object:
- The new object inherits the default ACL of the containing directory as its access ACL.
Таким образом, сsetfacl(1)
флаг -d
сообщает ему изменить ACL по умолчанию:
$ ls -ld data
drwxrwsr-x+ 2 userone groupone 4096 Dec 8 18:36 data/
$ setfacl -d -m u::rwx,g::rwx,o::r-x data
$ getfacl data
# file: data
# owner: userone
# group: groupone
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
При такой настройке новый файл или каталог, созданный в каталоге, получает разрешения из списка управления доступом по умолчанию. Это переопределяет umask
процесса, создающего файл, но не переопределяет режим файла, указанный в open()
/ mkdir()
/etc. системный вызов.
$ mkdir data/test
$ ls -ld data/test
drwxrwsr-x+ 2 userone groupone 4096 Dec 8 18:38 data/test/
Возможно, вам потребуется включить ACL в файловой системе во время монтирования с помощью параметра монтирования acl
.
Они не совсем одинаковы! Посмотрите на awk, в одном у вас есть
awk '{print $NF}'
а в другом у вас
bash -c ".... awk '{print $NF}'..."
В первом $
защищено одинарными кавычками, поэтому программа для awk — {print $NF}
, но во втором одинарные кавычки не имеют значения, пока строится строка. Предполагая, что у вас нет определенной переменной оболочки с именем NF
, последняя дает
bash -c "... awk '{print }'..."
поэтому awk печатает весь вывод вашей команды aws
, а оболочка выдает вам синтаксические ошибки.
$ (... ), вероятно, также оценивается в неправильное время.
Как правило, всегда используйте одинарные кавычки, а не двойные кавычки, если вы не хотите, чтобы оценивались переменные.