Путь дракона
Вход для пользователей
Забыли пароль?   Регистрация
Главная Новости Фото Скачать Статьи Форум
 

Установка и настройка Ubuntu для работы в качестве сервера терминалов

Описанное решение успешно работает с 2008 года в моем офисе. Изначально решение было опробовано на базе Ubuntu 9.10, потом были сделаны upgrade сначала до 12.04, потом до 14.04.

Сначала, конечно, устанавливаем Убунту. Наступил на грабли повторно как в первый раз,  установив серверную версию Ubuntu. Для работы в качестве сервера терминалов серверная версия недостаточна, т.к. требуется окружение рабочего стола, броузер, офисный пакет и другие программы, которые есть в десктопной версии, и которых нет в серверной версии. И самое главное, должна быть оболочка управления x windows. Поэтому устанавливать нужно версию для десктопа.

Перед upgrade сохранил полностью папки /etc и var/www. При переустановке локальные сайты перенес в /home/www, чтобы в будущем можно было при переустановках форматировать раздел /var без лишних движений по резервному копированию и перенастройке сайтов.

1. Ставим десктопную версию Ubuntu, желательно LTS, т.к. практика показывает, что система на сервере обновляется редко - даже при upgrade компьютера был перенесен жесткий диск с системой и все работает прекрасно.

При установке выбираем ручное разбиение диска, форматируем все разделы кроме /home, привязываем к точкам монтирования. Да, на 9.1 были у меня отдельный разделы для /boot и /temp, очень скоро они забились и стали выдавать ошибку, пришлось регулярно удалять старые версии ядра, а также заменить раздел /temp файлом в основном разделе. Поэтому в этот раз я эти разделы удалил и объединил с корневым /. В последующих версиях выделяю разделы под /, /usr, /var (это, как показывает практика, не обязательно), /home и /tmp (этот раздел нужно сделать как минимум в 2 ГБ, чтобы он не забивался при работе нескольких клиентов терминального сервера). Все разделы на ext4, кроме /tmp (ext2)

Пример. Разбивка диска 1 ТБ на системе с ubuntu 14.04

разбивка жесткого диска сервера

 

Как обычно, после установки настраиваем сетевые карты для статических IP, доустанавливаем русский язык.

Как изменить IP?

В последних версиях по умолчанию не используется файл   /etc/network/interfaces, настройки можно делать через network-manager. Через GUI заменить настройки сетевого интерфейса легко, но как это сделать удаленно через терминал?

Можно, конечно, удалить network-manager и делать настройки как раньше - через правку файла interfaces

Как запустить GUI nnetwork-manager пока не нашел, но вот запустить апплет значка можно.

sudo nm-applet

Получим значок сетевого подключения удаленного компьютера, в меню по правой кнопке мыши можно вызвать NM и сделать необходимые настройки соединения.

Список интерфейсов можно посмотреть набрав:

~$ifconfig –a

Если необходимо иметь больше одного ip-адреса, то можно создать виртуальный сетевой интерфейс, добавив в /etc/network/interfaces строки:

 
 
 
 
auto eth0:1
iface eth0:1 inet static
address 192.168.1.11
netmask 255.255.255.0
  1. Смена MAC-адреса, это бывает необходимо, если есть привязка к MAC-адресу и была заменена сетевая карта:
 
 
 
~#ifconfig eth0 down #отключим интерфейс eth0
~#ifconfig eth0 hw ether 00:0F:FF:33:22:01 # укажем новый MAC-адрес
~#ifconfig eth1 up # включим интерфейс eth0

Что бы не писать это каждый раз после перезагрузки системы, добавим строчку в /etc/network/interfaces после  dns-nameservers 192.168.1.1:

 
 
hwaddress ether 00:0F:FF:33:22:01

После всех операций перезапускаем сеть:

 
~#/etc/init.d/networking restart

 

Потом нужно установить open-ssh, samba, nfs, lamp. Как это сделать - в инете полно информации.

 

Настройка SSH стороне сервера

