Принудительное использование sudo вместо запуска команд с терминала от имени root

Вы можете указать параметры вывода -oдля lsblk, в этом случае STATE— это то, что вам нужно.

sudo lsblk -a -o NAME,MAJ:MIN,PARTTYPE,STATE
NAME   MAJ:MIN PARTTYPE                             STATE
sda      8:0                                        running
├─sda1   8:1   21686148-6449-6e6f-744e-656564454649 
├─sda2   8:2   0fc63daf-8483-4772-8e79-3d69d8477de4 
├─sda3   8:3   0fc63daf-8483-4772-8e79-3d69d8477de4 
└─sda4   8:4   0fc63daf-8483-4772-8e79-3d69d8477de4 

lsblk --helpпредоставит вам больше возможностей для включения, если это необходимо.

1
01.11.2021, 10:07
2 ответа

Это невозможно -пожалуйста, дочитайте до конца. Если у пользователя есть полный доступ к sudo, он всегда может использовать sudo -i -u root, sudo /usr/bin/bash, sudo /usr/bin/{ANY_OTHER_SHELL}или написать свой собственный скрипт/программу, которая будет использовать несколько команд для получения полного доступа к оболочке. Это тривиально. Они также могут отменить любые изменения конфигурации, которые вы сделали и т. д. Вы можете немного скрыть это, изменив корневую оболочку по умолчанию на /sbin/nologin.

[vagrant@eurolinux8-vbuilder ~]$ sudo chsh root -s  /sbin/nologin 
Changing shell for root.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[vagrant@eurolinux8-vbuilder ~]$ sudo -i
This account is currently not available.

Но любой опытный пользователь может использовать «голый» вызов bash с помощью sudo:

[vagrant@eurolinux8-vbuilder ~]$ sudo /usr/bin/bash
[root@eurolinux8-vbuilder vagrant]# 

Таким образом, скрыть доступ с помощью /usr/sbin/nologinне очень эффективно.

Вы также можете добавить скрипт в bash или любую другую конфигурацию оболочки, чтобы проверить, является ли пользователь root, который будет печатать сообщения типа Please use sudoи выходить из системы. Но опять же, опытные пользователи смогут использовать такие вещи, как --norcи --noprofile, или указать свою собственную конфигурацию для bash. Подводя итог -, насколько мне известно, это невозможно. Я даже проверяю, есть ли исключительные случаи [например, с PAM] при использовании пользователя, который обычно является только демоном (, например httpd ). Но с установленным httpdвы также можете использовать sudo -u apache /usr/bin/bash. Возможно, есть какое-то решение на основе PAM, но с помощью google -fu я не смог их найти. Это также сложно, потому что вы заинтересованы в отключении интерактивного доступа. В другом случае (отключив доступ к руту полностью ), вы заблокируете систему, и вам придется исправлять это в режиме восстановления.

Но есть решение, которое может вас больше заинтересовать -ведение журнала терминала.

Вы хотите знать историю терминала, а не ограничивать доступ полностью.В то же время вы должны знать, что пользователи с полным доступом администратора могут удалить свой журнал -, поэтому на всякий случай вам следует использовать rsyslog или другое решение для ведения журнала, чтобы поместить журналы на другой сервер.

Поскольку вы используете дистрибутив на основе RHEL -, вы можете прочитать следующее.https://www.redhat.com/sysadmin/terminal-logging

1
01.11.2021, 12:15

Отменить изменения в PAM. Они вам не нужны.

Вместо этого используйте visudoдля редактирования файла /etc/sudoersи закомментируйте строки, начинающиеся с %wheelи/или %sudo. Это не позволит пользователям, которые находятся в этих группах, использовать sudo.

Вы должны добавить строку для себя, прежде чем записывать изменения. В противном случае убедитесь, что у вас есть рабочий пароль root (для suбезsudo)или какой-либо другой способ использования sudoдля получения привилегий root!

0
01.11.2021, 11:23

Теги

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