LINUX.ORG.RU

Ошибка домашней папки пользователя

 , ,


0

1

Всем доброго дня! Проблема следующая - на сервере есть sh среда. Под sh root пользователь работает без замечаний. Потребовалось поставить пакет с bash (требует клиентское ПО). После с клиентской ПК выполняю:

ssh root@192.168.1.1 bash

Коннектиться, ввожу пароль и что вижу :

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

Выполняю pwd :

error retrieving current directory: getcwd: cannot access parent directories: Illegal seek.

Далее я решил сменить оболочку для root с sh на bash, проблема сохранилась.

cat /etc/passwd | grep root

выдает:

root:x:0:0:root:/home/root:/bin/bash

echo $HOME выдает

/home/root

при этом выполняю cd /home/root - выполняет и перестает уже ругаться. В чем дело ? почему при инициализации в bash не знает о своей домашней директории?

P.S обнаружил аналогичное поведение при подключении :

ssh root@192.168.1.1 sh


Последнее исправление: noweapon (всего исправлений: 4)

/home/root

Это где такая дичь? У всех рутовый хомяк находится в /root. Сам сломал, или кто помог?

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Прошу отвечать развернуто. Эта проблема для любого пользователя которого я создавал. что не так?

noweapon
() автор топика
Ответ на: комментарий от noweapon

Эта проблема для любого пользователя которого я создавал.

Прозрачно намекну что рута ты не создавал.

mord0d ★★★★★
()
Ответ на: комментарий от bigbit

я ничего не делал, это стандартная сборка Linux angstrom. при разворачивании любого их образа - root без пароля и его домашняя папка /home/root. Скажите пожалуйста в чем суть проблемы? как должно быть и что сделать? Кроме того если я даже нового пользователя создам - проблема же самая.

noweapon
() автор топика
Ответ на: комментарий от noweapon

Дело в том, что у них /root в /home, а должен быть в корне. Хз является ли это причиной твоей проблемы, но во-первых, может да, во-вторых, это еще и может вызвать непредсказуемые проблемы с другими программами.

Dog ★★★
()
Ответ на: комментарий от Dog

а, в этом случае ошибок нет и все корректно. Проблема именно когда я вызываю любую команду в ssh подключении (узнал позже путем эксперимента), например <ssh root@192.168.1.1 pwd>

noweapon
() автор топика
Ответ на: комментарий от noweapon

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

Dog ★★★
()
Ответ на: комментарий от noweapon

Тогда давай разбираться. Какой шелл в системе по умолчанию? Ты говоришь sh, но ведь не имеется же ввиду оригинальный sh, который шелл Борна (не Борн-Эгейн)? Или имеется?

Dog ★★★
()
Ответ на: комментарий от Legioner

Просто предположение. Может, там сам sshd из /home запущен. Там дистр довольно специфический. Факт то, что такой директории по мнению sshd нет (No such file or directory).

bigbit ★★★★★
()
Ответ на: комментарий от noweapon

Ну суть проблемы в том, что ssh запускает bash в каталоге, у которого нет родителя. Такое может быть, если ssh запустился, взял ссылку на /home, после этого /home удалили с диска, но он как бы в памяти остался висеть, и bash запускается с текущей директорией, установленной в несуществующем на диске каталоге, о чём он и жалуется, пытаясь понять, что происходит вообще. Но какая последовательность событий привела к этому, я не очень представляю и зачем вообще ssh так делает - я тоже не очень представляю.

Возможно вместо удаления был примонтирован другой раздел сверху на /home.

В общем перезапуск sshd может помочь.

Хотя почему оно не работает с командой и работает просто с сессией - тоже не понимаю.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от Legioner

Фс чистая , только после накатывания , манипуляций с юзерами не проводились . Проблема с Любой командой , не только bash. . Погуглил - называется remotecommand . Была введена с версии ssh 7.6 . Может sshd просто некорректно работает ? https://unix.stackexchange.com/questions/354594/remote-command-in-ssh-config-file

noweapon
() автор топика

Интересная у вас игра. Не удержался поиграть.

Взял тут https://dominion.thruhere.net/angstrom/nightlies/v2013.06/qemuarm/ rootfs и zImage, запустил в ArchLinux так:

qemu-system-arm -kernel 'zImage' -m 64 -M versatilepb -append "root=/dev/sda" -hda 'Angstrom-systemd-image-eglibc-ipk-v2013.06-qemuarm.rootfs.ext3' -nic user,hostfwd=tcp::5022-:22
Действительно /home/root. Но не получается воспроизвести ваш случай.
$ ssh root@localhost -p 5022 pwd
/home/root
отрабатывает молча.

Так-то должно быть как-то связано с несуществующим каталогом. Но не видно, прям обидно.

-----------------

Далее я решил сменить оболочку для root с sh на bash

До установки bash /bin/sh там симлинк на /bin/busybox, после установки opkg install bash тот же /bin/sh стал симлинком на /bin/bash. Т.е. у root она и так уже bash.

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 1)
Ответ на: комментарий от Legioner
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Inappropriate ioctl for device
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
bin
boot
cu
dev
develop
etc
home
lib
noweapon
() автор топика
Ответ на: комментарий от Toxo2

