Коли я біжу
sudo systemctl disable avahi-daemon.socket
я отримав
Failed to execute operation: Access denied
Але це запускається як root, як можна відмовити в доступі? (CentOS 7)
journalctl -xe
щоб зрозуміти, чому це відбувається.
Коли я біжу
sudo systemctl disable avahi-daemon.socket
я отримав
Failed to execute operation: Access denied
Але це запускається як root, як можна відмовити в доступі? (CentOS 7)
journalctl -xe
щоб зрозуміти, чому це відбувається.
Відповіді:
Я також працюю над CentOS 7, і у мене був подібний випуск:
# systemctl unmask tmp.mount
Failed to execute operation: Access denied
Заперечення пов'язане з SELinux. Це може бути у випадку, якщо ви використовуєте SELinux в enforcing
режимі:
# getenforce
Enforcing
У моєму випадку systemctl
помилка викликала USER_AVC
відмову у файлі журналу SELinux /var/log/audit/audit.log
:
type=USER_AVC msg=audit(1475497680.859:2656): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc: denied { enable } for auid=0 uid=0 gid=0 path="/dev/null" cmdline="systemctl unmask tmp.mount" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:null_device_t:s0 tclass=service exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
У цій статті зазначено, що це пов’язано з помилкою в systemd та забезпечує вирішення проблеми:
systemctl daemon-reexec
Якщо вищезгадане не спрацювало, ви можете встановити для режиму SELinux permissive
:
setenforce 0
і це має добре працювати. Однак це 2-е рішення має наслідки для безпеки.
Removed symlink
а згодом systemctl disable avahi-daemon.socket
виходить з ладу, як і раніше, створюючи ту саму лініюaudit.log
setenforce 0
systemctl disable avahi-daemon.socket
досягає успіху після setenforce 0
без systemctl daemon-reexec
(і я розумію, зараз unmask
ваша команда, а не моя :-)) Чи добре це робити і setenforce 1
після?
setenforce 0
у моїй відповіді тоді.
setenforce 0
. Це погана практика у виробничих умовах. Будь ласка, використовуйте systemctl daemon-reexec
замість цього.
У моєму випадку я щойно оновився, systemd
і будь-яка systemctl
команда провалилась:
# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied
Однак, згідно з даними сторінки init
, ви можете зробити те ж саме, відправивши SIGTERM
демон, який працює як PID 1, який працював:
kill -TERM 1
Це перезавантажило демон, після чого всі systemctl
команди знову почали працювати.
Жодне рішення не працювало для мене. Виявилося, що в одному з рядків у моєму файлі .service був знак пропуску =. Я виявив це, подивившись / var / log / messages та побачив там помилку, яка була більш описовою. Тож заборонено доступ до доступу. Це не була насправді проблема безпеки.