Замітка: підготовка тестового оточення для web-проекту з доступом по SFTP

Задача: зручно (для кількох розробників) завантажувати файли в тестове оточення (переважно з Eclipse).

Дано: тестовий сервер на ОС Ubuntu Linux, зроблено всі необхідні для роботи проекту налаштування, каталог в якому міститься проект /usr/local/sigma.

Поїхали...

Для того щоб уникнути проблем з правами доступу для кількох розробників створимо для них окрему групу (якщо розробник один, все значно простіше, ніяких додаткових налаштувань SSHD не потрібно):

~$ sudo addgroup www-dev
Adding group `www-dev' (GID 1002) ...
Done.

Додаєм в цю групу наших розробників:

~$ sudo usermod -aG www-dev gav
~$ sudo usermod -aG www-dev alex

Трохи пошаманимо з правами доступу на каталог проекту:

~$ sudo chmod -R g+w /usr/local/sigma
~$ sudo chmod -R g+s /usr/local/sigma
~$ sudo chown -R root.www-dev /usr/local/sigma

Після цього шаманства каталогу призначена група www-devel, групі додано право запису в цей каталог, а також встановлено груповий флаг "s", що означає - файли і каталоги створені всередині цього каталога будуть мати ту саму групу що і він сам (тобто www-dev).

Далі ми маємо налаштувати sshd таким чином, щоб при завантаженні файлів використовувалась umask 002. Для цього створюємо скрипт, який підмінить sftp-server:

~$ sudo vim /opt/sftp-server.sh

У файл записуємо ось таке:

#!/bin/bash
umask 002
/usr/lib/openssh/sftp-server

Змінимо права доступу, так щоб цей скрипт можна було запускати:

~$ ls -l /opt/sftp-server.sh
-rw-r--r-- 1 root root 52 2008-07-11 15:08 /opt/sftp-server.sh
~$ sudo chmod a+x /opt/sftp-server.sh
~$ ls -l /opt/sftp-server.sh
-rwxr-xr-x 1 root root 52 2008-07-11 15:08 /opt/sftp-server.sh

Піля того як скрипт готовий, підмінимо ним звичайний sftp-server:

~$ sudo vim /etc/ssh/sshd_config

Заміняємо рядок:

Subsystem sftp /usr/lib/openssh/sftp-server

на:

Subsystem sftp /opt/sftp-server.sh

Після всіх цих маніпуляцій необхідно перезапустити sshd:

~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]

Налаштування сервера завершено.

Замітка написана по мотивам скрінкасту від ralpha'а.

Наступного разу мабуть напишу про те, як користуватись таким тестовим оточенням задопомогою Eclipse.