Опрос

Что вы думаете по поводу веб-кастов, выложеных на сайте?
 

Последнии комментарии

Файловый сервер без SAMBA. Работа по SSH PDF Печать E-mail
Рейтинг пользователей: / 6
ХудшийЛучший 
Автор: Yakim   
24.08.2010 15:20

Идеологическая часть

Вначале рассмотрим политически-организационную часть такого сервера.
Работа с Samba, и вообще по протоколу SMB в Windows-сети стала уже стандартом. Да и задумывалась она, скорее всего, так же.
Но сегодня уже нет смысла привязываться только к этому протоколу. Он несет в себе слишком много ограничений.

 



Если рассматривать офис, в котором установлены только стационарные компьютеры и работа из дома или вообще из-за пределов офиса не планируется никогда - то в таком случае действительно стоит ограничиться работой по SMB и не морочить себе голову.
Совсем другое дело, когда пользователь работает за ноутбуком. Тут уже строить систему нужно так, что бы у работника были минимальные (а лучше, что бы их небыло вообще) отличия в трудовом процессе, при работе через интернет.
Работа большинства современных серверных приложений (1С, GroupWare и т.д.) абсолютно спокойно делается с помощью веб-интерфейса. С почтой тоже обычно проблем не бывает. Доступ в интернет при удаленной работе системного администратора вообще не волнует. Остается последняя проблема - доступ к файлам на файловом сервере.

В качестве альтернативы протоколу SMB, рассмотрим преимущества работы с файловым хранилищем по SSH:
1. Только авторизованный доступ.
2. Изначально жесткое разделение прав пользователей на доступ.
3. Отсутствие разницы в работе пользователя вне зависимости от его местонахождения.
4. Возможность авторизации пользователя как по паролю (возможна интеграция с Microsoft AD), так и по ключу.
5. Отсутствие необходимости в закупке, настройке и поддержке сервера VPN.
6. Отсутствие необходимости в закупке серверной лицензии 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.
Однако пользователи периодически копируют из разных источников файлы, у которых уже установлены некие, отличающиеся от необходимых, права.
Для решения этой проблемы используем gamin и fileschanged:
#aptitude install gamin fileschanged

Создаем скрипт, который будет устанавливать права:
#nano /root/share.sh

И записываем в него:
#!/bin/bash
if [ -d "$2" ]; then
chmod 770 "$2"
elif [ -f "$2" ]; then
chmod 660 "$2"
fi

Теперь при помощи fileschanged нужно этот скрипт выполнить.
#fileschanged -cCfr -x /root/share.sh /home/share &

Все хорошо, но сервера время от времени имеют свойство перезагружаться. Можно, конечно, каждый раз руками запускать эту строку. Но это некрасиво.
По этому нужно просто запускать эту строку автоматически.
Для этого добавим в файл /etc/rc.local строку:
/usr/bin/fileschanged -cCfr -x /root/share.sh /home/share &

Вот и все. Все работы на сервере закончены. Настройка и подключение клиентских компьютеров рассмотрена в другой статье - Подключение удаленных каталогов по SSHFS с помощью AutoFS

 

Дополнение к статье

Как показала практика, использовать gamin слишком непродуктивно.Уж слишком много ресурсов отъедает эта программа.
На Celeron 2.6 она отъедала 25% проца. Пришлось искать альтернативу.И она таки была найдена!
Теперь на сервере крутится 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

Вот теперь действительно все. Нагрузка на процессор сервера значительно снизилась.
inotifywait потребляет порядка 0.5%-1%. Это вполне допустимо, как по мне.

Данный материал написан для «Первого конкурса русскоязычных статей для ОС Ubuntu 2011 года» (konkurs.ubuntu.ru)

Обновлено 14.07.2011 08:20
 

Комментарии 

 
+2 #1 kuroneko 10.09.2011 21:13
Что будет в случае, если будет скопирована ссылка?
 
 
+1 #2 yakim 11.09.2011 13:00
По большому счету, ничем плохим это не закончится. Ссылка будет показывать всегда на локальный ресурс пользователя. По этому для всех пользователей информация по ссылке окажется разной. Хотя наверное имеет смысл в /root/share.sh проверять что мы создаем, и если это ссылка - прибить нафиг.
 
 
0 #3 Alex 19.09.2011 20:37
Спасибо, Yakim!
Хорошо написано, по существу. Но есть вопрос - к серверу c поднятой шарой по SSH можно подключится только с линуксовой машины или из под win тоже? Если да, возможно подскажете клиент?
 
 
+1 #4 yakim 19.09.2011 21:08
Можно и из под винды тоже.
Есть бесплатный вариант Dokan, есть платный вариант ExpanDrive. И то и то нормально работает работает.
 
 
0 #5 kaka 12.12.2011 22:33
Ужастно написано!
Ничего не понятно что сделано, как обычно никаких толковых комментариев.
Например.
#fileschanged -cCfr -x /root/share.sh /home/share &
где это писать? что это делает?

