Вопрос или проблема
У меня есть Red Hat Enterprise Linux Server release 7.7.
Создан локальный пользователь. Файл sudoers настроен с помощью ALL = (ALL) ALL
для этого пользователя. Пользователь может выполнять любую команду, например: sudo ls, sudo cat, sudo wherever.
Однако следующая команда не работает: sudo su -
Она выдает сообщение об ошибке:
Последний вход: Вт Июн 15 10:21:52 -03 2021 на pts/1
su: не удалось выполнить /bin/bash: Доступ запрещен
Я уже проверил разрешения файлов и директорий.
[root@hostname ~]$ ls -l /bin/bash
-rwxr-xr-x 1 root root 964592 Мар 12 2019 /bin/bash
[root@hostname ~]$ ls -ld /usr/lib*
drwxr-xr-x 40 root root 12288 Мар 26 2020 /usr/lib
drwxr-xr-x 59 root root 36864 Май 11 2020 /usr/lib64
drwxr-xr-x 24 root root 4096 Мар 24 2020 /usr/libexec
[root@hostname ~]$ ls -ld /tmp/
drwxrwxrwt 75 root root 12288 Июн 15 09:34 /tmp/
[root@hostname ~]$ stat /
Файл: ‘/’
Размер: 4096 Блоки: 8 IO блок: 4096 директория
Устройство: fd01h/64769d Идент. узла: 2 Ссылки: 22
Доступ: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Доступ: 2021-06-15 09:30:45.000000000 -0300
Изменено: 2020-03-27 17:56:07.000000000 -0300
Изменено: 2021-06-15 09:30:44.000000000 -0300
Создан: -
Какие идеи?
SELinux предотвращает выполнение программ; проверьте с помощью sestatus
, установлен ли режим на enforcing.
Вы можете протестировать это, временно отключив его (setenforce 0) и посмотрев, будет ли теперь работать sudo. Не рекомендуется.
Вместо этого измените значение по умолчанию noexec в файле sudoers:
Убедитесь, что строка Defaults noexec удалена или закомментирована в файле /etc/sudoers
.
Когда опция noexec включена, только команды, указанные в “secure_path” (в файле /etc/sudoers), могут быть выполнены.
Ответ или решение
У вас возникла проблема с выполнением команды sudo su -
, которая возвращает сообщение об ошибке: su: failed to execute /bin/bash: Permission denied
. Давайте рассмотрим это подробнее и предложим возможные решения.
1. Контекст проблемы
Вы используете сервер Red Hat Enterprise Linux 7.7, и пользователь с правами sudo
может выполнять команды по типу sudo ls
и sudo cat
. Однако, проблема возникает при попытке использовать sudo su -
. Это может указывать на ограничение, связанное с конфигурацией sudo
или с политиками безопасности, такими как SELinux.
2. Проверка прав на файл /bin/bash
Ваши проверки прав на файл /bin/bash
показывают, что у него корректные права:
-rwxr-xr-x 1 root root 964592 Mar 12 2019 /bin/bash
Это указывает на то, что файл доступен для исполнения.
3. SELinux
Одной из наиболее распространенных причин возникновения ошибки "Permission denied" может быть активная политика SELinux, которая ограничивает выполнение определенных команд:
-
Проверьте статус SELinux, выполнив команду:
sestatus
Если ваша система находится в режиме
enforcing
, это может быть источником проблемы. -
Для временного тестирования отключите SELinux командой:
setenforce 0
После этого попробуйте снова выполнить
sudo su -
. Если команда сработает, это означает, что проблема связана с SELinux.
4. Параметры sudoers
Если вы не хотите отключать SELinux, рассмотрите возможность изменения файла конфигурации /etc/sudoers
. Убедитесь, что в нем нет параметра Defaults noexec
, который может ограничивать выполнение некоторых команд:
-
Откройте файл для редактирования (используя
visudo
для безопасности):visudo
-
Найдите строку, содержащую
Defaults noexec
, и закомментируйте её или удалите.
5. Другие возможные причины
Если ни одно из вышеуказанных решений не помогло, стоит рассмотреть следующие возможности:
- Проблемы с оболочкой: Убедитесь, что база данных
ld.so.cache
корректна, выполнивldconfig
от имени пользователя с правамиroot
. - Логи: Проверьте логи системы (например, в
/var/log/messages
или/var/log/audit/audit.log
) на предмет сообщений, связанных с SELinux или правами доступа.
Заключение
Проблема с выполнением sudo su -
на вашем сервере Red Hat Enterprise Linux 7.7 может быть вызвана несколькими факторами, включая настройки SELinux и параметры конфигурации файла sudoers
. Следуя данным рекомендациям, вы сможете определить и устранить причины возникновения ошибки. Если проблема будет сохраняться, рекомендуется дополнительно обращаться к документации или поддержке сообществ, связанным с RHEL.