В конфигах машины-сервера, к которой будем подсоединяться (у вас ведь есть её рутовый пароль, так ведь?) в /etc/ssh/sshd-config ищем и меняем ключи на:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Этим мы разрешаем серверу запускать удалённо графические приложения и отправлять их на клиентскую машину. Перестартуем сервис:

sudo /etc/init.d/ssh restart

Теперь мы сможем заходить на машину не только в консольном режиме, но и с запуском иксовых приложений.

Если хочется разрешить вход только с определённых машин, нужно подправить строки в конфиге /etc/ssh/sshd_config

AllowUsers hacker@*

AllowUsers *@192.168.1.*

Впрочем, это уже для более продвинутых товарищей.

Настройка клиентов

Для начала записываем имена серверов в файле /etc/hosts в виде

172.18.4.1 server1 vtiger solarhome

Это позволит заходить на сайты, установленные на сервере, по их виртуальным именам.

Установка SSH

Устанавливаем  ssh

sudo apt-get install ssh

После установки идем в /etc/ssh/ssh_config и раскомментируем следующее:

   ForwardX11 no
   ForwardX11Trusted yes
для того, чтобы можно было открывать окна программ сервера на клиенте,

В принципе, можно на клиентской стороне ничего не менять, а логиниться на удалённую машину так:

$ ssh -X user@server1
 
а также для улучшения скорости работы добавим:

Ciphers blowfish-cbc,aes128-cbc,3des-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
Compression yes

Можно вместо второй опции всегда вводить команду

ssh -XYC user@server

большинстве программ для форварда хватает -X но некоторым надо еще и -Y (я, честно говоря, ни разу таких не встречал), -C для компрессии трафика.

А вот Ciphers очень сильно ускоряют работу, так как по умолчанию по туннелю передается очень большое количество данных. Эта опция очень сильно ускоряет работу на медленных линиях.

 

Далее, чтобы не вводить пароли при логине на сервер, делаем следующее:

Генерируем ключи, на вопросы жмем Enter

$ ssh-keygen -t rsa

Копируем этот ключ на сервер:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

 

Источник

 

Установка NFS

Запуск и настройка NFS 

sudo apt-get install nfs-kernel-server nfs-common portmap

После этого в /etc/fstab добавляем записи для автомонтирования типа:

server1:/home/user3 /home/server/user3 nfs auto 0 0

Здесь первый параметр - путь к расшаренной папке, второй - точка монтирования на компьютере клиента. Опции монтирования можно изменить.

После этого sudo mount -a (или перезагрузка, если нет прав для sudo) - и папки на сервере примонтированы у клиента.

 

После установки LAMP нужно доустановить модуль php-imap командой

aptitude install php5-imap

После установки перезагружаем apache2

apache2ctl graceful OR /usr/sbin/apache2ctl graceful

 

Группы пользователей и права

NFS идентифицирует пользователей по UID. Поэтому необходимо после создания  всех пользователей посмотреть их UID в /etc/passwd и присвоить такие же для пользователей на клиентских компьютерах.

Заводить в системе нового пользователя удобнее всего командой useradd.

Я применял такую команду

$ sudo useradd -u UID -g userXX -G users,operator -m -d /home/userXX -s /bin/bash -c COMMENT ИМЯ_ПОЛЬЗОВАТЕЛЯ

здесь вместо UID пишем id нового пользователя  (у меня в виде 10XX)
-m - создает директорию по образцу, заданному в /etc/skel/
-c - любые комментарии, например, реальное имя пользователя, можно разделять запятыми
-g - GID, группа пользователя
-G - членство в других группах, через запятую можно добавить в несколько групп

Если по умолчанию в качестве шелла ставится не bash, можно поменять поведение командой useradd -D -s /bin/bash

You can change it permanently with the -D option. 

# To see current settings 
# useradd -D

# To change default shell for all new accounts
# useradd -D -s /bin/bash

Для существующих пользователей шелл можно поменять в файле /etc/passwd

b) find the line that belongs to the user (foo) that we about to modify

  • foo:x:1001:1001::/home/foo:/bin/sh

