Не так давно я принялся за довольно трудный, длительный и, как оказалось, не до конца возможный в реализации проект перевода информационной инфраструктуры предприятия с одноранговой безсерверной сети Windows в сеть Ubuntu с централизованным управлением.

В процессе перевода были реструктуризованы: рабочие места пользователей, организован примитивный файловый сервер, шлюз интернет, сервер приложений (скорее всего, это я его так называю, а на самом деле этот термин подразумевает нечто другое, но дальше будет понятно, почему я его так назвал, я надеюсь). В сочетании с некоторыми указаниями и «советами» руководства о том, как работать в «новой» системе, получилась довольно удобная в администрировании система.

На ПК пользователей — Ubuntu 10.04 и стандартный набор программ — архиваторы, кодеки, документоридеры, переводчик, браузеры, скайп, клиент удаленного рабочего стола Remmina. По протоколу RDP пользователи подключаются к серверу терминалов Windows 2003 (который я выше назвал сервером приложений) и в терминальных сессиях работают с приложениями, которые оказалось не так просто заменить аналогами из мира Ubuntu: 1С-бухгалтерия, клиент Лига-закон, MS Office, Me-doc, некоторые клиентбанки. Интернет на сервере приложений запрещен и закрыт фаерволом. Набор каталогов с разрешениями на запись и исполнение для каждого пользователя (группы, если их несколько) четко ограничен.

Для прироста файлов от каждого пользователя на дисках выделено по 1-2 Гб места, и основной файловый сервер вынесен на отдельный примитивный файловый сервер Ubuntu и настроена samba. Для каждого пользователя в samba заведен личный каталог и заведен каталог с возможностью для записи для каждой пары пользователей. На файловом сервере и на сервере приложений заведены одинаковые пользователи с одинаковыми паролями, на каждом из компьютеров пользователя заведен только один пользователь и админ. Это дает возможность присоединить расшаренные на файловом сервере каталоги к серверу приложений как сетевые диски (для каждого пользователя сервера приложений эти диски свои), а на локальные ПК пользователей монтировать эти каталоги через файл fstab. Шлюз благополучно работает под управлением FreeBSD, на котором настроен ipfw, natd, squid, sams, dhcpd.

Так вот, в процессе настройки и управления получившейся сетью ПК с Ubuntu мне очень часто приходится делать однотипные задачи типа заведения, удаления пользователя на сервере и на локальном ПК пользователя, создание и удаление общих каталогов на сервере и подключение их на компьютерах пользователей, мониторинг актуальности версий установленных у пользователей приложений, многоразовый запуск, остановка и перезапуск различных сервисов на сервере и на ПК пользователей, шаблонная правка одних и тех же конфигов, в общем все то, что делается после ssh admin@remotePC. В поисках автоматизации всех этих рутинных действий был найден Webmin, но, к сожалению, либо я не разобрался, как с его помощью управлять всем, что мне нужно на серверах и ПК пользователей, либо Webmin этого пока не умеет. Отдельные скрипты, во множестве встречающиеся на разных форумах использовать не очень хотелось, поэтому немного поразмыслив, я придумал как можно своими силами большинство задач, выполняемых при администрировании своей сети упростить и сделать доступными даже секретарше.

1. На ПК с реальным IP (либо с нереальным, но тогда на шлюзе нужно пробрасывать порт на нужный адрес внутри сети) ставится apache, запускаемый далее от имени пользователя с правами суперпользователя (правка httpd.conf) — назовем его условно admin.

2. Этот же пользователь admin заводится на всех ПК сети.

3. Генерируется пара ключей для безпарольного доступа по ssh с сервера, где стоит apache, к любому ПК локальной сети.

4. Далее в файле /etc/sudoers каждого локального ПК нужно дописать строки типа: admin ALL = (ALL) NOPASSWD: ALL — это уберет запрос подтверждения принадлежности группе суперпользователей, и уберет необходимость использования expect скриптов.

5. В apache заводится виртуальный хост, куда вешается сайт с кнопками, типа echo ssh admin@remotehost sudo service smbd restart или echo ssh admin@remotehost sudo apt-get upgrade и другими, добавляемыми и программируемыми по необходимости Т.е. мы получаем для любого устройства, на котором есть интернет и web-браузер возможность управления сервисами сервера и локальных ПК, их конфигами, монтированием и размонтированием файловых систем, и вообще всем, что позволено делать по ssh — т.е. всем! Остается только завести базу наших пользователей и ПК и запрограммировать необходимые функции по нажатию кнопок нашего примитивного сайта-админки. И, желательно, доступ к сайту-админке настроить с использованием ssl, для пущей верности.