Как установить разные разрешения по умолчанию для файлов и папок с помощью setfacl?

( Кстати, «виртуальный последовательный порт» — это термин Windows, в Unix это называется «(псевдо)tty».)

Ctrl -alt -delor означает, что вы можете просто выполнить один socatв «контейнере последовательного устройства» и один socatв «контейнере кода» с помощью устройства; они взаимодействуют через сетевое соединение, поэтому один контейнер должен знать IP-адрес и порт другого контейнера, вот и все (, и вы можете выбрать, какой контейнер соединяется с другим контейнером ). Кроме того, код, работающий в «контейнере кода», просто использует tty; так что это не зависит ни от чего другого, кроме пути к tty (, который должен быть параметром/аргументом командной строки/и т. д., в любом случае ).

Детали вызова socatзависят от некоторых других деталей того, что вы хотите сделать; возможно, использование tcp-listenи tcpявляется самым простым вариантом. Множество socatпримеров, например. здесь .

Редактировать

Для объяснения именования :tty(телетайп )представляет собой абстракцию над определенными параметрами последовательного порта вместе с переводом и интерпретацией символов (, таких как end -of -линия )и другие вещи, такие как линейная дисциплина. Псевдо -tty — это tty без реального оборудования. Терминал tty отличается от файла тем, что он позволяет ioctls устанавливать все эти параметры.

Итак, если в вашей программе есть функция установки, скажем, скорости передачи данных, вам нужен tty. Если это не так, вы также можете использовать именованный канал.

Однако нет никакой разницы, используете ли вы именованный канал или tty в отношении совместного использования контейнеров. :Вам все равно придется где-то настроить общую файловую систему, куда вы сможете поместить любой из них. И это не обязательно то, как обычно работают контейнеры (docker ).

Контейнеры

OTOH, (docker )обычно готовы к работе в сети. Таким образом, может быть проще подключить контейнеры через сеть,вместо того, чтобы заставить их иметь общие файловые системы. И у этого есть дополнительное преимущество, заключающееся в том, что контейнеры не должны работать на одном и том же хосте (, который контейнеры Docker не предполагают ). Так что это более естественная посадка.

Конечно, вы можете делать это как хотите.

0
15.12.2020, 04:23
1 ответ

Невозможно различать файлы и каталоги, используя только setfacl . Вместо этого вы можете обойти проблему с помощью инструментов inotify -для обнаружения новых созданных файлов/каталогов, а затем рекурсивно применять правильные ACL для каждого из них:

1 -Сначала необходимо установить пакет инструментов inotify -.

2 -Восстановить acls каталога /stuff по умолчанию

sudo setfacl -bn /stuff

3 -УстановкаGID

sudo chmod g+s /stuff

4 -Выполните следующий сценарий в фоновом режиме в целях тестирования, чтобы окончательное решение обернуло его внутри службы.

#!/bin/bash
sudo inotifywait -m -r -e create --format '%w%f' /stuff | while read NEW
do
    # when a new dir created
    if [ -d "$NEW" ]; then
        sudo setfacl -m u::rwx "$NEW"
        sudo setfacl -m g::rwx "$NEW"
   # when a new file created
    elif [ -f "$NEW" ]; then
        sudo setfacl -m u::rw "$NEW"
        sudo setfacl -m g::rw "$NEW"
fi
    # setting no permissions for others
    sudo setfacl -m o:--- "$NEW"
done
1
18.03.2021, 22:42

Теги

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