Назад | Перейти на главную страницу

Невозможно войти на сервер RHEL6 от имени любого пользователя, кроме root - Говорит, что домашний каталог не может быть найден и в разрешениях оболочки отказано

Как указано в приведенном выше вопросе, у меня есть сервер RHEL 6, который предназначен для доступа по SSH, при этом root не может войти через SSH по своей конструкции. Когда я нахожусь на сервере локально, я могу войти в систему как root, но только как root. Если я попытаюсь войти в систему как пользователь, на экране быстро появится сообщение:

Last Login: Mon Aug 24 08:24:52 on tty1
no directory: /home/user1!
logging in with home="/"
login: no shell: Permission denied

Я не получаю оболочку, потому что в ней нет оболочки /.

Что меня действительно сбивает с толку, так это то, что домашний каталог действительно существует, содержит действительную оболочку и разрешен прямо из того, что я могу сказать (755). Это общее для всех пользователей, которые существовали и были созданы на этом экземпляре сервера. Кажется, не имеет значения, определяю ли я путь к домашнему каталогу, когда создаю пользователя, или позволяю по умолчанию взять на себя ответственность и назначить его автоматически.

Я не нашел ничего странного в журнале Secure log или журнале сообщений, только то, что пользователь успешно вошел в систему (что у них есть, но ничего не может сделать без оболочки)

Я надеюсь, что на данном этапе переустановка не потребуется, но на сервере почти нет данных, которые были бы потеряны, если бы это был единственный вариант.

Любая помощь будет очень признательна, так как я искал и пробовал неделю безуспешно.

Редактировать:

Я использовал useradd user1 команда для первоначального добавления пользователя, когда это привело к проблемам выше, я использовал

mkdir /home/user1 && useradd user1 -d /home/user1 && chown -R user:user1 /home/user

Когда я запускаю cat /etc/passwd | grep user1 команду я получаю:

user1:x:513:517::/home/user1:bin/bash

и когда я запускаю ls -l /home введите команду для этого пользователя:

drwxr-xr-x. 4 user1 user1 4096 Aug 19 17:03 user1

Мне удалось решить проблему, выполнив команду

for p in $(rpm -qa); do rpm --setperms $p; done

и перезапуск сервера. После перезапуска я не только смог войти в систему как любой созданный пользователь, но и снова смог использовать графический интерфейс. Это указывает на поврежденные права доступа к файлам где-то в системе. Как они испортились, я не знаю, но теперь все работает.

В useradd должен создать домашний каталог, когда передан правильный параметр, и вам не нужно (или не нужно) создавать их вручную. Я предлагаю вам выполнить следующее (в указанном порядке), чтобы правильно удалить и воссоздать вашего пользователя.

userdel -f -r user1
useradd -m user1

ПРИМЕЧАНИЕ: вам не нужно проходить -d вариант, поскольку по умолчанию будет /home/user1 в таком случае.

Единственная проблема, которую я вижу в вашей настройке, - это ваш файл passwd. Попробуйте изменить user1:x:513:517::/home/user1:bin/bash к user1:x:513:517::/home/user1:/bin/bash.

У меня была такая же проблема на машине CentOS 6. Это была проблема с файлами в / home с неверной маркировкой контекстов безопасности SELinux. Один из комментаторов выше, Майкл Хэмптон, сказал, что проверка / var / log / audit / audit log - это правильно. Я последовал его совету и заметил, что здесь возникла проблема с SELinux. Решение, которое исправило это для меня, было:

sudo restorecon -Rv /home

Это рекурсивно восстановит метки контекста безопасности по умолчанию для всех файлов в домашнем каталоге. После этого доступ по ssh по публичному ключу был восстановлен.