Разрешить группе читать / записывать в папке, принадлежащей конкретному пользователю

Есть много способов реализации, так как есть много разных схемы управления питанием реализованы в зависимости от того, что у вас установлено.

Этот простой вариант работает для меня на минималистичном Debian Jessie без какой-либо среды рабочего стола, только с маленьким и быстрым оконным менеджером icewm. (Он урезан, потому что в противном случае он слишком медленный, и таким образом он превосходит GNOME на гораздо лучшем оборудовании)

В частности, я ДЕЙСТВИТЕЛЬНО установил следующие пакеты: acpi acpi-fakekey acpi- поддерживают acpi-support-base acpid pm-utils , но не имеют НИКАКОГО из следующего (после их очистки): gnome * kde * systemd * uswsusp upower laptop-mode- tools hibernate policykit-1

Так что я просто поместил это в /etc/cron.d/battery_low_check (все в одной строке, разделены для удобства чтения):

*/5 * * * *   root  acpi --battery | 
   awk -F, '/Discharging/ { if (int($2) < 10) print }' | 
   xargs -ri acpi_fakekey 205

Это быстро, мало ресурсов - использования, и не зависит от других демонов (на самом деле, он будет проигнорирован, если они активны - подробности см. в / usr / share / acpi-support / policy-funcs ).

Что он делает: каждые 5 минут ( * / 5 - вы можете изменить на каждую минуту, просто используя * , если вам нужно чаще проверять батарею) он будет опрашивать состояние батареи (« acpi --battery ») и выполнять команду после xargs -ri , только если батарея «разряжается» (то есть вы не подключены к сети переменного тока). ) и уровень заряда батареи менее 10% int ($ 2) <10 » - не стесняйтесь настраивать его под свои нужды)

acpi_fakekey 205 будет отправка по умолчанию KEY_SUSPEND Событие ACPI (например, вы нажали клавишу на ноутбуке с запросом приостановки), которое затем сделает то, что обычно делает за вас (настроено в / etc / default / acpi-support ) - у меня он спит на диск.

Вы можете использовать другую команду вместо acpi_fakekey 205 , конечно: например, hibernate (из пакета гибернации), s2disk или s2mem (из пакета uswsusp), pm-suspend-hybrid (из пакета pm-utils) и т. д.

Кстати, магические номера ключей, такие как KEY_SUSPEND = 205 выше, определены в ] / usr / share / acpi-support / key-constants (другой интересный, вероятно, KEY_SLEEP = 142 )

6
11.08.2016, 11:59
5 ответов

Когда user1 создает каталог, он будет принадлежать user1: user1 . Это означает пользователь: группа. Предполагая, что они находятся в одной группе, назовем ее group1 , user1 должен сделать группу group1 владельцем группы этого каталога. Итак:

chown :group1 dir`

Теперь, чтобы менеджер мог читать / записывать каталоги, биты разрешения группы должны быть установлены на 7, то есть rwx . Это делается так:

chmod g+rwx dir

Но когда manager создает файл, он принадлежит manager: manager , поэтому ему нужно chown его на ]: group1 для групповых разрешений, применяемых к group1 , так же, как user1 должен был сделать.

Есть уловка, которая копирует владение группой из родительского каталога. Это специальный бит разрешения группы, SGID.Это можно сделать так:

chmod g+s dir

Наконец, вновь созданные элементы (файлы и каталоги) получают разрешения от своих родителей, плюс есть последний модификатор, называемый umask . Он инвертирует отдельные биты разрешений, если они установлены, и имеет тот же формат из 4 восьмеричных цифр. Обычно это 0002 или 0022. 0002 означает, что второй справа бит будет замаскирован (или инвертирован). Например, с umask 0022, когда вы создаете новый каталог в другом каталоге с разрешениями rwxrwxrwx, новый каталог получит разрешения rwxr-xr-x.

Итак, если менеджер имеет umask 0022, он также должен будет chmod chmod его каталоги и файлы на 7, чтобы предоставить группе полный доступ к ним.

2
27.01.2020, 20:23

Это особенный случай, и вы не можете справиться с этим, используя устаревшую архитектуру разрешений системы Unixoid. Самый близкий подход к вашему намерению - использование ACL . Выполните следующую команду (необязательно от имени суперпользователя):

setfacl -d -R -m g:manager:rwx /dir/of/user1
setfacl -R -m g:manager:rwx /dir/of/user1

Первая команда устанавливает разрешения по умолчанию для каталога, чтобы они применялись к вновь созданным файлам (пользователем user1). Вторая команда рекурсивно устанавливает фактические права для папок и файлов.

Обратите внимание, что инфраструктура ACL не применяется к веб-серверу Apache. Apache заботится только об устаревших разрешениях (разрешение пользователя / группы / других). Таким образом, внутри веб-папки каждый файл / папка должен находиться в группе www-data , и каждый файл должен иметь как минимум права на чтение для www-data . Папки должны иметь права на выполнение для www-data для поиска по индексу.

Обновление:

Чтобы вновь созданные файлы внутри каталога наследовали группу этого каталога, установите бит gid каталога:

chmod g+s /web/directory

Новые файлы внутри / web / directory будут затем унаследуйте группу / web / directory

4
27.01.2020, 20:23

Установите группу каталогов как manager:

chgrp -hR manager /your/target/directory/path

А затем добавьте бит set-GID к своему разрешению, так что если user1 меняет что-либо, группа сможет писать снова:

chmod g+s /your/target/directory/path
2
27.01.2020, 20:23

setfacl выглядит лучшим предложением для вас. Убедитесь, что установлены утилиты acl . Чтобы проверить, установлен ли он уже

В базовых системах Redhat выполните:

yum list acl

В системах на основе Debian сделайте

dpkg -l acl

Если он еще не установлен, для базовых систем Redhat выполните:

yum install acl.x86_64 # Or use dnf for later versions of Fedora and so

В системах на основе Debian сделайте

dpkg install acl

Включить acl в файловых системах, мое изменение / etc / fstab

UUID=your_uuid_here   /partition    filesystemtype   options,acl   0   2

Примечание , acl - единственная добавленная часть, теперь перемонтируйте раздел

mount -o remount /your_partition_here

(Это завершает часть установки, вы можете не делать этого если acl уже установлен).


Применение setfacl

setfacl -m g:manager:rw file /var/www/user1Project #you need root privileges

Готово

1
27.01.2020, 20:23

Помимо того, что вы являетесь частью группы, вы должны установить разрешение на запись в каталог:

 chmod 770 /var/www/user1Project/example_dir

(используйте 775, если вы хотите, чтобы мир имел разрешение на чтение, что более вероятно в веб-каталоге).

Также следует понимать, что диспетчер пользователей должен повторно войти в систему после добавления в группу user1 .

Если вы хотите, чтобы каждый каталог, созданный user1 , был доступен для записи членам группы группы user1 , вы можете установить:

umask 0002

, что приведет к каталогам, созданным с разрешениями rwxrwxr-x .

2
27.01.2020, 20:23

Теги

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