Oto fragment pliku / etc / passwd na zdalnym komputerze.
root:x:0:0:root:/root:/bin/bash
valid:x:0:0::/home/valid:/bin/rbash
Jak widzisz, poprawna jest alternatywną nazwą roota.
Mogę ssh do dowolnego konta za pomocą zwykłego polecenia ssh:
ssh root@remoteMachine
[...]
# whoami
root
# pwd
/root
i
ssh valid@remoteMachine
[...]
> whoami
<command unknown>
> pwd
<command unknown>
(wyłączyliśmy komendy za pomocą rbash)
Teraz jednak, gdy łączysz się z remoteMachine jako użytkownik „poprawny” z libssh, zdalnie whoami
zwraca root
, i pwd
zwraca /home/admin
. Wydaje się również, że powłoka, w której wszystko działa, to rbash (znaleziony za pomocą ps -ef | grep tototototo
)
Pytanie brzmi: czy jest to jakiś błąd w libssh, czy jest to błąd w ssh, który nie pojawi się w wierszu poleceń ssh?
$ uname -a Linux Debian6 2.6.32-5-686 #1 SMP Mon Jun 13 04:13:06 UTC i686 GNU/Linux $ ssh -v OpenSSH_5.5p1 Debian6, OpenSSL 0.9.8o 01 Jun 2010
Po stronie serwera: $ uname -a Linux #Company Name# 2.6.32-33-generic #72_Ubuntu SMP Fri Jun 29 21:08:37 UTC 2011 i686 GNU/Linux $ ssh -v OpenSSH_5.3p1 Debian_3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009
Nie ma katalogu /home/admin/.ssh. /root/.ssh nie zawiera skonfigurowanego pliku / katalogu.
/var/log/auth.log
: Accepted password for valid from 192.168.1.20 port 33513 ssh2 pass_unix (sshd:session) session opened for user valid by (uid=0) pass_unix (sshd:session) session closed for user valid
Teraz zmienia się tylko to, że kiedy używam linii poleceń ssh, zmienia się numer portu. (do czegoś w linii 57337)
ssh valid@remoteMachine 'echo $BASHOPTS; echo $BASH $HOME; whoami'
? Czy to się zmienia, jeśli przekażesz opcję -t
do ssh
? Co jeśli uruchomisz ssh interaktywnie i wpiszesz te polecenia? I z libssh? Co zawierają pliki startowe /home/admin
zawierać ( .profile
, ,bash_profile
, .bash_login
, .bashrc
)?
valid
iroot
są tym samym użytkownikiem. Jakim wariantem unix i implementacją ssh jest serwer? Czy możesz opublikować dzienniki serwera (z/var/log/auth.log
lub podobne)? Czy masz jakieś aliasy~/.ssh/config
? Czy sprawdziłeś, że nie jest wykonywane multipleksowanie?