среда, 15 января 2014 г.

Sftp в Linux

Товарищи! Друзья!
На пол срать нельзя!
Для этого есть яма.
Держите жопу прямо.
К чему я это? К тому, что иногда нет никакой возможности защититься от всякого нехорошего барахла. Просто я устал и хочу занести то, что сделал в дневник, чтобы потом было куда подсмотреть.
Значит, задача: организовать sftp - сервер для замены сетевой шары. Так.
Создадим пользователя без хомяка:
 useradd -d /dev/null -M -s /bin/fish user
Ну и пароль ему какой-нибудь придумаем:
passwd user
Это очень круто! Теперь не будет ещё одного гада, который гадит на диск. Но куда-то ему таки надо изливать то, что у него накопилось. Я вообще говоря, так сделал, потому что замучился переносить home. Он отчего-то дико косячил и мне это надоело. Поэтому я просто сделал автоматическое подключение диска и оно заработало, а вот хомяк чего-то никак не хотел. Но это фигня.
Дальше надо создать папку, которую хотим юзануть. Что-нибудь вроде
mkdir /media/diskex/; mkdir /media/diskex/user
Ну и назначим минимальные права. Это будет правильно. Не люблю, когда что-то делается помимо моей воли.
chown -R root:root /media/diskex/user; chmod -R 700 /media/diskex/user; chown -R user:user /media/diskex/user; chmod -R 770 /media/diskex/user
Круть! Теперь надо бы поправить файлик
mcedit /etc/ssh/sshd_config
 И в него уже в конце дописать что-то вроде
Subsystem sftp /usr/lib/openssh/sftp-server
Match user user
ChrootDirectory /media/diskex/
ForceCommand internal-sftp
AllowTcpForwarding no

Match user user2
ChrootDirectory /media/diskex/
ForceCommand internal-sftp
AllowTcpForwarding no

 Здесь, как видно, пользователей может туда ходить два и с разными именами. Если это, конечно, надо и вы создадите ещё и второго пользователя, повторив предыдущие шаги. При этом они никак не смогут лазать в папки, которые им не принадлежат и это тоже очень круто. Только те, что совпадают с их именами. По сути, это их хомяки (для умных /home).
Это всё, безусловно весело и интересно и вы уже поняли, что надо было удалить вот такую фигню:
#Subsystem sftp /usr/lib/openssh/sftp-server
В смысле поставить там решётку, да?
За пояснениями идите на...
(Фуууууф!..)
...идите на этот сайт.
Вот теперь уже всё хорошо и мы можем сделать последний штрих, который в нормальных системах выглядит так:
service ssh restart
Теперь можно радоваться и любоваться результатом. Косяк, конечно есть. И он в том, что люди-то будут видеть чужие хомяки, только войти в них не смогут, а это может породить желание это сделать. Ибо раз закрыто и не пускают, значит что-то скрывают, но вот прямо сейчас я не знаю как можно было бы их скрыть и убрать куда дальше.