У меня до установки bash

stat /bin/sh
File: '/bin/sh' -> '/bin/busybox.nosuid'

При этом все оказывается нормально работает, то есть выполняются

$ ssh root@192.168.1.1 pwd
/home/root

Далее стоит только поставить bash и уже проблема :

ssh root@192.168.1.1  pwd
Password: 
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Inappropriate ioctl for device
pwd: error retrieving current directory: getcwd: cannot access parent directories: Success
pwd: error retrieving current directory: getcwd: cannot access parent directories: Bad address

При этом действительно стало:

  stat /bin/sh
  File: '/bin/sh' -> '/bin/bash'

И что ему не нравится?

noweapon
() автор топика
Ответ на: комментарий от noweapon

Меня бы, наверное, смущало такое соседство слов «busybox.nosuid» и «cannot access parent directories»

В версии Angstrom-systemd-image-eglibc-ipk-v2013.06-qemuarm вообще нет такого busybox.nosuid

Внутри у него вот такие версии:

root@qemuarm:~# ssh -V       
OpenSSH_6.1p1, OpenSSL 1.0.1e 11 Feb 2013
root@qemuarm:~# bash --version
GNU bash, version 4.2.10(1)-release (arm-angstrom-linux-gnueabi)

Может скажете, если не секрет, точную версию своего Angstrom чтобы попытаться воспроизвести? cat /etc/version

А ещё лучше, наверное, найти все-таки разработчиков Angstrom и с ними поговорить.

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 3)
Ответ на: комментарий от noweapon

`/proc` есть же? Там можно посмотреть контекст запуска всех участвующих процессов (sshd мастер-процесс, sshd экземплр коннекта, запущеный в сессии bash).

`ls -al /proc/12345/cwd`

firkax ★★★★★
()
Ответ на: комментарий от Toxo2

И, кстати да - как костыль: может быть если считать, что pwd в вашем busybox.nosuid сломан (или ssh ?, или bash ?), тогда сразу и cd указывать, чтоб не ругался?

Т.е. типа такого:

$ssh root@localhost -p 5022 "cd /; uname -a; pwd"
root@localhost's password: 
Linux qemuarm 3.8.11-yocto-standard #1 PREEMPT Sun Jan 26 20:31:35 CET 2014 armv5tejl GNU/Linux
/

Toxo2 ★★★★
()
Ответ на: комментарий от Toxo2
@ssh root@192.168.1.244 -p 22 "cd /; uname -a; pwd"

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Inappropriate ioctl for device
chdir: error retrieving current directory: getcwd: cannot access parent directories: Success
Linux RiM09903 4.1.13-g8dc6617 #3 PREEMPT Fri Jun 11 15:10:07 +07 2021 armv7l GNU/Linux
/
noweapon
() автор топика
Ответ на: комментарий от firkax
@:~# ps aux | grep ssh
root     28774  0.2  0.6   6068  3200 ?        Ss   15:43   0:00 sshd: root@pts/0
root     29115  0.7  0.4   4180  2524 pts/0    S+   15:44   0:00 ssh root@192.168.1.244
root     29116  0.4  0.6   6068  3252 ?        Ss   15:44   0:00 sshd: root@pts/1
root     29245  0.0  0.2   2568  1116 pts/1    S+   15:45   0:00 grep ssh
@:~# ls -al /proc/28774/cwd
lrwxrwxrwx 1 root root 0 Oct 22 15:45 /proc/28774/cwd -> /
@:~# ls -al /proc/29115/cwd
lrwxrwxrwx 1 root root 0 Oct 22 15:46 /proc/29115/cwd -> /home/root
@:~# ls -al /proc/29116/cwd
lrwxrwxrwx 1 root root 0 Oct 22 15:46 /proc/29116/cwd -> /
noweapon
() автор топика
Ответ на: комментарий от noweapon

Спасибо. Пока даже запустить не получается эту версию в QEMU.

Тыкал тут разные версии - у некоторых установка bash еле-еле влазит на /.

Проверьте на всякий случай свободное место у себя на корне.

Правда у меня получается, что если влазит то нормально работает, а если не влазит, то даже sshd перестает запускаться.

Toxo2 ★★★★
()
Ответ на: комментарий от Toxo2

запустить не получается эту версию

Запустил qemux86

Не могу воспроизвести, хоть тресни. Странно, что у вас версия v2015.06, а ядро уже 4.1. Оно же только вышло в июне 2015. Крайне маловероятно, что сразу же попало в релиз дистрибутива.

С другой стороны - я и ядро не родное 3.19, а 4.1 из релиза следующего года подсовывал к 2015.06. Всё равно - запускается и работает в нормальном режиме.

В общем - я всё. Сдаюсь. Теоретик из меня слабый, а на практике пощупать ошибку не получилось.

Надеюсь вам помогут местные сильные теоретики.

Toxo2 ★★★★
()
Ответ на: комментарий от Toxo2

спасибо за помощь! Проблему решил путем сборки bash версии 5.0!

noweapon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.