Добро Пожаловать  Ru.Board
 

Навигация
  • Главная
  • Форум
  • Темы
  • Топ лист
  • Файловый архив

  • Реклама





    Проголосуй!
    Статьи на какие темы вы бы желали видеть на нашем сайте?

    Системное администрирование Windows
    Администрирование *nix систем
    Обзоры пользовательского программного обеспечения
    Вебмастеринг: тонкости сайтостроения
    Вебмастеринг: юзабилити сайтов
    Вебпрограмминг: полезные решения
    Linux-системы: вопросы по работе
    Вопросы по аппаратной части компьютеров
    Обзоры программ для администраторов
    Компьютерная безопасность (для пользователей)
    Компьютерная безопасность (для администраторов)
    Другое


    Результаты
    Другие Опросы

    голосов: 16197

    Избранное
  • Установка Php-Nuke
  • Установка IkonBoard на локалхосте



    Форум по движку IkonBoard V.2

    Файловый архив для вебмастеров: полезные скрипты

    Форум по операционным системам: Linux, Windows, Mac

  • Поиск по сайту




    В помощь сисадмину: Администрирование пользователей в системах Unix
    Опубликовал greys 20.08.2002 19:15

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

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

    По умолчанию в любом Unix-е создается несколько привилегированных пользователей, которые владеют системными файлами и большинством процессов, запускаемых в системе. Главным и, безусловно, самым известным из таких пользователей является root (от англ. root - корень (не зла!!!)), потому что root является владельцем большинства процессов в системе, и от него зависит функциональность всей операционной системы в целом).

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

    В ОС Unix очень удобно реализована поддержка пользователей. Для того, чтобы человек мог выполнять какие-то действия с системой, администратор должен зарегистрировать его в системе - выдать ему имя и пароль и создать для него каталог, в котором пользователь будет оказываться сразу же после успешного входа в систему. И если свое имя (в системе) пользователь может говорить кому угодно, то пароль не рекомендуют даже записывать на бумажках, ибо кто-то может прознать заветное слово и выдать себя за вас, что всегда чревато неприятностями.

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

    Большинство Юникс систем не имеет никаких логических ограничений на количество одновременно зарегистрированных в системе бюджетов, но некоторые коммерческие системы накладывают ограничение на количество одновременно работающих в системе аккаунтов.

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

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

    Помимо уникальных имен все пользователи также принадлежат выбранным администратором группам. Администратору это позволяет давать (или запрещать) доступ к каким-либо ресурсам системы, не делая изменения для каждого пользователя отдельно, а манипулируя целой группой пользователей сразу.

    Собственно, для Юникс-системы ваш аккаунт - ничто иное, как два целочисленных номера - ваш личный идентификатор и идентификатор вашей группы. Им в соответствие ставятся символьные имена - для удобства, и хотя все события система регистрирует на уровне числовых идентификаторов, администратор обычно оперирует с именами пользователей и групп.

    Идентификатор пользователя называется UID - User Identifier, а идентификатор его группы - GID - Group Identifier. При каждом входе пользователя в систему, ядро Юникса регистрирует его UID и GID и выполняет все последующие процессы (программы) пользователя в соответствии с назначенными его UID и GID правами доступа.

    Администратор системы - пользователь root - имеет UID равный нулю (0), и на него не распространяются никакие ограничения системы. То есть, он может читать любой файл в системе, добавлять-удалять устройства, администрировать аккаунты пользователей и делать все остальные присущие администрированию системы действия.

    Кроме администратора, есть еще несколько идентификаторов пользователей, которые автоматически создаются системой при установке - такие как daemon (uid=1), bin (uid=2), sys (uid=3), adm (uid=4), lp, uucp, и nobody. Конкретные номера идентификаторов пользователей для этих имен, а также наличие приведенных здесь и других специальных системных аккаунтов зависят от конкретного Unix.

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

    Выжимка из файла /etc/passwd, список системных аккаунтов (взят из Solaris 9):

    root:x:0:1:Super-User:/:/sbin/sh
    daemon:x:1:1::/:
    bin:x:2:2::/usr/bin:
    sys:x:3:3::/:
    adm:x:4:4:Admin:/var/adm:
    lp:x:71:8:Line Printer Admin:/usr/spool/lp:
    uucp:x:5:5:uucp Admin:/usr/lib/uucp:
    nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
    smmsp:x:25:25:SendMail Message Submission Program:/:
    listen:x:37:4:Network Admin:/usr/net/nls:
    nobody:x:60001:60001:Nobody:/:

    С такими же целями создаются и несколько системных групп - root (или wheel в некоторых системах*) - с gid=0, other (gid=1), bin, sys, adm. Все эти группы включают вышеописанных пользователей и суперпользователя.

    *Примечание: группа wheel существует во всех BSD-системах, но описание различных веток развития Unix - это тема отдельной статьи.

    Выжимка из файла /etc/group, список служебных групп в системе:

    root::0:root
    other::1:
    bin::2:root,bin,daemon
    sys::3:root,bin,sys,adm
    adm::4:root,adm,daemon
    uucp::5:root,uucp
    mail::6:root
    tty::7:root,adm
    lp::8:root,lp,adm
    nuucp::9:root,nuucp
    staff::10:
    daemon::12:root,daemon
    sysadmin::14:

    В данной статье мы не будем рассматривать, как именно обрабатывается ядром Юникса работа конкретного пользователя, рассмотрим лишь вопросы администрирования аккаунтов - а именно, создание и удаление оных.

    Что же означает на практике создать нового пользователя системы?

    Каждый зарегистрированный пользователь Юникс имеет следующие параметры:

    • идентификатор пользователя (UID)
    Как уже говорилось выше, это уникальное для данной системы число, однозначно указывающее на пользователя.
    • идентификатор группы (GID)
    Также уникальное число, однозначно указывающее на группу пользователей.
    • пароль (password)
    Секретная комбинация буквенных, числовых и специальных символов, которые пользователь должен вводить всякий раз при входе в систему, чтобы подтвердить свою подлинность.
    • срок действия пароля (expiry date)
    Во многих системах сразу же при создании аккаунта можно включать счетчик дней - начинается отслеживание действительности аккаунта, до наступления установленного времени, когда пользователя попросят сменить пароль. Данный параметр доступен не на всех системах, поэтому следует проверить, имеется ли он у вас. Наличие файла /etc/shadow указывает на то, что параметр этот у вас поддерживается.
    Данный параметр является одним из рычагов системной политики - устанавливая его, администратор заставляет тем самым пользователей регулярно менять их пароли, и, таким образом, снижает риск несанкционированного входа в систему кого-то, узнавшего чужой пароль.
    • домашний каталог (home directory)
    При входе в систему (то есть при указывании имени пользователя и вводе правильного пароля) пользователь попадает в свой домашний каталог - место для игрищ, где он сам себе царь и бог. Обычно пользователь имеет права на создание и удаление, запись, чтение и выполнение любых файлов в своем домашнем каталоге.

    К каталогу пользователя должен иметь доступ только он сам, и, при желании, пользователи его группы (я намеренно пишу «должен», потому что это еще не факт - правила, кому и что принадлежит в системе, определяются политикой администрирования, и приводятся в исполнение пользователем root). Пользователь имеет возможность менять права на доступ к любым файлам и каталогам, расположенным в его директории, регулируя таким образом доступ других пользователей к его личным данным. Естественно, никакие установленные пользователем права доступа не применяются к пользователю root.

    • полное имя (full name, или GECOS)
    По символьному имени пользователя типа looser не очень-то много можно разобрать. Для этих целей предусмотрена возможность сопоставлять с именем пользователя его реальное имя и фамилию. Многие команды Unix, например, finger (см. ниже), опираются на эти данные при сборе информации о том или ином пользователе. В серьезных компаниях в этом поле пишется настоящее полное имя человека, владеющего аккаунтом.
    Исторически сложилось, что это поле называют еще GECOS. В литературе, особенно зарубежной, эта аббревиатура встречается довольно часто. GECOS означает General Electric Comprehensive Operating System - одна из старейших Unix-подобных систем, позднее переименованная в GCOS, где начало активно использоваться данное поле.
    Настоящее полное имя пользователя - это один из простейших вариантов заполнения данного поля. На самом деле, можно указать несколько блоков дополнительных сведений, разделяя их знаком запятой:

    name полное имя
    office номер офиса, где работает пользователь
    wphone рабочий телефон пользователя
    hphone домашний телефон пользователя

    Таким образом, запись "Mr Grrr, 115, 12345678, 87654321" в этом поле будет обозначать пользователя, чье полное имя Mr Grrr, который находится в кабинете 115, с рабочим телефоном 12345678 и домашним телефоном 87654321 (понятно, что можно ввести сюда любые данные, лишь бы разделенные запятой - поэксперементируйте, когда будет время).

    • командная оболочка (shell)
    Специальная программа, позволяющая пользователю вводить определенные команды для выполнения необходимых действий. Именно оболочка запускается в первую очередь, давая вам приглашение к вводу дальнейших команд. Из оболочки можно вызывать другие оболочки, программы или встроенные команды оболочки для выполнения каких-либо действий. Задача выбора оболочки для каждого конкретного пользователя системы ложится на плечи администратора, и потому он обязательно должен знать несколько оболочек своего Юникса, чтобы представлять себе проблемы, которые может ему создать пользователь с той или иной оболочкой. Очень часто администратор пишет скрипт или качает из интернета усеченные версии оболочек, узко специализированные на выбранной области действий в системе. Такие оболочки называются restricted shell.

    Все эти параметры о каждом пользователе записываются в специальный файл, /etc/passwd. Для пущей секретности, пароли пользователей хранится в отдельном файле, /etc/shadow или /etc/master.passwd, в зашифрованном виде.

    Файл /etc/master.passwd встречается во всех BSD-системах (например: FreeBSD, NetBSD, OpenBSD, BSDi), а файл /etc/shadow можно найти, например, в таких системах как Solaris или Linux.

    Следует иметь в виду, что порядок и количество полей в ваших файлах /etc/passwd и /etc/shadow (или /etc/master.passwd) могут отличаться от изложенного в данной статье, для полной информации обращайтесь к руководствам вашей системы с помощью команды man.

    Пример файла /etc/passwd

    root:x:0:1:Super-User:/:/usr/bin/bash
    daemon:x:1:1::/:
    bin:x:2:2::/usr/bin:
    sys:x:3:3::/:
    adm:x:4:4:Admin:/var/adm:
    lp:x:71:8:Line Printer Admin:/usr/spool/lp:
    uucp:x:5:5:uucp Admin:/usr/lib/uucp:
    nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
    listen:x:37:4:Network Admin:/usr/net/nls:
    nobody:x:60001:60001:Nobody:/:
    noaccess:x:60002:60002:No Access User:/:
    nobody4:x:65534:65534:SunOS 4.x Nobody:/:
    grrr:x:110:1::/home/grrr:/bin/bash

    Пример файла /etc/shadow

    root:f6ChQ5l9GCx1Q:6445::::::
    daemon:NP:6445::::::
    bin:NP:6445::::::
    sys:NP:6445::::::
    adm:NP:6445::::::
    lp:NP:6445::::::
    uucp:NP:6445::::::
    nuucp:NP:6445::::::
    listen:*LK*:::::::
    nobody:NP:6445::::::
    noaccess:NP:6445::::::
    nobody4:NP:6445::::::
    grrr:f6ChQ5l9GCx1Q:11658::::::

    Таким образом, в /etc/passwd хранится большая часть информации, но зашифрованный пароль хранится в файле /etc/shadow.

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

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

    Синтаксис команды простой:

    passwd

    Две попытки ввода пароля даются для того, чтобы исключить случайно набранные неправильные буквы вашего секрета. То есть, если вы хотели ввести слово «БУРАТИНО» (неважный, кстати, пароль!), а ввели «БУРЫТИНО», то при повторном вводе правильно написанного слова passwd выдаст ошибку, что пароли не совпали, и попросит ввести их два раза снова.

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

    Защита паролей в Юникс

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

    Все пароли шифруются с помощью односторонних формул, что означает, что их просто невозможно восстановить по зашифрованному результату, хранящемуся в /etc/shadow, даже зная наверняка, как работала формула шифрации.

    Простейшим примером односторонней функции является квадрат числа. Если, например, возвести числа «2» и «-2» в квадрат, то результатом обеих операций будет 4. Следовательно, даже зная, что была произведена конкретная операция - возведение в квадрат, и зная обратную ей функцию - извлечение квадратного корня - мы все равно не сможем однозначно сказать, какое же число было изначально взято, «2» или же «-2». А если функция шифрования идет немного дальше возведения числа в квадрат? А если число не одно, а их гораздо больше? Задача становится попросту неразрешимой, и единственным способом взлома паролей в Юниксе является brute-force - обычный перебор всех комбинаций символов.

    В каждом Юниксе есть стандартная функция crypt, которая берет строку как параметр и возвращает ее в зашифрованном виде. Программы-взломщики паролей перебирают все комбинации букв и цифр, вызывают для каждой комбинации функцию crypt и сравнивают полученный шифр с взятым из /etc/passwd.

    Компьютер класса P3-800 позволяет перебирать около 3000 паролей в секунду (данные могут быть не совсем точными, ибо взломом паролей я занимался давным-давно и только для того, чтобы убедиться, что взломать их перебором можно лишь за довольно долгий срок). И вот тут-то и начинаешь понимать, как даже одна лишняя буква в пароле может очень помешать хакеру подобрать ваш пароль.

    Вот таблица примерного времени, необходимого для подбора простенького пароля, состоящего только из одного регистра английского алфавита - скажем, 26 заглавных букв - из расчета скорости перебора около 3000/сек:

    3 символа - 26^3 /3000 = 5.8 секунд
    4 символа - 26^4 /3000 = 152 секунды
    5 символов - 26^5 / 3000 = 3960 секунд (66 минут)
    6 символов - 26^6 / 3000 = 102972 секунды (28 часов)
    7 символов - 26^7 / 3000 = 2677270 секунд (30 суток)
    8 символов - 26^8 / 3000 = 69609021 секунд (805 суток - более 2х лет!)

    Если же быть немного более серьезным, и использовать как строчные, так и заглавные буквы английского алфавита, то перебирать придется 56 символов для каждой позиции, и 5-символьный пароль, простую версию которого можно подобрать за 66 минут, может потребовать от нас гораздо большего времени - почти 35 часов. 8-символьный пароль с двумя регистрами английских букв может потребовать 560 лет беспрерывного перебора :))) А уж если вы и знаки препинания добавите к паролю, и цифры - то ломать его станет настолько невыгодно, что скорее всего его попробуют украсть или выслушать в сетевом траффике - но это уже тема отдельной статьи ;)

    Добавление новых пользователей

    В каждой системе Unix обязательно имеются команды администрирования пользователей - их добавления и удаления, а также изменения их свойств. Команды добавления обычно называются mkuser или useradd, а команды удаления - rmuser или userdel. В большинстве систем имеется также скрипт adduser, который является надстройкой над командой useradd и позволяет вам производить добавление пользователей с большим комфортом за счет интерактивности. Ниже мы рассмотрим несколько примеров применения команд useradd и userdel.

    В Linux системах новых пользователей добавляют с помощью команды useradd. К слову сказать, все изложенные ниже способы вызова команды useradd можно использовать без малейших изменений в системах Solaris, потому что названия всех ключей совпадают (удобно, правда?!) Простейший ее вариант -

    useradd looser

    где looser - это имя нашего пользователя, здесь вы можете поставить любое понравившееся вам самим. Данная команда выберет автоматически очередной свободный идентификатор пользователя - UID, установит ему в качестве группы по умолчанию группу вроде others, и создаст необходимые записи в файлах /etc/passwd и /etc/shadow, оставив все поля данных пустыми, ибо мы не указываем ни домашнего каталога пользователя, ни его полного имени.

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

    man useradd

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

    useradd -d /home/grrr -s /bin/bash -c "Mr Grrr" grrr

    Данная строка добавляет пользователя с именем grrr, указывая в качестве его полного имени Mr Grrr, устанавливая ему оболочку /bin/bash и показывает, что его домашним каталогом будет считаться /home/grrr. Свежесозданный пользователь будет принадлежать группе other, которая является группой по умолчанию.

    При добавлении таким методом следует помнить две вещи:

    1. Каталог пользователя не проверяется при создании пользователя, и это ваша обязанность - проследить, что он существует и принадлежит свежесозданному пользователю. Если вы создаете каталог позже (неважная практика, кстати!), то следует создать его как можно быстрее и проследить, что он принадлежит именно нашему пользователю:

    mkdir /home/grrr

    создать каталог /home/grrr

    chown grrr /home/grrr

    сделать пользователя grrr владельцем каталога /home/grrr.

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

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

    Администратор со стажем укажет еще и идентификатор пользователя и группу пользователя, в командной строке, например:

    useradd -u 12345 -g newgroup -d /home/grrr -s /bin/bash -c "Mr Grrr" grrr

    где 12345 - это UID создаваемого пользователя, а newgroup - группа, к которой он должен принадлежать. В отличие от домашнего каталога, наличие UID или группы в системе всегда проверяется. Это означает, что вам не дадут создать пользователя с идентификатором, который уже принадлежит другому зарегистрированному пользователю системы. И не получится добавить пользователя, указав его принадлежность к несуществующей группе. Также вам не дадут добавить пользователя с именем уже существующего пользователя.

    Вот в общем-то и все основы создания пользователей. Как же проверить, что пользователь создан, и как именно обстоят его дела? Используйте следующие команды:

    finger grrr

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

    Получится примерно такой блок информации:

    Login name: grrr In real life: Mr Grrr
    Directory: /home/grrr Shell: /bin/bash
    Never logged in.

    Могут быть и другие строчки, но они нас не интересуют.

    id grrr

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



    Ответом будет что-то вроде:

    uid=12345(grrr) gid=1(other)

    Удаление пользователей

    Удалить пользователя гораздо проще и быстрее ;) Для этого используется команда userdel (как и в предыдущем разделе, точно в таком же виде команда присутствует и используется в системе Solaris).
    Простейший вариант команды:

    userdel grrr

    удалит пользователя из системы, лишив его возможности входить в систему, но оставит нетронутым его домашний каталог и все файлы в нем. Так обычно поступают с провинившимися пользователями, которых стирают из системы, но оставляют каталоги, чтобы потом без спешки посмотреть, что же там лежало. Если же надоедливый юзер у вас в печенках сидит, то следует использовать ключик -r, который еще и домашний каталог потрет:

    userdel -r grrr

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


    КомментироватьВерсия для печати

     
    Категории
  • В помощь сисадмину
  • Все о софте
  • Вебмастеру
  • Игры
  • Hardware
  • О сайте
  • Программирование
  • Операционные системы
  • IkonBoard
  • InvisionBoard
  • Скрипты в примерах
  • Php-Nuke
  • Цифровое изображение
  • Юмор

  • Ссылки по теме
  • Ещё о В помощь сисадмину
  • Новости от greys


    Популярная статья в категории В помощь сисадмину:

    Групповые политики Active Directory



  • This web site was made with PHP-Nuke