Для операций с файлами сайта хочу предоставить пользователю sftp. Но шелл ему я давать не хочу, как и возможность смотреть, что лежит вне его домашней дериктории.
Пишу в конфиге sshd так:
AllowUsers www-data
Match User www-data
ChrootDirectory /var/www
ForceCommand /usr/lib/openssh/sftp-server
Даю пользователю www-data пароль, меняю ему в /etc/passwd шелл с nologin на bash. Перезапускаю sshd.
Пытаюсь залогиниться с удалённой машины:
obey@damntux ~ % sftp www-data@somedomain.ru
Connecting to somedomain.ru...
www-data@somedomain.ru's password:
subsystem request failed on channel 0
Couldn't read packet: Connection reset by peer
В логах openssh на сервере:
Oct 12 21:02:03 somedomain sshd[529]: error writing /proc/self/oom_adj: Operation not permitted
Oct 12 21:02:04 somedomain sshd[529]: Accepted password for www-data from 78.123.123.123 port 54537 ssh2
Если убрать ChrootDirectory, то всё работает.
Как быть?