Мне удалось сбросить права доступа к sudo без перезагрузки в режиме восстановления! Вот что я сделал:
К счастью, systemd по-прежнему позволял мне перезапускать демоны, потому что он аутентифицировался через polkit.
Итак, я создал юнит-файл в своем домашнем каталоге, содержащий:
/home/crlsmdrn/sudo -reset.service:
[Unit]
Description=reset sudo
[Service]
Type=oneshot
ExecStart=/home/crlsmdrn/sudo-reset.sh
[Install]
WantedBy=multi-user.target
Затем я создал файл с именем sudo -reset.sh.
/home/crlsmdrn/sudo -reset.sh:
#!/bin/sh
chmod 4755 /usr/bin/sudo
Тогда:
[crlsmdrn@server ~]$ chmod +x /home/crlsmdrn/sudo-reset.sh
Затем следует включить и запустить службу:
[crlsmdrn@server ~]$ systemctl enable /home/crlsmdrn/sudo-reset.service
[crlsmdrn@server ~]$ systemctl start sudo-reset-service
[crlsmdrn@server ~]$ sudo
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s]
[<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file...
Затем я смог выполнить sudo -s, а затем посмотреть, какие разрешения были нарушены, просмотрев историю bash; похоже, что только /usr/bin был поврежден, поэтому я запустил rpm --setperms -a, который, похоже, исправил разрешения.
После этого не забудьте отключить службу.
Мораль этой истории здесь :никогда не запускайте chown -R root :root в /usr/bin, не ожидая, что все будет работать так же.
Если кому-то интересно решение, вам нужно будет добавить следующие параметры в конфигурацию ssh. Это называется мультиплексированием ssh и сохраняет соединения ssh для повторного использования :
.Host *
Controlmaster auto
Controlpath /tmp/ssh-%r@%h:%p
ControlPersist yes
Итак, теперь, когда вы отключаетесь от своего сеанса screen на хосте, на котором работает ansible, он продолжит работу и повторно использует существующие ssh-соединения, если они были установлены до вашего отключения.