Вопрос или проблема
Вот шаги, которые я выполнил:
- Подключился по SSH к машине с CentOS 6.x, которая находится в локальной сети, с помощью команды
- Ввел пароль пользователя root
- Я смог успешно войти в систему, но я получаю только терминал bash вместо терминала пользователя root.
Последний вход: Ср, 25 апр. 2018 18:04:32 от 192.168.0.27
-bash: /root/.bashrc: Доступ запрещен
-bash-4.1#
Я пытаюсь понять, в чем проблема.
Дополнительная информация:
- Я могу войти в любую другую машину в локальной сети без проблем.
- Также из терминала bash я могу переключиться на учетную запись суперпользователя с помощью команды “su”.
Несколько команд, выполненных на удаленной машине, к которой я пытаюсь войти, и их вывод.
-bash-4.1# whoami
root
-bash-4.1# stat /root/.bashrc
Файл: `/root/.bashrc'
Размер: 221 Блоков: 8 IO Block: 4096 обычный файл
Устройство: 802h/2050d Идентификатор: 32510289 Ссылки: 1
Доступ: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Доступ: 2018-04-26 10:09:04.206129757 +0530
Изменено: 2018-04-25 18:04:59.354903860 +0530
Изменен: 2018-04-25 18:04:59.389903855 +0530
-bash-4.1# file /root/.bashrc
/root/.bashrc: ASCII текст
-bash-4.1# lsattr /root/.bashrc
-------------e- /root/.bashrc
Содержимое bashrc:
#/bin/bash -x
# Пользовательские алиасы и функции
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Подключить глобальные определения
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PATH="/opt/postgres/postgresql:$PATH"
Может кто-то помочь мне понять это?
-bash: /root/.bashrc: Доступ запрещен
-
Проверьте права доступа к файлу
.bashrc
(что вы уже сделали). -
Проверьте права доступа ко всем файлам, которые вы подключаете (например,
/etc/bashrc
). -
Проверьте права доступа ко всем файлам, которые включает ваш глобальный
/etc/bashrc
. -
Проверьте права доступа к вашей папке
/etc
(см. этот пост). Например:chmod 0755 /etc # выполните как root
-
Рассмотрите возможность добавления
-vvv
при запускеssh
для более детального вывода.
Отладка
Для дальнейшей отладки проблемы вы можете активировать трассировку (xtrace
) в вашей оболочке. Вот 3 метода:
-
Использование shebang.
Добавьте следующую строку как первую в ваш скрипт:
#!/bin/bash -x
-
Добавьте строку
set -x
в самом начале вашего файла стартового скрипта. -
Запустите
bash
с-x
вместе с командойssh
, например:\ssh -vvv [email protected] -t bash -x
После этого попробуйте воспроизвести проблему снова, и тогда вы сможете найти проблемную строку.
Ответ или решение
Проблема, с которой вы столкнулись при SSH-подключении к удаленной машине на базе Linux, связана с ошибкой доступа к файлу .bashrc
для пользователя root. Ошибка -bash: /root/.bashrc: Permission denied
указывает на то, что существует ограничение на чтение или выполнение этого файла.
Анализ проблемы
Как вы уже заметили, при выполнении команды stat /root/.bashrc
, Вы получили следующую информацию о правам доступа:
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Это означает, что файл доступен только на чтение для пользователей, отличных от владельца (в данном случае root). Однако .bashrc
должен быть исполняемым для пользователя root, чтобы во время входа он мог загружать свою конфигурацию.
Возможное решение
-
Изменение прав доступа к файлу
.bashrc
: Пожалуйста, выполните команду следующего вида, чтобы изменить права доступа и сделать файл доступным для чтения и выполнения:chmod 0755 /root/.bashrc
Это обеспечит права на чтение, запись и выполнение для владельца (root), а также права на чтение и выполнение для других пользователей.
-
Проверка прав других файлов: После изменения прав на
.bashrc
, проверьте права доступа к файлу/etc/bashrc
, который вы подключаете в.bashrc
. Аналогично выполните следующую команду:ls -l /etc/bashrc
Убедитесь, что он имеет подходящие права. Если необходимо, можно задать права с помощью:
chmod 0644 /etc/bashrc
-
Проверка прав каталога
/etc
: Убедитесь, что каталог/etc
также имеет правильные права доступа. Выполните:ls -ld /etc
Если права отличаются от
drwxr-xr-x
, измените их:chmod 0755 /etc
Отладка
Для более глубокого анализа проблемы используйте режим трейсинга (с помощью -x
):
-
Добавьте следующую строку в начало вашего файла
.bashrc
:#!/bin/bash -x
-
Или можете временно запустить оболочку с отладкой:
ssh -t -vvv [email protected] bash -x
Заключение
После выполнения указанных шагов попробуйте снова подключиться через SSH. Если ошибка сохраняется, сообщите о поведении системы и любых дополнительных сообщениях об ошибках, которые могут помочь в дальнейшем устранении проблемы.