rssh_chroot_helper[]: chroot() failed, 1: Operation not permitted

 ( plt | 2017. szeptember 14., csütörtök - 9:39 )

8.9-es debiánra konfiguráltam egy felhasználót, rssh shellel. Az /etc/rssh.conf fájlban beállítottam a chroot mappát is a számára. Az mkchroot.sh-val inicializáltam is a mappáját, azonban csatlakozáskor mégsem képes a chroot-ot lefuttatni. A hibaüzenet nem nagyon bőbeszédű:
"rssh_chroot_helper[3289]: chroot() failed, 1: Operation not permitted"
Ennél többet nem tudtam kinyerni sehonnan.

Gondolom, valami hiányzik a saját mappájából, de nem tudom, mi.
Próbáltam, hogy a /lib mappa tartalmát egy az egyben bemásolom, de úgy is ugyanzet a hibát adja.
Egy régebbi ubuntus rendszeren gond nélkül használom az rssh-t. Egyetlen, számomra látványos különbség a két rendszer között, hogy ubuntun a /dev/log egy socket fájl, míg debian alatt egy symlink a /run/systemd/journal/dev-log fájlra, de a chroot mappájában nincs /run/ mappa. Persze, ha bemásolom, az sem segít.
Tudom valahogyan tesztelni, hogy milyen fájlokhoz akar hozzáférni az rssh_chroot_helper?
Valaki debian 8 alatt használ chrootolt rssh-t, és tudna küldeni egy filelistát, hogy mire van szükség?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

miert bonyolitod?
groupmatch alapjan forcecommand internal_sftp + chroot ?

Ez lenne az egyszerűbb?

Megpróbáltam ezt is, de nekem scp, sftp és rsync hozzáférésre van szükségem, amit így nem tudtam megcsinálni. Egyelőre kettőből két módszer nem megy.

Valami ilyesmit kellene nyomozni:

strace -f -p <pidof-sshd> 2>debug.txt

Köszönöm, ebből már több látszik:

[pid  6044] chroot("/var/run/sshd")     = 0
[pid  6044] chdir("/")                  = 0
[pid  6044] setgroups(1, [65534])       = 0
[pid  6044] getuid()                    = 0
[pid  6044] getgid()                    = 0
[pid  6044] setresgid(65534, 65534, 65534) = 0
[pid  6044] setresuid(107, 107, 107)    = 0
[pid  6044] setgid(0)                   = -1 EPERM (Operation not permitted)
[pid  6044] setresgid(-1, 0, -1)        = -1 EPERM (Operation not permitted)
[pid  6044] getgid()                    = 65534
[pid  6044] getegid()                   = 65534
[pid  6044] setuid(0)                   = -1 EPERM (Operation not permitted)
[pid  6044] setresuid(-1, 0, -1)        = -1 EPERM (Operation not permitted)

A /var/run egy symlink a /run-ra.
Létrehoztam a /var/run symlinket és a /run/sshd mappát is a mappán belül, de ez sem segített.
Számomra nem derül ki, milyen jogot nem tud beállítani, és miért.

Biztos, hogy ez a vége? Megvolt az exec("rssh") ?

Itt vannak az rssh-s sorok

[pid  6043] stat("/usr/bin/rssh", {st_mode=S_IFREG|0755, st_size=30752, ...}) = 0
[pid  6046] execve("/usr/bin/rssh", ["rssh", "-c", "scp -f /alma"], [/* 10 vars */]) = 0
[pid  6046] open("/etc/rssh.conf", O_RDONLY) = 3
[pid  6046] read(3, "# This is the default rssh confi"..., 4096) = 2002
[pid  6046] sendto(4, "<31>Sep 14 10:40:31 rssh[6046]: "..., 64, MSG_NOSIGNAL, NULL, 0) = 64
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 52, MSG_NOSIGNAL, NULL, 0) = 52
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 64, MSG_NOSIGNAL, NULL, 0) = 64
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 61, MSG_NOSIGNAL, NULL, 0) = 61
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 58, MSG_NOSIGNAL, NULL, 0) = 58
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 56, MSG_NOSIGNAL, NULL, 0) = 56
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 57, MSG_NOSIGNAL, NULL, 0) = 57
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 58, MSG_NOSIGNAL, NULL, 0) = 58
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 58, MSG_NOSIGNAL, NULL, 0) = 58
[pid  6046] sendto(4, "<15>Sep 14 10:40:31 rssh[6046]: "..., 50, MSG_NOSIGNAL, NULL, 0) = 50
[pid  6046] sendto(4, "<14>Sep 14 10:40:31 rssh[6046]: "..., 98, MSG_NOSIGNAL, NULL, 0) = 98
[pid  6046] execve("/usr/lib/rssh/rssh_chroot_helper", ["/usr/lib/rssh/rssh_chroot_helper", "1", "scp -f /alma"], [/* 10 vars */]) = 0
[pid  6046] open("/etc/rssh.conf", O_RDONLY) = 3
[pid  6046] read(3, "# This is the default rssh confi"..., 4096) = 2002
[pid  6046] sendto(3, "<14>Sep 14 10:40:31 rssh_chroot_"..., 75, MSG_NOSIGNAL, NULL, 0) = 75
[pid  6046] sendto(3, "<11>Sep 14 10:40:31 rssh_chroot_"..., 89, MSG_NOSIGNAL, NULL, 0) = 89

Ezek alapján megvolt, bár ez a hibaüzenetből is gyanítható, mivel az rssh_chroot_helper adja a hibát.

Az a chroot("/var/run/sshd"), az az sshd internal chrootja, és egy külön forkolt subprocesszre vonatkozik (valami privilege separation nevű feature hozta be), és semmi köze a te chrootosdidhoz.

Amit most írtál be, ott meg nem látni a chroot próbálkozást a helpertől, amiből aztán a hibaüzeneted jöhetne. Nem lehet, hogy a helper processzről hiányzik a setuid root flag? Mert tök nyilvánvaló, hogy máshogy az nem működhet...

Hú, hogy Te mennyire ott vagy!
A setuid hiányzott! Nagyon köszönöm!
Fura, hogy telepítésnél nem került rá, de persze ellenőrizhettem volna. Meg sem fordult a fejemben.
Még egyszer köszi!

Ezek az EPERM üzenetek itt a "várt eredmény" kategóriába esnek. Szerintem nem innen jön a hibakódod. Azt gondolom, hogy itt az idő elővenni a forrását...

Kipróbáltam, hogy a / mappát adom meg a chroot gyökerének.
Úgy sem sikerül neki ... :)
Azt gyanítom, valamilyen függőség hiányozhat.
Egyetlen libet láttam, amit nem tudott megnyitni, de többször is kereste, ez a libnss_db volt. Feltelepítettem a libnss-db csomagot, de ettől sem lett jobb.