Hi All,

first of all, thanks for the Feature to chroot sftp users. I've been
waiting for that one pretty long :)
Today I came back to that feature since I probably need it at work and
it'll be one more opportunity to not use a Linux system (Debian etch's
openssh is too old).

Anyway, back to the topic.

What I wanted to achieve is pretty much the following: Have some users, all
in the same group named sftp and if the log in via sftp they get chroot'ed
to their home directory.
However, I wind up after a login in /home not /home/$username

Now regarding my sshd_config:
Match Group sftp
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        ChrootDirectory /home

and somewhere above:
Subsystem       sftp    internal-sftp

The user is named sftp1, is in group sftp, has home dir set to /home/sftp1
and has nologin as shell.
When I login via sftp, I wind up being in /home not /home/sftp1:

[EMAIL PROTECTED] ~]# sftp [EMAIL PROTECTED]
Connecting to localhost...
Password:
sftp> ls -l
drwxr-x---    4 1002     1001          512 Sep 12 15:46 jobauer
drwxr-x---  101 1001     1001         6656 Sep 30 16:05 mhettwer
drwxr-x---    2 1003     1001          512 Sep 15 19:57 mt
drwx------    3 1005     1003          512 Sep 30 16:06 sftp1
drwxr-xr-x    2 1006     1003          512 Sep 30 16:42 sftp2
sftp> 

which really is:
[EMAIL PROTECTED] ~]# ls -l /home/
total 16
drwxrwxr-x    2 root      operator   512 Sep 12 11:39 .snap
drwxr-x---    4 jobauer   shellme    512 Sep 12 15:46 jobauer
drwxr-x---  101 mhettwer  shellme   6656 Sep 30 16:05 mhettwer
drwxr-x---    2 mt        shellme    512 Sep 15 19:57 mt
drwx------    3 sftp1     sftp       512 Sep 30 16:06 sftp1
drwx------    2 sftp2     sftp       512 Sep 30 16:42 sftp2
[EMAIL PROTECTED] ~]# 

Of course I changed permission so that the only option is a "cd sftp1" for
the user sftp1. But I really don't want sftp1 to see all home dirs.

I did try using /chroot as it was shown in examples on undeadly.org
However, thats the same situation. (sshd_config changed to /chroot instead
of /home)

[EMAIL PROTECTED] ~]# ls -l /chroot/
total 4
drwxr-xr-x  2 sftp1  sftp  512 Sep 30 11:30 sftp1
drwxr-xr-x  2 sftp2  sftp  512 Sep 30 16:09 sftp2

[EMAIL PROTECTED] ~]# sftp [EMAIL PROTECTED]
Connecting to localhost...
tPassword:
Password:
sftp> ls -la
Couldn't get handle: Permission denied
sftp> 

Woopsie. Thats probably due to:
[EMAIL PROTECTED] ~]# ls -ld /chroot/
drwx------  4 root  wheel  512 Sep 30 16:09 /chroot/

Permissions more open results in:
[EMAIL PROTECTED] ~]# ls -ld /chroot/
drwxr-xr-x  4 root  wheel  512 Sep 30 16:09 /chroot/

and via sftp:
[EMAIL PROTECTED] ~]# sftp [EMAIL PROTECTED]
Connecting to localhost...
Password:
sftp> ls -la
drwxr-xr-x    4 0        0             512 Sep 30 16:09 .
drwxr-xr-x    4 0        0             512 Sep 30 16:09 ..
drwxr-xr-x    2 1005     1003          512 Sep 30 11:30 sftp1
drwxr-xr-x    2 1006     1003          512 Sep 30 16:09 sftp2


Again, I'm in /chroot not /chroot/sftp1 where I think I should be, right?

Okay... let's try "/chroot/%u" then in sshd_config...
No, I can't login, 'cause sshd is complaining about the permissions of
/chroot/sftp1:
Sep 30 16:47:12 motor sshd[23190]: fatal: bad ownership or modes for chroot
directory "/chroot/sftp1"

Fair enough... the manpage states, that it should belong root. Okay then:
[EMAIL PROTECTED] ~]# ls -l /chroot/
total 4
drwxr-xr-x  2 root  wheel  512 Sep 30 11:30 sftp1
drwxr-xr-x  2 root  wheel  512 Sep 30 16:09 sftp2

[EMAIL PROTECTED] ~]# sftp [EMAIL PROTECTED]
Connecting to localhost...
Password:
sftp> ls -la
drwxr-xr-x    2 0        0             512 Sep 30 11:30 .
drwxr-xr-x    2 0        0             512 Sep 30 11:30 ..

where am I now?
Am I in /chroot/sftp1 ?
Could be, but due to these permissions, I'm not able to do anything:
sftp> mkdir foo
Couldn't create directory: Permission denied

Okay, now it gets ugly. Maybe I can create a directoy named incoming in
/chroot/sftp1. Would look like that:
[EMAIL PROTECTED] ~]# ls -l /chroot/sftp1/
total 2
drwxr-xr-x  2 sftp1  sftp  512 Sep 30 16:49 incoming

And then via sftp...
[EMAIL PROTECTED] ~]# !sftp
sftp [EMAIL PROTECTED]
Connecting to localhost...
Password:
sftp> ls -l
drwxr-xr-x    2 1005     1003          512 Sep 30 16:49 incoming
sftp> cd incoming
sftp> ls -l
sftp> mkdir foo
lsftp> ls -l
drwxr-xr-x    2 1005     1003          512 Sep 30 16:50 foo
sftp> 


Okay, this works.
So back to my question... Is that really the way it's supposed to be?
No write access for the user when being chrooted in a directory, but
instead I have to create another sub directory where he has write
permissions?
Am I missing something obvious here or is this "works as designed"?

Last information bits: Yes, thats a FreeBSD box, but that shouldn't make
much of a difference for my testing purpose. The production box will be an
OpenBSD one :)

[EMAIL PROTECTED] ~]# ssh -V
OpenSSH_5.1p1 FreeBSD-20080901, OpenSSL 0.9.8e 23 Feb 2007
[EMAIL PROTECTED] ~]# uname -a
FreeBSD motor.mobile.rz 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Wed Sep
10 18:39:19 CEST 2008     [EMAIL PROTECTED]:/usr/obj/usr/src/sys/GENERIC
 i386


I'd be glad for any reply.
Keep up the good work guys!

regards,
Marian

PS.: please CC me, I'm not subscribed (I was, but without unsubscribing I
got lost somehow... strange thing).

Reply via email to