c) change from /bin/sh to /bin/bash

  • foo:x:1001:1001::/home/foo:/bin/bash

 

Кстати, для samba нужно создавать пользователей без шелла и домашней директории, можно командой типа

$ sudo useradd -G samba_users -d /dev/null -s /bin/false ИМЯ_ПОЛЬЗОВАТЕЛЯ

 Вообще, опций для useradd много, основные из них:

  • данные о пользователя (имя и т.д.), записываемые в поле комментария в файле /etc/passwd (опция -c);
  • имя или номер группы, к которой будет отнесен пользователь (опция –g);
  • список групп, в которые будет включен данный пользователь (опция –G);
  • UID пользователя, назначаемый вместо UID, задаваемого системой (опция –u);
  • какая оболочка назначается пользователю (опция –s)

 

После ввода нового пользователя надо задать ему первоначальный пароль, что делается командой passwd login_name.

 

Что делаем для изменения UID у клиентов?

Заходим под администратором на клиенте или по ssh (у меня все клиенты имеют ssh сервер и я могу их обновлять и мониторить не подходя к ним. В файле /etc/passwd меняем UID пользователя на такой же, как у его пользователя на сервере. В файле /etc/group меняем его основную группу (как правило, создается группа с тем же номером GID).

Команда usermod имеет те же опции, что и useradd, только используется для изменения параметров существующего пользователя, причем на момент применения этой команды суперпользователем данный пользователь не должен быть логирован в системе.

Каждый пользователь может быть включен в произвольное число групп. Включение пользователя в различные группы может быть осуществлено путем "ручного" редактирования файла /etc/group суперпользователем, а может быть выполнено с помощью команд groupadd и groupmod.

Если у пользователя уже есть домашняя папка, то у нее настроены права в соответствии со "старыми" UID:GID. Чтобы после изменения UID пользователь мого зайти в свою папку (и вообще войти в систему) нужно поменять владельца и группу у файлов и папок домашней папки пользователя.

Меняем владельца и группу домашней папки на новые, например так
sudo сhown -R user1:user1 /home/user1

Долго я мучился с правами доступа и владельцами и  группами для новых файлов на сервере. Приходилось периодически давать команды chown и chmod для изменения прав доступа и владельцев для новых файлов. Кстати, вот эти команды для изменения прав на папки и на файлы:

sudo find /path/to/files -type f -exec chmod -R 0664 {} \;
sudo find /path/to/folder -type d -exec chmod -R 0775 {} \;

Все оказалось до безобразия просто - нужно было только установить маркер SetGID для общих папок. Источник

Выставляется бит setgid с помощью команды:

chmod 2775 /home/server/...../Users

Тут надо подробнее про 2775:

  • 2 - это и есть setgid
  • 7 - это все права для собственников
  • 7 - все права для группы
  • 5 - только чтение и выполнение для остальных

 

chown :users /home/server/...../Users

Теперь все новые файлы в папке Users будут иметь группу users и права доступа 664

Update. Еще команда для изменения прав доступа на файлы и папки

Если вы хотите установить разрешения для всех файлов на a+r и все каталоги на a+x и сделать это рекурсивно через полное дерево подкаталогов, используйте:

chmod -R a+rX *

X (то есть капитал X, не маленький X!) игнорируется для файлов (если они уже не исполняются для кого-то), но используется для каталогов.

 

Замечание. NFS имеет слабую защиту и рекомендована только для локальной сети, где нет "чужих" или с "шаловливыми ручками". Так как идентификация происходит по UID, то, зная UID какого-то пользователя на сервере, можно получить полный доступ к его файлам  с любого компьютера локальной сети. Для этого нужно создать нового пользователя на клиенте и присвоить ему требуемый UID. Так как к общей папке на сервере в /etc/exports обычно указывается диапазон IP,  то  можно подключиться к серверу как другой пользователь и иметь полный доступ к файлам.

Можно предпринять некоторые меры защиты, а именно:

  1. не давать права администратора пользователям клиентских компьютеров, чтобы они не могли создавать новых пользователей или менять свой uid. Остается, конечно, вариант принести свой ноутбук и там создать нового пользователя с требуемым uid.
  2. давать доступ к конкретным IP, а не диапазону (работает со статическими IP).
  3. если кто знает как еще можно защититься в NFS - напишите в комментариях

 

Для справки

ФАЙЛЫ
/etc/passwd -     содержит информацию о пользователях
/etc/shadow -     содержит защищаемую информацию о пользователях
/etc/group -    содержит информацию о группах
/etc/default/useradd -    содержит защищаемую информацию о пользователях
/etc/skel/ -    каталог, содержащий пользовательские файлы по умолчанию
/etc/login.defs -    содержит конфигурацию подсистемы теневых паролей

 

Установка тем

Для того, чтобы при запуске программ в режиме терминала использовались темы рамок окна и значков, нужно, чтобы одинаковые темы были установлены на клиенте и на сервере. Иначе терминальные программы будут выглядеть убого.

Устанавливать темы на клиентах и сервере нужно не в папку пользователя, а для всех. Как это сделать - наверное, есть много вариантов (например, распаковать под рутом в общую папку /user/share/themes), но проще всего сделать это из репозиториев тем.

Я установил темы, рекомендованные здесь и здесь

Из темных хороша Numix. Из светлых - Faience. Иконки - из Trevilla или Faence/Faenza

Тема рамок окна также неплоха из Adwaita-X-dark

 

Полезные команды по обслуживанию сервера

В процессе обновления Ubuntu 12.04/12.10 в системе накапливается большое количество старых редакций ядер, неиспользующихся в текущее время. В случае, если Вы установили Ubuntu 12.04/12.10 полностью в директорию "/", особой проблемы это не вызывает. Однако, если в процессе установки системы Вы создали отдельную директорию "/boot" с объемом 100-200Мb (как это советуют на многих форумах по Ubuntu), то в какой-то момент при очередном автоматическом обновлении системы Вы получите сообщение об отсутствии свободного места, и обновление будет прервано.

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

 

sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/(.*)-([^0-9]+)/1/")"'/d;s/^[^ ]* [^ ]* ([^ ]*).*/1/;/[0-9]/!d' | head -n -1) --assume-yes

 

