Как установить полномочия файла по умолчанию для всех папок/файлов в каталоге?

Запуск с конвейера:

foo | bar | baz

Вот общее решение с помощью только оболочку POSIX и никакие временные файлы:

exec 4>&1
error_statuses="`((foo || echo "0:$?" >&3) |
        (bar || echo "1:$?" >&3) | 
        (baz || echo "2:$?" >&3)) 3>&1 >&4`"
exec 4>&-

$error_statuses содержит коды состояния любых неудавшихся процессов, в произвольном порядке, с индексами для сообщения, какая команда испустила каждое состояние.

# if "bar" failed, output its status:
echo "$error_statuses" | grep '1:' | cut -d: -f2

# test if all commands succeeded:
test -z "$error_statuses"

# test if the last command succeeded:
! echo "$error_statuses" | grep '2:' >/dev/null

Отметьте кавычки вокруг $error_statuses в моих тестах; без них grep не может дифференцироваться, потому что новые строки принуждены к пробелам.

263
30.04.2013, 23:38
5 ответов

Я нашел его: Применение полномочий по умолчанию

От статьи:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

Затем мы можем проверить:

getfacl /<directory>

Вывод:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
280
27.01.2020, 19:26
  • 1
    Yay для липкого бита! –  gabe. 27.08.2010, 18:11
  • 2
    Позволяет не, путают ценуроз с липким битом. –  Amit Naidu 25.04.2013, 07:51
  • 3
    g+s гарантирует, что новое содержание в каталоге наследует владение группы. setfacl только изменяет chmod в Ваших наборах случая разрешение к o=rx –  Steen Schütt 12.02.2014, 14:28
  • 4
    Обратите внимание, что ACL должен быть включен (включенный как одна из опций монтирования для смонтированной файловой системы) для полномочий файла, которые будут наследованы. –  sg23 21.10.2014, 22:29
  • 5
    Вы могли бы хотеть рассмотреть использование 'X' вместо этого, таким образом, это только установит, выполняют разрешение на каталогах не файлы setfacl -d -m g::rwX /<directory> –  Adrian Gunawan 31.08.2017, 03:50

Это дополнение к ответу Криса, оно основано на моем опыте на моей системе Arch Linux.

Использование переключателя default (-d) и переключателя modify (-m) изменит только разрешения по умолчанию, но оставит существующие разрешения нетронутыми:

setfacl -d -m g::rwx /<directory>

Если вы хотите изменить всю структуру разрешений папки, включая существующие (вам придется сделать дополнительную строку и сделать ее рекурсивной с помощью -R):

setfacl -R -m g::rwx /<directory>

Примеры:

# Gives group read,write,exec permissions for currently existing files and
# folders, recursively.
setfacl -R -m g::rwx /home/limited.users/directory 

# Revokes read and write permission for everyone else in existing folder and
# subfolders.
setfacl -R -m o::x /home/limited.users/directory  

# Gives group rwx permissions by default, recursively.
setfacl -R -d -m g::rwx /home/limited.users/directory

# Revokes read, write and execute permissions for everyone else. 
setfacl -R -d -m o::--- /home/limited.users/directory

(CREDIT to markdwite in comments for the syntax of the revoke all privileges line)

34
20.08.2021, 13:40

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

chacl -R filename
-1
20.08.2021, 13:40

Добавьте себя/зарегистрированного пользователя в группу данных www -, чтобы мы могли работать с файлами, созданными сервером данных www -

sudo usermod -a -G www-data $USER

Необходимо перезапустить/повторно войти в систему, чтобы новая добавленная группа вступила в силу

cd /var/www

Добавьте данные www -в качестве члена группы в папку html, а вашего пользователя в качестве владельца, чтобы они принадлежали нам, а также члену группы

sudo chown -R $USER:www-data html

Введите свое имя пользователя вместо USER

При необходимости установите права на чтение, запись и выполнение, (ugo )u=пользователь, g=группа, o=другие

sudo chmod 750 html

Задайте GID html, теперь вновь созданные файлы в html будут наследовать права владения:

sudo chmod g+s html

Это создает правила по умолчанию для вновь созданных файлов/каталогов в каталоге html и подкаталогах.

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

Сделайте SELinux, если он установлен,игнорировать требование контекста данных www -, чтобы разрешить права на запись

sudo setsebool -P httpd_unified 1

список каталогов для просмотра примененных новых разрешений

ls -ld html

Возвращает это

drwxrwsr-x+   3 html www-data

Знак + в конце означает, что для каталога установлен ACL (список управления доступом).

Ссылка:Ссылка на форум

3
20.08.2021, 13:40

Приведенный выше ответ не обновляет права доступа к исполняемому файлу, хотя они и отображаются. Использоватьchacl -r u::rwx,g::r-x,o::r--./

0
09.10.2021, 17:29

Теги

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