доступ до systemctl заборонено, коли root


16

Коли я біжу

sudo systemctl disable avahi-daemon.socket

я отримав

Failed to execute operation: Access denied

Але це запускається як root, як можна відмовити в доступі? (CentOS 7)


Ви працюєте в контейнері, як Docker або LXC або LXD? Ви точно знаєте , чи перебуваєте ви в контейнері?
allquixotic

Я запускаю свіжу установку CentOS у VirtualBox. Чи вважається це контейнером?
шприц

Ні, VirtualBox - це не контейнер, це віртуальна машина. Вони принципово різні. Швидше за все, вам потрібно бігти, journalctl -xeщоб зрозуміти, чому це відбувається.
allquixotic

1
Зауважте, що це повідомлення про помилку ("Не вдалося виконати операцію: Доступ відмовлено") також може виникати при спробі отримати доступ до неіснуючої служби в режимі примусового виконання. У дозвольному режимі ви отримаєте "Не вдалося виконати операцію: Немає такого файлу чи каталогу".
danmichaelo

Відповіді:


23

Я також працюю над 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
spraff

Чи можете ви спробувати відключити режим примусового використання selinux? setenforce 0
Елуан Керілл-Евен

1
systemctl disable avahi-daemon.socketдосягає успіху після setenforce 0без systemctl daemon-reexec(і я розумію, зараз unmaskваша команда, а не моя :-)) Чи добре це робити і setenforce 1після?
спрф

@spraff Я не знаю, я новачок SELinux ха-ха. Імма згадка setenforce 0у моїй відповіді тоді.
Елуан Керілл-Евен

1
Будь ласка, не варто setenforce 0. Це погана практика у виробничих умовах. Будь ласка, використовуйте systemctl daemon-reexecзамість цього.
Юнес

10

У моєму випадку я щойно оновився, 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команди знову почали працювати.


1
Спасибі. Вирішив свою проблему, яку я мав після оновлення дистрибутива archlinux через тривалий час.
buergi

1
працював над Ubuntu 18.10 - Дякую!
Рой Шилкрот

1

Жодне рішення не працювало для мене. Виявилося, що в одному з рядків у моєму файлі .service був знак пропуску =. Я виявив це, подивившись / var / log / messages та побачив там помилку, яка була більш описовою. Тож заборонено доступ до доступу. Це не була насправді проблема безпеки.


3
Ви повинні надати більш детальну інформацію про те, як ви вирішите це питання. Наприклад, ви говорите про більш детальне повідомлення про помилку, але не вказуєте, що саме було повідомленням про помилки. Без цієї інформації це краще послужити коментарем, оскільки ця відповідь без цієї інформації є неповною.
Рамхаунд

який файл журналу показав повідомлення?
rogerdpack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.