После выполнения команды остаются только текущая и предыдущая версии ядра системы. Остальные вычищаются.

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

Источник

Выключение компьютера из терминала без ввода пароля

Чтобы дать некоторым пользователям право на выключение компьютера без ввода пароля, нужно добавить в файл /etc/sudoers следующие строчки:

Для определенной группы:

%users ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

Для отдельных пользовтелей сначала нужно создать для них алиас:

# User alias specification
User_Alias USERS = user1, user2

#includedir /etc/sudoers.d
USERS ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

 

Можно сделать еще проще - записать алиас в  ~/.bash_aliases.

nano ~/.bash_aliases

Insert the following line at the end of the file:

alias shutdown='sudo shutdown now' 

Finally, load the changes to the .bash_aliases file...

source ~/.bash_aliases

Try it out!

shutdown

 


 

Опубликована: 15.01.2013



Оценка(3)
Оценить эту статью: 


Комментарии
Меню
Дневник
Стихи
...
 18.03.2015 12:15
Мама умерла...
11 марта 2015 года моей мамочки не стало... ...
 18.03.2015 11:22
Грецкий орех влияет на работу сердца и позволяет сохранять стабильный вес
...
 04.01.2014 17:13
Кащей устал.
...
 04.10.2013 19:42
Как устроена вселенная
все звезды в конце концов погаснут... ...
 12.03.2013 02:01
Все новости
Кто на сайте
Администраторы: 0
Пользователи: 0
Гости: 8
Всего: 8

Список пользователей
Главная Новости Фото Скачать Статьи Форум
Сайт работает на LinkorCMS Все права защищены. © 2012-2014 dragon.444r.ru  
Эл. почта: sshifter@mail.ru