Меню Рубрики

Централизованное управление linux машинами

Система централизованного управления авторизацией пользователей на FreeIPA в Docker

На волне популярности Docker на Хабре, после участия в некоторых дискуссиях в комментариях относительно Docker, и в связи с недавней необходимостью настроить централизованную авторизацию для кластера Linux машин, я решил написать небольшую заметку. Здесь будет показан яркий, на мой взгляд, пример применения Docker’a для небольшой частной задачи.

Вот так, кстати, выглядит FreeIPA WebUI (официальное демо) (кликабельно):

Какие задачи я хотел решить при помощи FreeIPA:

  1. Иметь возможность создавать/изменять/удалять акаунты пользователей централизовано, а не на каждом отдельном сервере
  2. Централизованные плавила для sudo
  3. В последствии мы подключим к этой системе ещё и VPN авторизацию, а потом может и другие внутриофисные сервисы

Да, скорее всего FreeIPA в нашем случае это выстрел пушкой по воробьям, но с другой стороны — альтернатив что-то не видно. Я рассматривал такие варианты: NIS (по-моему он уже давно должен отправиться на отдых), OpenLDAP +… +… (не очень дружелюбно, да и FreeIPA в итоге под собой имеет LDAP, только нам не приходится с ним иметь дело напрямую), тут перечень заканчивается, я не нашёл ничего больше.

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

Перечень используемых технологий:

  • FreeIPA — открытый проект компании RedHat, который объединяет в себе множество других открытых проектов: 389 Directory Server, MIT Kerberos, NTP, DNS (bind), Dogtag certificate system, SSSD и другие. При этом у данного решения есть Web UI, CLI, XMLRPC, JSONRPC API и Python SDK.
  • Dnsmasq — легковесный DNS сервер (позже я объясню зачем мне он нужен был в дополнение к bind, который используется в FreeIPA).
  • Docker — open-source платформа, автоматизирующая развертывание приложений в легковесные, переносимые, самодостаточные контейнеры, которые могут без изменений переноситься между серверами. © Используем Docker и не волнуемся о vendor-lock

FreeIPA, в следствие того, что это продукт RedHat, естественно умеет хорошо разворачиваться на CentOS и Fedora и практически никак не разворачивается на других дистрибутивах. (прим. Я не особо задавался целью, поэтому может и есть где-то инструкции, но пакетов в Debian/Ubuntu для FreeIPA сервера нет, зато есть клиентский пакет freeipa-client , но об этом потом.)

Меня этот факт ни разу не расстроил, а, наоборот, воодушевил! Это же идеальная задача для Docker, когда на серверах Debian/Ubuntu/Gentoo/etc. То есть я мог взять базовый образ Fedora, поставить там нужные пакеты, собрать всё в кучу и запустить, НО ещё более приятной новостью для меня стал официальный Docker образ freeipa-server (есть у них и клиент, но меня интересовал вариант с клиентом на Ubuntu, поэтому я запускал ubuntu образ в Docker и таким образом моделировал и быстро начинал с начала для отладки процесса «с нуля»).

Вообще, запуск freeipa-server не вызвал никаких проблем, всё в соответствии с документацией к образу Docker’a:

    Создаём директорию, которая будет монтироваться в образ для конфигов FreeIPA, которые нужно оставлять после перезапуска (в документации предлагается использовать /var/lib/ipa-data/ , но я не люблю засорять систему, поэтому /opt/ ):

Добавим файл с опциями, которые будут использоваться при инсталяции freeipa-server:

Всё, запускаем (в доке не хватает проброса портов, хотя это и очевидно, что нужно сделать; стоит также отметить, что в доке написано, что нужно подключать раздел с постфиксом :Z:rw , но если у вас нет SELinux, вам эта опция не нужна (спасибо grossws)):

  • После недолгой установки вам любезно предоставят bash — на этом установка и настройка FreeIPA Server по большому счёту завершена. Можете добавить freeipa.example.test себе в /etc/hosts, пройти на https://freeipa.example.test/, залогиниться под admin и создать пользователя.
  • FreeIPA у себя в образе поднял целый зоопарк служб, в том числе и bind (DNS), который настроил по своему усмотрению (магия, которую практически невозможно повторить на других DNS). Для клиентов FreeIPA ожидается, что они будут иметь доступ к этому DNS, который ещё умеет как-то хитро failover обрабатывать, только вот в случае как здесь — всё в одном образе Docker я не очень вижу пользу с такого failover. Однако, я не стал идти на перекор и учёл пожелания разработчиков FreeIPA (кстати, это особенность Kerberos, всё-таки FreeIPA — просто объединяет множество пакетов).

    Так вот, к чему я про DNS? Мне нужен был DNS внутри кластера, но мне категорически не хотелось влезать в bind внутри FreeIPA контейнера. Поэтому я решил воспользоваться проверенным решением — Dnsmasq. На Docker Hub есть минималистичный образ Dnsmasq, основанный на Alpine Linux — 6МБ.

    Вот как я его подготовил:

      Создал директорию для конфигов:

    Добавил туда конфиг dnsmasq:

    Запускаем (DNS работает на 53/tcp и 53/udp портах, так что пробрасываем их, папку с конфигами):

  • Проверяем, что работает:
  • Итого, у нас есть FreeIPA Server в одном контейнере и Dnsmasq в другом. Кстати, Dnsmasq, как можно было заметить, никак с bind DNS сервером FreeIPA ещё не взаимодействует.

    Дальше я связал эти два сервиса в один docker-compose.yml :

    Можно заметить небольшую магию с дополнительной опцией к команде dnsmasq, эта опция будет перенаправлять запросы к *.example.test на bind DNS, уставновленный в freeipa контейнере.

    Удобство Docker Compose в данном конкретном случае в том, что его конфиг всё-таки удобнее читать, чем bash-скрипт с docker run . Да и лучше сразу делать хорошо. Сохраняем docker-compose.yml и запускаем:

    C сервером, наконец, закончили.

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

    Тут у меня есть решение в 3 команды 🙂

      Нужно исправить /etc/hosts таким образом, чтобы первым в списке было полностью определённое имя домена (FQDN):

    Настроить DNS (через /etc/network/interfaces или /etc/resolvconf/resolv.conf.d/head ) так, чтобы в /etc/resolv.conf появились следующие строки:

    И теперь изменив пароль admin’a к FreeIPA в следующей команде, можете её запустить:

    Здесь добавится PAM-модуль для автоматического создания домашних директорий, установится freeipa-client, запустится установка ipa-client, добавится сервис sudo в sssd.conf и перегрузятся sssd и ssh.

    Вот и всё, теперь на этом хосте можно делать su/sudo/ssh, где пользователя при самом первом входе заставят сменить пароль, а при первом входе на новом хосте для пользователя будет автоматически создана домашняя директория из /etc/skel .

    Выводы

    Docker может упростить разворачивание сложных проектов в любой инфраструктуре. У Docker есть масса применений и это только одно из них.

    В дальнейшем я, возможно, сподвигнусь написать о другом проекте, который интенсивно использует ограничения ресурсов, интегрированные в Docker (CPU, RAM).

    Источник

    Централизованное управление в сети Linux на базе NIS и NFS

    Содержание

    Поддерживаемые версии Ubuntu Завершённость
    статьи
    Ubuntu 8.04 Server
    Ubuntu 9.04 Desktop
    Ubuntu 9.10 Desktop — теоретически
    Ubuntu 9.04-9.10 Server — теоретически
    Ubuntu 10.04 Desktop
    80%

    Вступление

    Не секрет, что за использование нелицензионного ПО в организации администратор может всхлопотать от 2-ух до 5-ти лет. Сложнее становится администраторам, работающим в образовательных учреждениях, т.к. в ходе изучения, как правило, используется множество пакетов-гигантов, таких как photoshop, corel, flash и прочих. Если школы что-то могут еще получить худо-бедно от государства, то дополнительному образованию государством практически ничего не выделяется!

    В общем, в конце-концов, пригрозив начальству увольнением, начальство согласилось переходить на свободное ПО.

    Выбор клиентской ОС был недолгим 🙂 И, конечно, самым первым вопросом был вопрос о централизованном управлении и сетевых ресурсах. Домен под самбой и авторизация в самбе линукс-клиентов был отметен сразу, овчинка выделки не стоит из-за массы проблем с этой авторизацией. Сказать, что готовых систем управления для Unux очень мало — это ничего не сказать. Мне удалось найти 3: nowell, какой то дистр за 10 т.р. Linux Xp, и вроде как у дебиана что-то есть. Но хотелось реализации на Ubuntu, т.к. разбираться с новыми системами времени уже нет, сентябрь не загорами.

    Собственно перед вами HOW-TO: Централизованное управление в Linux сети на базе NIS и NFS.

    Уважаемые читатели! В качестве серверной ОС я всегда использовал FreeBSD под свои нужды, она мне ближе, но здесь будет описана конфигурация Server Ubuntu. Кто пользует FreeBSD знает, что часто синтаксис и конфигурация в этих системах имеют расхождения. В связи с этим, если вдруг вы увидели, что тот или иной момент решен, так сказать, костылем, просьба предложить лучший вариант. Приведенная конфигурация администрирования вполне успешно внедрена в государственном учреждении дополнительного образования и не менее успешно функционирует в учебном процессе.

    Т. к. статья предполагается большой, наполнятся она будет частями по мере свободного времени.

    Основные задачи

    Исходные данные

    ЧАСТЬ 1: Установка и настройка домена и клиента NIS

    Что такое NIS?

    Установка сервера NIS

    Далее, кто желает досканально ковыряться в конфиге, может проследовать в /var/yp/Makefile, кто экономит время, то идем в WEBMIN Сеть — Клиент и сервер NIS и выбираем раздел Сервер NIS . Для базовой настройки этого достаточно, а напильником обработать всегда можно позже.

    После нажимаем кнопку «Сохранить и применить». Можно сказать что домен поднят. Проверьте, что демон ypserv и portmap стартанули:

    Если что-то не запустилось, для начала перезагрузитесь, попробуйте вручную запустить сервер /etc/init.d/nis start и смотрите логи. Чтобы сервер не тормозил при старте и рестарте, проверьте что параметр NISCLIENT=false в файле /etc/init.d/nis.

    В принципе сервер готов к использованию. Тонкую настройку можно будет произвести позже. 3)

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

    На клиентской машине также установим пакеты portmap и nis:

    Приведите файл /etc/nsswitch.conf в такой вид:

    Этот файл заставляет Ubuntu искать ту или иную информацию в порядке приоритета указанном здесь. Например запись hosts: files dns (определение ИП адреса хоста), заставляет сначала обратиться в файл /etc/host, если запись там не найдена, то обратиться к DNS серверу.

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

    Замечание прислал Меньшиков Андрей. 27.10.2010 09:15

    После этих манипуляций вся загрузка будет происходить четко и быстро.

    Вот и всё, клиент настроен.

    Теперь попробуйте получить информацию, например, о пользователях сервера командой:

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

    Сделать это можно либо через команду adduser, либо через WEBMIN: «Система — Пользователи и группы — Создать нового пользователя». Обратите внимание, что пароль в WEBMIN должен задаваться в поле Обычный пароль. В разделе «При создании..», можно везде поставить «нет». После добавления пользователей необходимо не забыть перестроить карты NIS . Это можно сделать написав команду make, предварительно зайдя в каталог /var/yp или нажав кнопку «Сохранить и применить» в WEBMIN «Сеть — Клиент и сервер NIS » — «Сервер NIS «.

    Безопастность NIS

    Примечания

    Возможно придется перед этим установить пакет policykit-gnome. Более тонко полиции можно настроить здесь /usr/share/polkit-1/actions/, отредактировав файлы. Там подробные комментарии, так что не запутаетесь.

    ЧАСТЬ 2: Конфигурация сервера и клиента NFS

    Network File System (NFS) — сетевая файловая система, позволяющая пользователям обращаться к файлам и каталогам, расположенным на удалённых компьютерах, как если бы эти файлы и каталоги были локальными. 5) Собственно чем мы и займемся.

    Настройка сервера NFS

    Потребуется установить собственно сам демон сервера:

    Собственно установка закончена. 🙂 Файл конфигурации сервера по умолчанию используется /etc/default/nfs-kernel-server. Как и в случае с NIS сервером требуется демон portmap, так же должны запуститься демон rpc.mountd и процесс NFS операторских запросов для клиентских систем rpc.nfsd 6) . Последние два запускаются сценарием:

    Теперь необходимо экспортировать 7) каталоги для дальнейшего пользования клиентами. За список расшаренных ресурсов отвечает файл /etc/exports. При любых изменениях в этом файле, дабы активировать изменения, необходимо запускать команду sudo exportfs -a.

    Немного о синтаксисе файла. Каждая строка подразумевает расшаривание одного ресурса. Указывается местоположение экспортируемого каталога и некоторые опции, например:

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

    Часто используемые опции файла /etc/exports:

    Команда Краткое описание
    secure Требует, чтобы запрос на удаленный доступ поступал из привилегированного порта
    rw Экспорт для чтения и записи (по умолчанию)
    ro Экспорт только для чтения
    async Асинхронная обработка всех запросов на запись (отложенная запись); при наличии
    этой опции повышается производительность операций записи, равно как повышается
    вероятность потери данных в случае краха сервера
    sync Синхронная обработка (прямая запись); запись будет производится немедленно при операции
    записи, без буферизации. Медленнее, но зато надежнее.

    Остальные опции (их много) можно прочитать man exports, в документации они очень хорошо описаны.

    Собственно, после базового знакомства структуры файла exports, можно большую часть шар предоставлять через WEBMIN: «Сеть — Каталоги NFS». Единственный момент: после создания шары не забудьте нажать кнопку «Применить изменения» или выполнить команду sudo exportfs -a.

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

    C настройкой клиента ещё проще. Изначально ядро уже поддерживает NFS, поэтому дополнительных манипуляций и не требуется, кроме установки пакета nfs-common:

    Все. 🙂 На всякий случай конфиг используется этот: /etc/default/nfs-common. Клиент готов монтировать ресурсы NFS. Монтирование шар NFS производится командой mount. Самый простейший способ смонтировать, такой:

    Более сложные способы используют дополнительные параметры nfs у команды mount, такие как размер буфера чтения и записи, тайм ауты запросов, способ подключения к серверу и пр. Вот некоторые из них:

    Опция Краткое описание
    rw монтирование ФС для чтения-записи (серер также должен экспортировать в режиме rw);
    ro монтирования ФС только для чтения;
    bg если монтирование прошло неудачно, перевести операцию в фоновый режим и продолжить
    обрабатывать другие запросы монтирования;
    hard если сервер отключился, операции, которые пытаются получить к нему доступ, повторяются
    до тех пор, пока сервер не ответит;
    soft если сервер отключился, операции, которые пытаются получить к нему доступ, завершаются,
    выдавая сообщения об ошибке; полезно устанавливать, чтобы предотвратить зависание
    процессов в случае неудачного монтирования не очень важных ФС;
    rsize=n размер буфера чтения n байт;
    wsize=n размер буфера записи n байт;

    Можно также включать монтирование в файл fstab в соответствии с его синтаксисом:

    Безопасность NFS

    Безопасность — это не последнее на что стоить обращать свое внимание администратору. К сожалению рамки этой статьи не позволяют серьезно разговаривать о безопасности. Более того, стратегия безопасности у каждого администратора своя. Неплохо о безопасности NFS говорится здесь.

    Примечание

    Особых замечаний нет. О монтировании ресурсов более подробно остановимся в 3 и 4 частях настоящей статьи.

    ЧАСТЬ 3: Домашние папки пользователей храним на сервере NFS

    Собственно часть очень интересная. Речь пойдет не только о домашних папках на сервере но и манипуляциях с этими папками, здесь же затроним тему монтирования ресурсов.

    Понятно, что в централизованной сети хранить информацию пользователей, в том числе и домашние каталоги, следует на сервере. Тем самым мы избежим хаоса на рабочих станциях (кто работал с детьми, знают во что они превращают рабочий стол), тут же окажутся все прелести перемещаемых профилей, ну и повышается сохранность информации, да и админу крепче спится, когда все находится в одном месте — на сервере. Одним словом достоинств масса. Чтобы тупо не писать синтаксис различных команд, сразу будем строить модель сети, например, для компьютерного класса школы. Домен NIS , а так же сервер NFS у нас уже запущены, настало время заводить пользователей и производить настройки.

    Для начала реализуем, скажем так, два типа домашних каталогов:

    Зачем? Объясняю: с педагогами все понятно — один пользователь — один каталог. С детьми несколько сложнее. Пусть дети состоят из т.н. групп по 12 человек. Для каждого ребенка завести свой аккаунт это тихий ужас для администратора, поэтому заводим аккаунт на всю группу, т.е. для каждой группы детей будет свой аккаунт. Это еще не все. Ввиду того, что дети — народ ушлый, добавим хитрость: все изменения производимые детьми в период текущей сессии при выходе не будут сохраняться на сервере. Одним словом домашний каталог детей никогда не будет изменен и всегда будет иметь первоначальный вид, в то время как дети могут делать на время своей сессии все что угодно, хоть на ушах стоять. По-моему очень занимательно. Но и это еще не все. Раз домашние каталоги детей изменяться не будут, очевидно, что нет смысла для каждого детского аккаунта заводить свою домашнюю папку. Сделаем хитрее и для всех детей у нас будет один домашний каталог. Это не только избавит администратора от лишних манипуляций по конфигурированию домашних каталогов, но и позволит за один присест менять параметры различных пользовательских приложений сразу для всех детей. Все это реализуемо и, как оказалось, совсем не сложно.

    Подготовительные операции

    Для начала выполним ряд подготовительных операций:

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

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

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

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

    3. Я пока не буду залезать в дебри групп (об этом поговорим в другой части), поставим эксперимент пока на двух пользователях: один педагог, второй ребенок. Выберем на сервере раздел и создадим папку home. В ней мы будем хранить профили пользователей. Мой каталог для профилей клиентов такой: /media/Profil/home. Назначим также ему права 777.

    4. Теперь скопируем каталог default в папку /media/Profil/home/ и переименуем его в .child, еще раз скопируем default в /media/Profil/home/ и переименуем в pedagog. Домашние папки для наших двух пользователей почти готовы. 8)

    5. Создадим в домене этих двух пользователей, например через WEBMIN (см. ЧАСТЬ 1 .), мои пользователи child и pedagog. При создании в поле «Домашний каталог» впишем /home/srv/.child и /home/srv/pedagog соответственно. Также нам понадобится, чтобы все пользователи-дети входили в одну общую группу. Пусть эта группа называется children, укажите ее принудительно при создании пользователя child. Не забываем перестроить карты nis! 9)

    6. Экспортируем всю домашнюю папку на сервере NFS. Для этого в файле /etc/export добавим запись: /media/Profil/home (rw). Вы, разумеется, добавляете свой путь (подробнее ЧАСТЬ 2.). Не забываем выполнить команду sudo exportfs -a или WEBMIN: «Сеть — Каталоги NFS» кнопка «Применить изменения».

    7. Ограничим права на домашние профиля для наших двух пользователей. Очевидно что для каталога /media/Profil/home/pedagog мы назначим владельца pedagog и установим права 700. Для папки /media/Profil/home/.child, назначим владельца child и права 770.

    Монтирование всех домашних папок при загрузке клиентской машины

    Итак, уважаемые читатели, мы подошли к самой интересной и скользкой подчасти этой части, извиняюсь за тавтологию. Замечу, что Ваше мнение с моим может разойтись с тем, что описано ниже.

    Т.к. каталог с домашними папками должен монтироваться на всех машинах, я думать долго не стал. Возможно кому то это не понравится, но я реализовал у себя так, чтобы шара с домашними папками монтировалась автоматически при загрузке клиентской машины. Можно, конечно, сделать так, чтобы каждая домашняя папка монтировалась только при входе пользователя средствами pam_mount (об этом я упомяну ниже), но я в этом не вижу смысла, т.к. все домашние папки будут все равно защищены правами для каждого пользователя.

    Сначала я запихнул команду монтирования в /etc/fstab, но погоняв рабочую станцию, заметил, что иногда монтирование не происходило. Возможно это потому, что монтирование иной раз стартовало до того как активировались сетевые интерфейсы (об этом я писал в ЧАСТЬ 1 ). Вобщем я не стал долго мучаться и добавил команду монтирования в файл /etc/rc.local:

    как видно, тут же еще и синхронизацию времени сделал. Все, после этого, рабочая станция монтировала все домашние папки в /home/srv на этапе загрузки. Кстати это еще удобно тем, что можно в этой папке размещать в будущем какие нибудь конфиги для программ. Можно считать, что для пользователя pedagog все готово. При входе в систему он будет использовать свою домашнюю папку, которая на самом деле хранится на сервере.

    Монтирование домашней папки без сохранения изменений в ней

    Если с домашней папкой пользователя pedagog все предельно ясно, педагог сам будет конфигурировать свое рабочее окружение, то с детскими домашними каталогами пришлось повозиться. Побродив по интернету и почитав различную документацию, остановился на модуле pam_mount. Изучая по нему документацию радости моей не было предела, в нем есть все, что нужно для монтирования ресурсов при входе в систему и даже больше. Именно этот модуль разрешает монтировать, и, что немаловажно, размонтировать удаленные ресурсы при входе/выходе пользователей. Подробнее о синтаксисе pam_mount здесь.

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

    Для начала установим требуемый модуль на клиентской машине:

    В первом случае файл /etc/security/pam_mount.conf.xml можно разместить на сервере в каталоге где хранятся домашние папки: /media/Profil/home/, а на клиентах сделать символическую ссылку на этот файл. Т.к. этот каталог монтируется при загрузке клиентской машины, то у компьютера не возникает ошибки об отсутствии настоящего файла pam_mount.conf.xml.

    Во втором случае, в конфигурационном файле pam_mount.conf.xml есть опция

    которая заставит искать файл конфигурации pam_mount.conf.xml в домашней папки пользователя. Но опять же придется прописывать эту опцию на всех клиентах.

    Вобщем я буду использовать оба варианта:

    1. сделаю один общий pam_mount.conf.xml, который буду хранить на сервере в папке /media/Profil/home/ (все равно она подключается автоматом при загрузке клиентской машины), на всех клиентских машинах удалю /etc/security/pam_mount.conf.xml, а вместо него сделаю символическую ссылку на общий pam_mount.conf.xml, который будет лежать на смонтированном каталоге /home/srv/pam_mount.conf.xml. Я не буду описывать как делать символические ссылки, думаю, что если вы читаете эту статью, то знаете как это делается.

    2. Если мне потребуется, буду использовать опцию

    Для решения нашей задачи также потребуется установить пакет aufs-tools 10) на клиентской машине. Инструмент aufs-tools поможет «объединить» временную файловую систему tmpfs и домашний каталог пользователя таким образом, что существующие в домашнем каталоге параметры будут учитываться системой, а вот все изменения производимые пользователем на время сессии будут записываться на временную файловую систему tmpfs. Когда пользователь завершит сеанс временная файловая система размонтируется, потеряв все изменения, а сам домашний каталог останется без изменений. Следует заметить, что tmpfs создаст виртуальный диск указанного размера в оперативной памяти компьютера, поэтому реализация такой схемы может плачевно сказаться на производительности клиентской машины в целом. 11) Ставим пакет aufs-tools 12) :

    Собственно все почти готово, осталось сконфигурировать файл /media/Profil/home/pam_mount.conf.xml на стороне сервера. Вот примерное содержимое для нашей задачи (не забывайте, что комментарии в XML это ):

    Разберем подробнее записи. В частности следующие две строки и есть реализация нашей задачи. Вынесем их для удобства (остальные параметры /media/Profil/home/pam_mount.conf.xml разберем в четвертой части):

    Особое внимание хочу уделить размонтированию шары при выходе. Вобще у меня с этим возникли некоторые проблемы. В частности при настройках по умолчанию этого конфига, шары не размонтировались, включив отладку ( ), pam_mount упрямо сообщал при выходе пользователя, что запись о монтированном сетевом ресурсе не находится в fstab и мол вы не root. Скорее всего проблему решил костылем, если кто-то может предложить более лучший способ — предложите. Собственно решил ее так:

    1. Разрешаем всем пользователям на клиентских машинах использовать команду /bin/umount без ввода пароля через sudo. Для этого добавим в самый конец файла /etc/sudoers строку:

    2. На сервере в файле /media/Profil/home/pam_mount.conf.xml включим опцию:

    Эта опция заставит pam_mount использовать команду umount c указанными параметрами. Ключ -l («л»), т.н. «ленивое» размонтирование, добавлен т.к. без него, tmpfs не размонтировалась сообщая о занятости девайса.

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

    Обратите внимание на права. Заметьте, что нет критичных файлов .dmrc, .ICEauthority, которые препятствуют многопользовательскому доступу. Они будут созданы в процессе входа пользователя на временной файловой системе и в связи с этим для каждого пользователя будут свои. Также важно отсутствие некоторых каталогов, каких уже не вспомню. Приведенная структура каталогов, сохранила в себе настройки окружения пользователя, а также настройки некоторых программ. Также можно добавлять конфигурационные каталоги других необходимых (но не системных) программ. Вообще, замечу, все чего не будет хватать системе она автоматически при входе пользователя будет это создавать, причем на временной ФС. 13) . Замечу, что некоторые программы не загружаются при такой схеме. Например, опытным путем было выяснено, что для загрузки FireFox необходимо чтобы пользователь в обязательном порядке имел права на запись у каталога с профилем Firefox’a. А чтобы запустилась Opera, необходимо удалить файл lock*.* в профиле Oper’ы.

    Собственно это все. Теперь при входе в систему пользователь child получит как бы «копию» своей домашней папки в /tmp/child, все изменения во время сессии будут сохраняться именно там, а настоящая его домашняя папка останентся не тронутой, чтобы он в ней не вытворял. При выходе временная шара просто размонтируется потеряв все изменения, а домашняя папка останется в своем первоначальном виде.

    ЧАСТЬ 4: Подключение шар NFS при входе в систему

    И так, из первых трех частей у нас уже начала вырисовываться более-менее четкая картина. Мы имеем:

    Также мы уже познакомились со способом монтирования ресурсов при входе в систему (см. ЧАСТЬ 3 ), а именно с модулем pam_mount. Собственно об этом модуле и пойдет речь в этой части. Здесь мы разберем более подробно нужные нам параметры pam_mount.conf.xml и рассмотрим подключения общих сетевых ресурсов для пользователей. Как и в 3 части я пока не буду сильно оптимизировать права на шары. По этой теме стоит отдельно поговорить, используя ACL , группы пользователей и т.д.

    Помимо имеющегося перечисленного выше, стоит добавить, что конфигурационный файл pam_mount.conf.xml у нас общий для всех клиентов и хранится на сервере с правами 744. На клиентских машинах у нас символическая ссылка на этот файл (см. ЧАСТЬ 3 ).

    Основные параметры pam_mount.conf.xml

    Полный MAN по использованию pam_mount.conf.xml можно найти здесь. Напомню что синтаксис этого файла в XML , поэтому будьте внимательны. Почти для всех параметров есть как открывающийся тег, так и закрывающийся.

    Рассмотрим типичный конфиг:

    Как видно, конфигурационный файл разделен комментариями на 2 части:

    Общие параметры

    Параметр Описание
    — включает отладку при экспериментах с авторизацией. Может принимать значения 0 (выключено), 1 и 2. Удобно отлаживать прямо в консоли используя «su имя_пользователя», результаты работы pam_mount будут выводиться прямо на в консоль.
    — Дополнительный файл конфигурации для конкретного пользователя. Этот файл с синтаксисом таким же как и основной файл, размещается в домашнем каталоге пользователя и имеет имя указанное здесь, в данном случае .pam_mount.conf.xml. Может использоваться для подключения личных ресурсов пользователя, причем самим пользователем. Если этот параметр задан, то нужно указать в параметре какие опции может пользователь использовать. Заметьте, что присоединение томов с помощью этого конфига будут делаться от имени пользователя входящего в систему и имеющий домашний каталог с этим конфигом, а не от пользователя root. 14)
    — Сообщает какие опции разрешается использовать в параметре options тега . Распространяется только на личный файл конфигурации пользователя. Не распространяется на главный файл конфигурации. Может быть несколько таких тегов, все последующие разрешения добавятся к предыдущим.
    — Тоже самое, только на запрет использования опций пользователем. Не распространяется на главный файл конфигурации.
    — Какие опции должны обязательно присутствовать в файле конфигурации пользователя. По умолчанию nosuid,nodev. Не распространяется на главный файл конфигурации.
    — собственно переменные окружения системы.

    Параметры команд mount и umount

    Здесь можно задать где конкретно искать файлы mount и umount (по умолчанию ищется через PATH$), а также можно задать дополнительные параметры (как в нашем примере в ЧАСТЬ 3):

    Параметр Описание
    — путь к mount и ее параметры монтирования. Для специфичных
    или конкретных программ монтирования см. дополнительные
    опции в оригинальной документации pam_mount.
    — путь и параметры команды umount.

    Переменные

    Кроме всего, для удобства составления конфига могут использоваться переменные в опциях и параметрах:

    Параметр Описание
    — имя пользователя. Экспортируется при входе пользователя в систему.
    — UID и GID залогинившегося пользователя. Удобно использовать в опциях монтирования, например:
    .
    -Тип монтируемой файловой системы. Определяется из параметра .
    — Имя сервера с которого монтируются ресурсы. Определяется из параметра .
    — Монтируемый ресурс на сервере. Определяется из параметра .
    — Точка монтирования. Определяется из параметра .

    Расширенные теги пользовательского контроля для монтирования ресурсов

    Иногда обычных параметров в теге , например «user=«, недостаточно. Хочется оптимизации, например, предоставление ресурса целой группе пользователей. Это можно реализовать используя теги расширенного контроля. Пример использования:

    — Что означает: смонтировать ресурс /dev/shm в домашнюю папку пользователя, если имя пользователя students, и который не входит в главную или дополнительную группу profs.

    Параметр Описание
    — Логическое «И». Требует ИСТИНА внутри себя для всех элементов. Если хотябы одно выражение будет ЛОЖЬ, условие не выполняется. Допускается любое количество выражений.
    — Логическое «ИЛИ». Требует ИСТИНА внутри себя хотя бы для одного элемента. Если хотябы одно из выражений будет ИСТИНА, условие выполняется. Допускается любое количество выражений.
    — Логическое «Исключающее ИЛИ». Требует наличия двух выражений внутри себя. Возвращает ИСТИНА (условие выполняется), если одно из выражений будет ЛОЖЬ, а второе ИСТИНА. Во всех остальных случаях ЛОЖЬ (условие не выполняется).
    — Логическое отрицание. Разрешает внутри себя одно выражение. Возвращает ИСТИНА (условие выполняется), если выражение ЛОЖЬ.
    — Имя пользователя.
    — UID пользователя или диапазон UIDов.
    — GID пользователя или диапазон GIDов.
    — Основная группа пользователя.
    — Группа пользователя (основная или дополнительная). 15)

    Параметр

    Ну и основной параметр конфига это параметр . С некоторыми параметрами подключаемых ресурсов мы уже знакомы. Заметьте, здесь, в нашем примере у тега , т.к. мы не используем дополнительные опции. 16) Собственно именно параметр volume отвечает за монтирование ресурсов (не только NFS но и многих других типов ФС).

    По умолчанию ресурс монтируется всем пользователям, если не оговорено иное. Например:

    — указано, что этот ресурс будет подключен только пользователю «joe».

    Простые параметры ограничивающие монтирование. Ресурс может быть доступен если сразу после 17)

    Другие параметры :

    В заключении: манипулируя этими параметрами можно создать воистину гибкое монтирование ресурсов для пользователя и групп пользователей.

    Пример подключения сетевых ресурсов

    Ну, после объемной теоретической части приведу еще несколько примеров для нашего случая. Подключим для наших пользователей общий каталог talk для обмена информацией. Обоим пользователям он будет доступен для записи-чтения.

    1. Создаем на сервере NFS экспортируемый ресурс, предварительно создав сам каталог talk и выставив ему права 777. Мой каталог: /media/Work/talk. Для его экспорта добавляем запись в /etc/export: /media/Work/talk (rw). Незабываем обновить изменения: sudo exportfs -a.

    2. Т.к. у нас pam_mount.conf.xml общий для всех клиентских машин, то редактирую его, добавив запись:

    Из примера видно, что каталог talk будет смонтирован только пользователям child и pedagog. Остальным он смонтирован не будет. Если нужен чтобы каталог монтировался всем, достаточно записи:

    Отдельно хочу остановиться на точке монтирования /media/Talk. Изумительный каталог /media! Избавляет от кучи вопросов от пользователей, т.к. все что в нем смонтировано, будет отображено на рабочем столе пользователя в виде диска, очень удобно.

    ЧАСТЬ 5: Настраиваем права пользователей

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

    Задача

    Решим следующую задачу:

    Есть педагог. У педагога есть 5 групп детей. В каждой группе по 12 человек. Требуется:

    Решение задачи

    Выполним ряд подготовительных действий:

    1. Для начала организуем две группы в системе если их еще нет. Группу pedagog и группу children. Для этого либо редактируем файл /etc/group, либо создаем группы в WebMin:

    2. Создадим пользователя-педагога. Пусть ее имя будет olga. Сделать это можно по разному, я сделаю через WebMin. При создании никаких экзотических опций не использую. Обратите только внимание на путь к домашней папке. Помним, что все домашние папки у нас подключаются при загрузке клиентских машин с сервера и монтируются в папку /home/srv. Так что путь к домашней папки у olga будет такой: /home/srv/olga. Основная группа будет pedagog.

    3. Подготовим домашнюю папку для olga на сервере. Помним, что у нас уже есть т.н. папка с окружением рабочего стола по умолчанию, которая называется default (см. часть 3 ). Все мои папки с домашними каталогами находятся на сервере здесь: /media/Profil/home. Создам в ней папку olga, скопирую в нее содержимое из default. Назначу права 700, а также сделаю владельцем olga:

    Пользователь olga и ее домашняя папка готовы.

    4. Теперь, т.к. у педагога 5 групп детей, создадим для них аккаунты. По одному аккаунту на группу. Пусть аккаунты именуются так: ol1, ol2, ol3, ol4, ol5. Создаем пользователей с такими именами в системе, домашняя папка у них будет числиться как /home/srv/.child. Основная группа — children.

    5. Домашняя папка для всех групп у нас общая и лежит на сервере. Напомню, что при подключении пользователей-детей у нас используется временная файловая система (см. часть 3 ), что обеспечивает неизменность профиля для детей. Помним, что у нас уже есть т.н. папка с окружением рабочего стола по умолчанию, которая называется default (см. часть 3 ). Все мои папки с домашними каталогами находятся на сервере здесь: /media/Profil/home.

    Итак, создам в папке /media/Profil/home папку .child, скопирую в нее содержимое из default. Теперь назначим папке .child необходимые права. Владельцем папки оставим пользователя root, а вот группу сделаем children, чтобы любой ребенок имел к ней доступ:

    7. Создадим структуру каталогов (см. рис.) для групп детей на сервере и назначим им права доступа. Эти каталоги будут подключаться детям при входе в систему соответственно и будут служить рабочими «дисками» для детей, где они будут складывать свои наработки во время занятий. Все пользовательские каталоги у меня размещаются здесь: /media/Work/Disk_child. Создадим каталог olga_ch, который будет содержать в себе все каталоги групп детей педагога. Этот каталог (olga_ch) будет подключаться педагогу olga. В нем создадим пять каталогов, для каждой из груп: ol1, ol2, ol3, ol4, ol5. Каждый из них будет подключаться той или иной группе соответственно. В каждом из этих пяти каталогов будут еще каталоги с фамилиями ребят. В данном примере фамилии заменят каталоги 01, 02, 03 и тп. Вот что получается:

    Для всех пяти групп я не буду приводить примеры с разрешениями, приведу только для ol1. И вообще, в целях оптимизации можно все права выставить только для одной группы, а для остальных четырех групп просто скопировать структуры папок с уже назначенными правами и немного модифицировать их (права) о чем ниже. Так и сделаем. Начнем с педагога olga. При входе в систему, помимо личного диска, ей будет экспортироваться папка olga_ch, в которой будут содержаться все ее группы ребят. Очевидно, что права на запись в саму папку olga_ch педагогу ненужны ибо нефик! Владельца папки оставляем рута и назначаем права ACL :

    Теперь разбираемся с правами на группы (папки ol1 — ol5). Здесь уже для педагога потребуются также права на запись, дабы он мог удалять лишние файлы, редактировать файлы ребят и добавлять новые. Поэтому для каталога группы (в нашем случае ol1), назначаем права rwx. Владельцем каталога также оставляем рута:

    Заметьте, что хоть olga и имеет права rwx на каталог ol1, она не сможет удалить САМ каталог ol1, который находится в папке olga_ch.

    Теперь сразу добавим на этот же каталог права для пользователя ol1. Писать детям в сам каталог ol1 нужды нет, ибо опять нефик! Поэтому им даем права rx:

    Теперь освободим себя еще от лишней работы. Пускай педагог сама создает каталоги с фамилиями ребят, которые ему (педагогу) нужны. Загвоздка в том, чтобы при создании каталогов руками педагога они еще должны быть доступны детям. Для этого воспользуемся ACL по умолчанию, т.н. сделаем «наследование» прав. Более того, сразу глядим в будущее… Попробую объяснить:

    Теперь все создаваемые каталоги и файлы внутри каталога ol1 будут принимать разрешения rwx для групп pedagog и children. Вместе с тем, ребята из группы ol1 не могут удалять каталоги-фамилии, потому как права для логина ol1 под которым будут входить ребята ограничиваются чтением и выполнением: user:ol1:r-x, а мы с вами знаем, что права на запрет имеют приоритет перед правами на разрешение.

    Осталось решить вопрос с папкой «Задания». Создадим ее и назначим нужные права:

    Теперь дети из папки Задания могут только читать, а педагог может и писать туда. В принципе все готово к монтированию.

    Перестроим записи командой: exportfs -a.

    9. Теперь осталось настроить pam_mount.conf.xlm, чтобы каталоги подключались пользователям при входе в систему. Помним, что файл pam_mount.conf.xlm лежит на сервере и все клиентские машины настройки считывают из него (см. часть 3 ). Его и редактируем. Лежит он у меня на сервере здесь: /media/Profil/home/pam_mount.conf.xml. Привожу полный конфиг с комментариями:

    Сохраняемся! И собственно все, можно проверять.

    10. Теперь раскопируем структуру каталогов группы детей ol1 на остальные группы ol2…ol5. Имеем:

    Размножаем (обратите внимание на ключ -p, который позволяет также копировать атрибуты):

    Теперь осталось всего-то просто несколько модифицировать у каталогов ol2…ol5 права для пользователей, соответственно на ol2…ol5, потому как сейчас у этих каталогов доступ для пользователя ol1. Смотрим, например, для группы каталога ol2:

    Видно, что нужно заменить здесь только пользователя ol1 на ol2. Удаляем ACL для ol1 и меняем на ol2:

    Тоже самое нужно проделать для папок ol3..ol5.

    Вот собственно и все. Внутри менять права не надо т.к. там права назначены у нас для групп pedagog и children.

    ЧАСТЬ 6: Квоты пользователей

    Одной из напастей любого администратора, так или иначе обслуживающего локальную сеть в организации — это дисковое пространство сервера. Как правило его всегда не хватает. Пользователи постоянно что-то копируют в свои сетевые ресурсы, хранят неимоверное количество каких-то фотографий, документов, музыки и прочей хни, причем все это, зачастую, по нескольку копий у каждого, несмотря на общие, доступные всем, сетевые ресурсы.

    Если объемы сервера большие, сильно на это не обращаешь внимания. Ну хранят и ладно. А вот ругаться начинаешь, когда предстоят какие-то работы, например, переезд на новый сервер или новую платформу, или винчестер надо заменить и т.п. Встает вопрос о резервации пользовательских файлов «куда-то», с последующим возвратом их на место. Ну бывают такие ситуации. Во тут и начинаешь ворчать, мол стока хлама всякого, куда девать?

    Кто работает с пользователями, меня поймут. Объяснять (уговаривать) о необходимости порядка в своих ресурсах пользователей — бесполезно, особенно если эти пользователи — дети. Когда подходишь к педагогу и сообщаешь, что по рейтингу в черном списке «хламавщиков» она занимает второе место после администратора, глаза педагога округляются и произносится заветная фраза типа »Это не я, оно само!».

    Итак, если ваши пользователи не поддаются на уговоры, будем решать вопрос программными методами. Ограничим используемое пространство сервера с помощью так называемых квот.

    Квота — (от лат. quota — часть, приходящаяся на каждого) — Доля, часть, пай, норма ч.-л.

    Нас интересуют дисковые квоты. Собственно, в операционных системах, как правило, под этим подразумевается выделение некоторого объема hdd для пользователей или группы.

    Частично использовалась информация из статей этой и этой. А также очень хорошо описано использование квот здесь.

    Включение квот в Ubuntu

    Ubuntu (по крайней мере 8.04) поддерживает квотирование практически «из кароПки», для этого достаточно установить пакет quota:

    Собственно все! Вторым шагом будет активирование квот на тех разделах винчестера, где это необходимо. Для этого внесем необходимые изменения в файл /etc/fstab:

    Из листинга fstab видно, что у разделов /dev/sda5 и /dev/sda6 в дополнительных параметрах монтирования указаны опции grpquota и usrquota. Из названий этих опций можно догадаться, что первая активирует поддержку квот для групп, вторая для пользователей. Указывать можно как обе опции для разделов винчестера, так и какую-нибудь из них. Логично, что убрав эти опции, поддержка квот отключится.

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

    Итак, после перезагрузки компьютера, система готова для работы с квотами. На тех разделах НЖМД, где активированы квоты появятся файлы:

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

    Работа с квотами

    Для начала разберемся с некоторыми понятиями, а именно:

    Мягкий лимит — задает максимальное значение использования пространства файловой системы для пользователя. В комбинации с периодом отсрочки работает как граничная черта, за которой пользователь получает предупреждение о превышении своей квоты. Пользователь может продолжить работу с дисковым пространством пока не истекет период отсрочки или пока пользователь не заполнит дисковое пространство до жесткого лимита.

    Жесткий лимит — работает только при заданном периоде отсрочки. Он задает абсолютный максимум использования пространства файловой системы пользователем. При достижении жесткого лимита пользователю будет отказано в записи на диск. При таком раскладе два варианта: первый — пусть пользователь почистит свой хлам; второй — администратор сжалится и увеличит лимиты для пользователя.

    Период отсрочки — это период времени, после которого мягкий лимит принудительно ограничивает доступное пространство файловой системы для пользователя, после чего доступ на запись невозможен. Интервал времени можно указывает в секундах, минутах, часах и днях [seconds, minutes, hours, days].

    Собственно, работа с квотами в основном заключается в использовании утилиты edquota. 18) Разберем ее синтаксис и часто используемые опции:

    edquota [опции] [имя или группа пользователей]

    Опции:

    Опция Описание
    -u — Редактирование квот на файловых системах для указанного пользователя.
    Используется по умолчанию, может быть опущен.
    -g — Редактирование квот для указанной группы пользователей.
    -t — Устанавливает период времени действия мягкого лимита на всех файловых
    системах для всех пользователей. При добавлении в конце ключа -g
    — будет устанавливаться период времени для всех групп.
    -T — Устанавливает период времени действия мягкого лимита на всех файловых
    системах для указанного пользователя. При добавлении в конце ключа -g
    — будет устанавливаться период времени для указанной группы.
    -p — Распространить значения квот указанного пользователя на нескольких других
    пользователей (множественная операция).

    А собственно все. Это и есть основные опции. Теперь будем разбирать примеры их использования. Давеча мы заводили уже пользователя olga и группу pedagog, на ней и будем ставить эксперименты.

    Установка параметров квот для пользователя olga

    sudo edquota olga или sudo edquota -u olga

    При выполнении этой команды откроется редактор по умолчанию со следующим содержанием:

    Видно, что в данном листинге используются два раздела винчестера, на которых активированы квоты.

    Столбец blocks — отражает количество используемых блоков пользователем на каждом разделе. А чему собственно равен 1 блок? Судя по документации 1 блок равен 1 килобайту. 19) Грубо говоря, здесь, пользователь olga уже потратила на разделе /dev/sda5 173252*1024=177 410 048 байт, ну, или, опять же, грубо 173 252 килобайт.

    Столбец soft задает мягкое ограничение пользователю на количество блоков.

    Столбец hard задает жесткое ограничение пользователю на количество блоков. Обратите внимание, что если значения soft или hard равны нулю, то квоты для пользователя считаются отключенными.

    Столбец inodes отражает, грубо говоря, количество используемых файлов. 20)

    И последние два столбца soft и hard задают мягкое и жесткое ограничение на количество используемых файлов.

    Очевидно, что манипулируя значениями soft и hard можно выставить ограничения на использование пространства жесткого диска. Обратите внимание, что столбцы blocks и inodes не подлежат изменению. При попытке записи файла с параметрами квот с измененными blocks или inodes, будет выдана ошибка примерно следующего содержания:

    Анализируя, ничего страшного не произойдет, если размер soft и hard будут менее текущего размера используемых блоков пользователем. В этом случае доступ на запись пользователю будет ограничен моментально. Также нет ничего страшного, если размер soft окажется больше размера hard, здесь разумно предположить, что мягкий лимит в этом случае никогда не сработает, равно как он никогда не сработает и в случаях когда размер soft будет равен размеру hard.

    Итак, отредактировав необходимые параметры, записываем файл квот. Обратите внимание, что запись будет происходить в темповый (временный) файл, а затем, после проверки системой выставленных параметров, параметры квот запишутся куда надо.

    Установка параметров квот для группы pedagog

    sudo edquota -g pedagog

    При выполнении этой команды откроется редактор по умолчанию со следующим содержанием:

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

    Установка периода времени действия мягкого лимита для всех пользователей или всех групп

    При выполнении первой команды откроется редактор по умолчанию со следующим содержанием (для пользователей):

    Здесь выставляется одинаковый период времени ограничения мягкого лимита для всех пользователей системы (в первом столбце на объем данных, во втором — на количество файлов). Т.е. после достижения границы мягкого лимита, пользователю, который достиг этой границы, выдается предупреждающее сообщение, о том, что место, отведенное для него, закончилось и у него есть некоторое время (период), в течении которого он может продолжать писать на раздел винчестера, но обязан до конца этого периода удалить часть данных, так, чтобы объем пользовательских данных не превышал границу мягкого лимита.

    Период указывается в секундах, минутах, часах и днях (seconds, minutes, hours, days, ).

    Аналогично для всех групп пользователей.

    Установка периода времени действия мягкого лимита для указанного пользователя или указанной группы

    sudo edquota -T olga — Единый период времени для указанного пользователя системы
    sudo edquota -T -g pedagog — Единый период времени для указанной группы пользователей системы.

    При выполнении первой команды откроется редактор по умолчанию со следующим содержанием:

    Параметры block grace и inode grace могут принимать такие же значения как и в предыдущем случае с использование ключа -t, а также значение unset, которое отключает период для конкретного пользователя или группы. Логично, что приоритет будет у параметров конкретного пользователя (если ему задан отдельный от остальных период отсрочки).

    Аналогично и для указанной группы пользователей.

    Копирование значений существующих квот на некоторое число пользователей

    Иногда желательно установить ограничения квот на некоторый диапазон пользователей или групп. Сделать это можно с помощью ключа -p. Во-первых, установите желаемое ограничение для пользователя, а затем запустите команду

    sudo edquota -p исходный_пользователь конечный_пользователь….

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

    sudo edquota -p ol1 ol2 ol3 ol4

    Будут скопированы значения квот с пользователя ol1 на пользователей ol2, ol3, ol4.

    Если произошло превышение квоты у какого-нибудь пользователя, в столбце blocks будет стоять звездочка, как, например, в этом случае:

    Дополнительные команды по работе с квотами

    Существует ряд дополнительных утилит для работы с квотами.

    quotacheck — утилита по проверке квот. рекомендуется регулярно проводить такую проверку, а также в случаях неправильного размонтирования разделов.

    quotacheck -avug

    quotaoff -vaug — Отключение всех квот не сбрасывая их значения в нуль. Если не один из параметров -u и -g не указан, отключаются только квоты пользователей. Если указан только параметр -g, отключаются только квоты групп. Чтобы снова включить квоты, выполните с теми же параметрами команду quotaon:

    quotaon -vaug

    Чтобы включить квоты в определённой файловой системе, например, /media/Profil, выполните следующую команду:

    quotaon -vug /media/Profil

    Опять же, если не один из параметров -u и -g не указан, включаются только квоты пользователей. Если указан только параметр -g, включаются только квоты групп.

    Для создания отчёта об использовании диска необходимо запустить утилиту repquota. Например, при выполнении команды repquota /media/Profil вы получите следующее:

    Чтобы просмотреть отчёт об использовании диска по всем (параметр -a) файловым системам, в которых включены квоты, выполните команду:

    repquota -a

    Символы «- -», выводимые после имени пользователя, позволяют быстро определить, какой предел был превышен (блоков или inode). Если мягкий предел превышен, вместо тире появляется соответствующий + (плюс); при этом первый символ — (тире) представляет предел блоков, а второй — предел inode.

    ЧАСТЬ 7. Сервер печати

    Раздел на стадии редактирования

    ЧАСТЬ 8. Общий репозиторий

    Раздел в разработке

    ЧАСТЬ 9. Правовые аспекты СПО и проприетарного ПО в России

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

    В интернете правовые моменты СПО разбросаны по крупицам. Как правило, на форумах, очень часто бушуют целые дискуссии о том, что законно, а что нет. Но, к сожалению, эти дискуссии к однозначному ответу администратора так и не подводят.

    Цель данной статьи помочь администраторам подготовить для проверяющих органов как можно больше нормативных документов, дабы в случае «маски-шоу» доказать, что установленная на компьютере, к примеру, Ubuntu, не нуждается в каких-либо еще т. н. наклейках или дополнительных лицензиях, за исключением лицензий xGPL, BSD и т. п.

    Введение

    (Раздел на стадии редактирования)

    Исправления и замечания разделов

    Обсуждение статьи

    Обсуждение на форуме forum.ubuntu.ru

    Источники

    © 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
    © 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

    Источник

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Центр приложений kali linux
  • Хронология создания ос linux
  • Хранитель экрана в linux mint
  • Хранилище файлов на linux для windows сетей
  • Хранилище сертификатов linux не обнаружено