SSH на удалённую машину с Linux выдает предупреждение -bash: /root/.bashrc: доступ запрещён.

Вопрос или проблема

Вот шаги, которые я выполнил:

  1. Подключился по SSH к машине с CentOS 6.x, которая находится в локальной сети, с помощью команды

ssh [email protected]

  1. Ввел пароль пользователя root
  2. Я смог успешно войти в систему, но я получаю только терминал bash вместо терминала пользователя root.

Последний вход: Ср, 25 апр. 2018 18:04:32 от 192.168.0.27

-bash: /root/.bashrc: Доступ запрещен

-bash-4.1#

Я пытаюсь понять, в чем проблема.

Дополнительная информация:

  1. Я могу войти в любую другую машину в локальной сети без проблем.
  2. Также из терминала 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 метода:

  1. Использование shebang.

    Добавьте следующую строку как первую в ваш скрипт:

     #!/bin/bash -x
    
  2. Добавьте строку set -x в самом начале вашего файла стартового скрипта.

  3. Запустите 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, чтобы во время входа он мог загружать свою конфигурацию.

Возможное решение

  1. Изменение прав доступа к файлу .bashrc: Пожалуйста, выполните команду следующего вида, чтобы изменить права доступа и сделать файл доступным для чтения и выполнения:

    chmod 0755 /root/.bashrc

    Это обеспечит права на чтение, запись и выполнение для владельца (root), а также права на чтение и выполнение для других пользователей.

  2. Проверка прав других файлов: После изменения прав на .bashrc, проверьте права доступа к файлу /etc/bashrc, который вы подключаете в .bashrc. Аналогично выполните следующую команду:

    ls -l /etc/bashrc

    Убедитесь, что он имеет подходящие права. Если необходимо, можно задать права с помощью:

    chmod 0644 /etc/bashrc
  3. Проверка прав каталога /etc: Убедитесь, что каталог /etc также имеет правильные права доступа. Выполните:

    ls -ld /etc

    Если права отличаются от drwxr-xr-x, измените их:

    chmod 0755 /etc

Отладка

Для более глубокого анализа проблемы используйте режим трейсинга (с помощью -x):

  • Добавьте следующую строку в начало вашего файла .bashrc:

    #!/bin/bash -x
  • Или можете временно запустить оболочку с отладкой:

    ssh -t -vvv [email protected] bash -x

Заключение

После выполнения указанных шагов попробуйте снова подключиться через SSH. Если ошибка сохраняется, сообщите о поведении системы и любых дополнительных сообщениях об ошибках, которые могут помочь в дальнейшем устранении проблемы.

Оцените материал
Добавить комментарий

Капча загружается...