/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

что это делает? что я делаю прописывая ЭТО?
Только делай это а потом это!!!
почему не описано подробно, для чего делается и что?
 
 
+2 #6 yakim 12.12.2011 22:58
Ты, конечно, извини, но это не учебник. И никто не должен тебе ничего объяснять. Попробуй документацию прочитать для разнообразия. Или плати за обучение.
 
 
+1 #7 silis 16.02.2012 11:45
Добрый день !!! Спасибо за статью. Сделал при помощи Вашей статьи ssh+windowsDoka n. Все работает
только PowerPoint из пакета MS Office не хочет работать, открывает файл но не записывает, хотя и Word и Excel все прекрасно работают. Куда можно копать, где посмотреть? Спасибо.
 
 
+1 #8 Sergey Yakimchuck 16.02.2012 11:50
1. Проверь права доступа на файл .ppt
2. Попробуй этот же файл открыть, например, через OpenOffice
3. Попробуй Dokan заменить на ExpanDrive
(У докана бывают иногда забавные глюки из-за имени файла)
 
 
+1 #9 silis 16.02.2012 12:01
Спасибо за ответ !!!
У меня стоит Ваш скрипт и все делает автоматом
выставляет права 660. Я проверил точно. Проблема только с Повером он открывает файл а переписать или записать с другим именем он не может.
Говорит не правильное имя файла и все. Ворд и Ехсел все работают и записывают и переписавают.
Возможно это только поверпоинт что-то не такл открывет?
 
 
+1 #10 Sergey Yakimchuck 16.02.2012 12:05
По этому я и советовал 2 и 3 пункты
Как вариант, можно на пробу файл переименовать в что-то простое. Например 1.ppt
 
 
+1 #11 silis 16.02.2012 12:28
Сергей спасибо за наводки. Установил ExpanDrive, он даже быстрее работает и как-то постабильней. Но проблемма в самом PowerPointe он что-то даже на локальный диск через раз сохраняет.Буду разбираться. Если можно почему Dokan не захотел работать с ключом ida_pub а только через пароль?
На Windows установил WinSCP сгенерил ключ он конектится а Dokan нет?
 
 
+1 #12 Sergey Yakimchuck 16.02.2012 12:38
ExpanDrive постабильнее - это точно.
Про Dokan - ничего не скажу. У нас вся контора под линуксом - поэтому никаких проблем ни с чем нет. SSHFS работает отлично. :)
А то, что поверпоинт не пишет - это уже его собственные проблемы.
 
 
+1 #13 silis 16.02.2012 12:46
Спасибо за ответы !!!
Ваш сайт в закладки :D
 
 
+1 #14 Sergey Yakimchuck 16.02.2012 12:53
И Вам спасибо!
 
 
+1 #15 papont2007 03.03.2012 16:08
молодец!
а кака она и есть кака(смотри ники написавших коментарии).
 
 
+1 #16 logan 09.08.2012 14:04
Решение хорошее, но существует по крайней мере один минус. SSH шифрует соединение и при передаче больших файлов будет большая нагрузка на проц.
 
 
+1 #17 Sergey Yakimchuck 09.08.2012 14:07
Как-то особой нагрузки не замечал.
С учетом того что дома по ssh жена даже фильмы смотрит. Да и сервак простенький. 800 целерончик
 
 
+1 #18 logan 10.08.2012 14:45
Хм, дело в том что когда я кидаю файлы через sshfs, проц грузится на 100% Целерон 2000. У тебя дистр какой?
 
 
+1 #19 Sergey Yakimchuck 10.08.2012 15:07
На всех серваках, где пользую sshfs ubuntu 10.04
Вчера специально посмотрел - на серваке sshd жрет до 2% проца
 
 
+1 #20 Sergey Yakimchuck 10.08.2012 15:10
Цитирую logan:
проц грузится на 100%

Э... А для прав доступа используешь inotifywait или gamin?
 

Добавить комментарий

Защитный код
Обновить

 
3.png

Дружественные сайты

Linux для всех

 

Видеоуроки

 

 

Ubuntu в Сумах

 

Мои Счетчики