Действие Acpid работает при запуске от имени root, но не при запуске из systemd

dd не генерирует контент ( за исключением пробела или нулевого заполнения, которые он может выполнять с некоторыми параметрами), его задача - читать данные откуда-то и записывать их в другом месте указанными способами.

По умолчанию dd записывает в свой стандартный вывод то, что он читает из своего стандартного ввода. Итак, самое простое, что вы можете сделать, это (в виде кода оболочки).

dd << EOF > file
Hello World
EOF

dd читает свой стандартный ввод (здесь документ, предоставленный оболочкой) по 512 байт за раз и записывает его на свой стандартный вывод (здесь открытый оболочкой в ​​ файле ).

Он может открыть выходной файл самостоятельно:

dd of=file << EOF
Hello World
EOF

Он может выполнять некоторые преобразования, искать, читать по меньшим / большим фрагментам и т. Д.

dd bs=1 skip=15 << EOF > file
Please output: Hello World
EOF

Или:

dd bs=12 count=1 conv=swab << EOF > file
eHll ooWlr
daft
EOF
3
10.02.2016, 00:35
1 ответ

ок. Проблема с SELinux. При создании некоторых новых материалов, связанных с существующей службой, вам необходимо убедиться, что у службы будет соответствующий доступ к вашим файлам. Журнал из вашего файла предполагает, что у него нет (если он не запущен как unlimited_t ).

executing action "/etc/acpi/actions/lid.sh "button/lid LID open""
action exited with status 126

Выполнение вышеуказанной команды завершилось неудачно (статус выхода 126), что означает, что исходный тип apmd_t не имеет возможности выполнить ваш файл (у которого есть неизвестные мне метки). Просматривая политику, например:

$ sesearch -A -s apmd_t -p execute /etc/selinux/targeted/policy/policy.*

, мы можем заметить строку

allow apmd_t apmd_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open } 

, позволяющую выполнять типы apmd_exec_t . Изменение меток вашего исполняемого файла на этот тип должно продвинуть вас вперед:

# chcon -t apmd_exec_t /etc/acpi/actions/lid.sh

В дальнейшем вы, вероятно, столкнетесь с проблемами при записи в файл /home/user/lid.txt , который, вероятно, помечен как home_t или что-то еще. Ваша служба может написать, например, apmd_tmp_t :

$ sesearch -A -s apmd_t -p write /etc/selinux/targeted/policy/policy.*
allow apmd_t apmd_tmp_t : file { ioctl read write create getattr setattr lock append unlink link rename open } ; 

Поэтому, если вы измените контекст вашего целевого файла на apmd_tmp_t , он должен работать для вас:

# chcon -t apmd_tmp_t /home/user/lid.txt

Это решение не является постоянным . Более правильным было бы определить свою собственную политику, охватывающую эти файлы и контексты, или переместить файлы в места, где контекст находится по умолчанию.Вам может помочь программа аудита ( ausearch -m AVC и audit2allow ). Если что-то не работает, дайте мне знать.

1
27.01.2020, 21:30

Теги

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