Файловый сервер, работа по SSH
В качестве альтернативы протоколу SMB, рассмотрим файловый сервер по протоколу SSH:
Только авторизованный доступ.
Жесткое разделение прав пользователей на доступ.
Отсутствие разницы в работе пользователя вне зависимости от его местонахождения.
Возможность авторизации пользователя как по паролю (возможна интеграция с Microsoft AD), так и по ключу.
Отсутствие необходимости в закупке серверной лицензии Microsoft Windows.
Из недостатков можно найти только один - это все таки непривычное для большинства системных администраторов решение.
Настройка сервера
Сперва займемся настройкой сервера.
Создадим общий каталог, в котором и будут размещаться подкаталоги для доступа пользователей.
Создадим его в /home/share
#mkdir /home/share
Теперь создадим в два подгаталога - /public и /sales
#cd /home/share
#mkdir public
#mkdir sales
Далее создадим две группы пользователей - public и sales
#addgroup public
#addgroup sales
Далее создадим двух тестовых пользователей - user1 и user2:
#adduser user1
#adduser user2
Сделаем так, что бы user1 имел доступ только в public, а user2 - и в public, и в sales.
Для этого введем их в соответствующие группы:
#addgroup user1 public
#addgroup user2 public
#addgroup user2 sales
Настройка пользователей окончена.
Теперь установим права на сами каталоги.
#chown root:public /home/share/public
#chown root:sales /home/share/sales
#chmod 770 /home/share/public
#chmod 770 /home/share/sales
Чтобы был нормальный доступ к файлам в наших каталогах, нужно еще установить бит SedGID.
#chmod g+ws,o= /home/share/public
#chmod g+ws,o= /home/share/sales
Нужно контролировать, чтобы у всех файлов внутри этих каталогов были права 660, а у вложенных каталогов - 770.
Если бы у нас заведомо файлы только создавались, не было бы никаких проблем. Можно было бы обойтись использованием umask.
Однако пользователи периодически копируют из разных источников файлы, у которых уже установлены некие, отличающиеся от необходимых, права.
Для решения используем inotifywait:
Сначала устанавливаем пакет inotify-tools
#aptitude install inotify-tools
Теперь в /etc/rc.localдобавим строку:
/usr/bin/inotifywait -mr --format '%w%f' -e close_write -e moved_to -e create /home/share | while read file; do /root/share.sh "$file"; done
Переменную $file в кавычки брать обязательно!
Если этого не сделать, и в пути встретятся имена файлов или каталогов с пробелами - ничего не сработает.
Ну и создаем скрипт /root/share.sh:
#!/bin/bash
if [ -d "$1" ]; then
chmod 770 "$1"
elif [ -f "$1" ]; then
chmod 660 "$1"
fi
Не забываем сделать этот скрипт исполняемым:
#chmod +x /root/share.sh
Вот и все. Все работы на сервере закончены.
Настройка клиентских компьютеров под Linux.
Установим sshfs и autofs. Выполним команду:
$sudo aptitude install sshfs autofs
Теперь настройка.
Для начала сделаем возможным подключение по ssh к удаленному серверу по ключу, а не по паролю:
Заходим на свою машину с правами root:
$sudo su
Вводим свой пароль.
Генерируем RSA ключи:
#ssh-keygen -t rsa
Отвечаем на вопросы:
Enter file in which to save the key (/root/.ssh/id_rsa): - соглашаемся на значение по умолчанию.
Enter passphrase (empty for no passphrase): - Оставляем значение пустым. Паролем пользоваться не будем.
Enter same passphrase again: - Снова оставляем значение пустым.
Скрипт создал 2 ключа: приватный и публичный.
Your identification has been saved in /root/.ssh/id_rsa. - секретный приватный ключ для декодирования.
Your public key has been saved in /root/.ssh/id_rsa.pub. - публичный ключ для кодирования.
Сейчас нужно скопировать на сервер наш публичный ключ:
#ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
Всё. Теперь попробуем залогиниться:
#ssh user@server
Теперь беремся за настройку, собственно, autofs.
Открываем на редактирование файл /etc/auto.master и добавляем туда:
/home/user/server /etc/auto.sshfs --timeout=30,--ghost
где /home/user/server - это папка, за которой будет следить наш autofs.
Теперь создадим файл /etc/auto.sshfs и запишем в него:
home -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536,reconnect,uid=1000,gid=1000 sshfs\#user@server\:/home/user
Разлогиниваемся из-под root:
#exit
Создаем папку, куда будет монтироваться каталог на удаленном сервере:
$mkdir /home/user/server
И перестартовываем сервис autofs:
$sudo service autofs restart
Теперь у нас все настроено. При заходе в папку /home/user/server у нас автоматически примонтируется сервер, что можно сразу же проверить.
Настройка клиентских компьютеров под Windows.
Здесь все просто. Скачиваем и устанавливаем программу Docan.
С ее помощью удаленный каталог на сервере монтируется как локальный диск.