Есть много способов реализации, так как есть много разных схемы управления питанием реализованы в зависимости от того, что у вас установлено.
Этот простой вариант работает для меня на минималистичном 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 )
Когда 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, чтобы предоставить группе полный доступ к ним.
Это особенный случай, и вы не можете справиться с этим, используя устаревшую архитектуру разрешений системы 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
Установите группу каталогов как manager:
chgrp -hR manager /your/target/directory/path
А затем добавьте бит set-GID к своему разрешению, так что если user1
меняет что-либо, группа сможет писать снова:
chmod g+s /your/target/directory/path
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
Готово
Помимо того, что вы являетесь частью группы, вы должны установить разрешение на запись в каталог:
chmod 770 /var/www/user1Project/example_dir
(используйте 775, если вы хотите, чтобы мир имел разрешение на чтение, что более вероятно в веб-каталоге).
Также следует понимать, что диспетчер пользователей должен повторно войти в систему после добавления в группу user1
.
Если вы хотите, чтобы каждый каталог, созданный user1
, был доступен для записи членам группы группы user1
, вы можете установить:
umask 0002
, что приведет к каталогам, созданным с разрешениями rwxrwxr-x
.