Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
4.2.2. Редактирование группы Для редактирования параметров группы можно напрямую изменять файл /etc/group, но я рекомендую лучше использовать команду groupmod . У этой команды такие же ключи, что и у groupadd , но она не добавляет группу, а изменяет параметры уже существующей. 4.2.3. Удаление групп Теперь рассмотрим, как можно удалить группу. Для этого используется команда groupdel : groupdel имя При выполнении этой команды вы должны самостоятельно проверить все файлы , владельцем которых является удаляемая группа, и при необходимо- сти изменить собственника, иначе к таким файлам сможет получить доступ только администратор. Надо еще заметить, что группу нельзя удалить, если в ней есть пользователи. Сначала их нужно вывести из группы, и только потом выполнять команду groupdel 4.3. Управление пользователями Для добавления пользователя используется команда useradd . С ее помощью также можно изменить значения по умолчанию, которые будут присваивать- ся учетной записи. Команда useradd выглядит следующим образом: useradd параметры имя Управление доступом 117 Параметров очень много, большинство из них вам знакомо по файлу /etc/passwd, который мы рассматривали в главе 3. Вот наиболее часто исполь- зуемые аргументы: -c комментарий — простое текстовое описание, которое может быть любым ; -d каталог — домашний каталог пользователя; -e дата — дата отключения учетной записи, после которой пользователь станет неактивным, вводится в формате ГГГГ-ММ-ДД; -f число — количество дней до отключения записи навсегда. Если ука- зать 0, то учетная запись будет считаться некорректной сразу после уста- ревания пароля; -g группа — основная группа, которой будет принадлежать пользователь. Можно указывать как имя, так и идентификатор. В Red Hat каждый поль- зователь принадлежит какой-либо группе; -G группа[,…] — дополнительные группы, в которых будет включен пользователь . Имена групп перечисляются через запятую; -m — ключ для создания домашнего каталога пользователя. В созданную директорию будут скопированы все файлы из /etc/skel; -M — не создавать домашний каталог; -r — если указать этот параметр, то в качестве идентификатора будет вы- брано число из системной области; -p пароль — зашифрованный пароль, который можно получить с по- мощью команды crypt ; -s программа — командный интерпретатор, который будет обрабатывать директивы пользователя; -u идентификатор — идентификатор, который должен быть уникальным. Если его не устанавливать, то система выберет свободное значение. Самый последний параметр — имя создаваемой учетной записи. Давайте рассмотрим , как можно добавить нового пользователя по имени robert, для которого все значения будут установлены по умолчанию: useradd robert cat /etc/passwd В первой строке мы создаем нового пользователя по имени robert. Вторая строка выводит на экран содержимое файла /etc/passwd, где хранится инфор- мация обо всех учетных записях. Заключительная строка в нем будет выгля- деть следующим образом: robert:x:501:501::/home/robert:/bin/bash Глава 4 118 Вспомните формат этого файла, который мы рассматривали в разд. 3.3.1. Первый параметр — это имя. Затем стоит пароль, который спрятан в теневом файле , поэтому здесь указано x . Далее следуют идентификаторы пользовате- ля и группы. Так получилось, что в обоих случаях свободными оказались но- мера , равные 501, поэтому идентификаторы одинаковы, но это далеко не все- гда так. Потом идет домашний каталог пользователя. По умолчанию все директории создаются в папке /home и соответствуют имени пользователя. Давайте посмотрим файл /etc/shadow. Обратите внимание, что в строке поль- зователя robert стоит два восклицательных знака, мы не указывали пароль и войти в систему не можем. Я и не советую его задавать при создании поль- зователя . Это лишние мучения, потому что нужно шифровать его функцией crypt , при этом нет гарантии сложности пароля. Лучше изменить его после создания пользователя с помощью команды passwd : passwd robert В ответ на это вы увидите приглашение ввести пароль и пояснения о необхо- димости делать его сложным. Сообщение, которое выдает программа, выгля- дит следующим образом: Changing password for user robert. You can now choose the new password or passphrase. A valid password should be a mix of upper and lower case letters, digits and other characters. You can use an 8 character long password with cha- racters from at least 3 of these 4 classes, or a 7 character long pass- word containing characters from all the classes. Characters that form a common pattern are discarded by the check. A passphrase should be of at least 3 words, 12 to 40 characters long and contain enough different characters. Alternatively, if noone else can see your terminal now, you can pick this as your password: "trial&bullet_scare". Что по-русски звучит примерно следующим образом: Изменяется пароль для пользователя robert. Сейчас вы можете выбрать новый пароль или идентификационную фразу. Хороший пароль должен состоять из заглавных и прописных букв, цифр и дру- гих знаков. Вы можете ввести пароль длиной в 8 символов с использованием значений как минимум 3 из 4 указанных классов или пароль из 7 символов, сочетающий знаки из всех классов. Пароли, содержащие часто используемые шаблоны, будут отвергнуты. Идентификационная фраза должна состоять из 3 слов общей длиной от 12 до 40 символов и содержать разнообразные знаки. В качестве альтернативы, если в данный момент никто кроме вас не смотрит на ваш терминал, можно использовать пароль trial&bullet_scare. Как видите, команда passwd знакомит нас с основными правилами создания сложных паролей и даже предлагает пример, который достаточно длинный Управление доступом 119 и содержит различные символы. Но я не стал бы его использовать, потому что он состоит из вполне читаемых слов. Злоумышленник может запустить подбор паролей по словарю, где различные слова объединяются, как это де- лает passwd . Такая процедура займет значительно больше времени, чем под- бор пароля из одного слова, но все же намного меньше, чем подбор шифра вроде OLhslu_9&Z435drf. Для нахождения этого пароля словарь не поможет, а полный перебор всех возможных вариантов отнимет годы. Но если не хочется запоминать слишком сложный пароль, то можно и объе- динить два слова, это будет намного лучше, чем одно простое словечко в ка- честве пароля. А давайте посмотрим, что сейчас находится в домашнем каталоге нового пользователя . Вы думаете, что там ничего нет? Проверим. Перейдите в ката- лог /home/robert или выполните следующую команду: ls -al /home/robert Ключ -a заставляет отображать все файлы (в том числе и системные), а ключ -l выводит подробную информацию. Результат выполнения такой команды должен выглядеть примерно следующим образом: drwx------ 3 robert robert 4096 Nov 26 16:10 . drwxr-xr-x 5 root root 4096 Nov 26 16:21 .. -rw-r--r-- 1 robert robert 24 Nov 26 16:10 .bash_logout -rw-r--r-- 1 robert robert 191 Nov 26 16:10 .bash_profile -rw-r--r-- 1 robert robert 124 Nov 26 16:10 .bashrc -rw-r--r-- 1 robert robert 2247 Nov 26 16:10 .emacs -rw-r--r-- 1 robert robert 118 Nov 26 16:10 .gtkrc drwxr-xr-x 4 robert robert 4096 Nov 26 16:10 .kde Обратите внимание, что в директории 5 файлов и одна директория. Самое интересное находится в третьей и четвертой колонках, где располагаются имя и группа владельца файла соответственно. В обоих столбцах почти везде указано имя robert. Если пользователя с таким именем мы только что созда- ли , то группу — вроде бы не создавали. Но вспомните, в разд. 4.2 мы говори- ли , что если при создании пользователя не указывается группа, то автомати- чески формируется группа с таким же именем, что и учетная запись, и туда сразу же помещается все необходимое о новом пользователе. Еще один нюанс. Папка с именем из двух точек (..), указывающая на роди- тельский каталог, принадлежит root. Почему? Пользователь robert — владе- лец текущей директории /home/robert (он здесь хозяин), но каталог выше, /home, вне его прав, он принадлежит пользователю root, так что папка .. также имеет владельца root. Глава 4 120 Все файлы и папки, которые принадлежат учетной записи robert, доступны для чтения и записи. Пользователи группы robert и все остальные могут только просматривать информацию, а разрешения на изменение у них нет. 4.3.1. Файлы и папки нового пользователя Откуда берутся файлы в папке нового пользователя? При формировании учетной записи в соответствующую домашнюю папку копируются все файлы и подкаталоги из /etc/skel. Давайте создадим свой файл в этой директории и посмотрим, попадет ли он в папку нового пользователя? Чтобы ничего не выдумывать , выполним следующую директиву: ls >> /etc/skel/text Здесь задается команда ls для просмотра содержимого текущего каталога. Потом идут два символа >> и имя файла text в папке /etc/skel. Такая запись означает , что результат выполнения команды должен быть помещен в ука- занный файл. Если файл не существует, то он будет создан. Таким образом, мы подготовили в нужной директории новый файл, содержимое которого нас не особо волнует. Теперь добавляем нового пользователя и просматриваем содержимое его папки : useradd Denver ls -al /home/Denver В результате вы увидите, что созданный нами в каталоге /etc/skel файл был скопирован в папку нового пользователя. Но в директориях уже существую- щих пользователей этого файла не появится. Эту полезную особенность я использую достаточно часто, чтобы сразу наде- лить нового пользователя правилами нахождения в системе, необходимыми ему файлами, документацией. Например, когда я работал на фирме в торго- вой компании, то в каталог пользователей автоматом помещался файл с пра- вилами пользования компьютером, где я собрал наиболее часто задаваемые пользователями вопросы и ответы на них. Среди файлов, копируемых в каталог нового пользователя, есть bash_profile. Это профиль командного интерпретатора /bin/bash. В нем можно настраивать некоторые параметры, в том числе и маску. В разд. 4.1 мы говорили о правах, которые назначаются всем новым файлам пользователя (далеки от идеала), и научились понижать их с помощью команды umask Зайдите под учетной записью robert и посмотрите ее маску с помощью команды umask . Обратите внимание, что она равна 0002. То есть мы в разд. 4.1 изменили свою маску, а robert получил другую, которую надо изменить. Если Управление доступом 121 вы забудете это сделать, то могут возникнуть проблемы. Чтобы этого не про- изошло , я рекомендую добавить в конец файла .bash_profile строку: umask 0077 Лучше всего это сделать в файле /etc/skel/.bash_profile, потому что он копи- руется во все папки новых пользователей, и можно быть уверенным, что все они получат нужную маску. Для повышения безопасности я не рекомендую присваивать директориям имена учетных записей. При добавлении пользователя robert по умолчанию для него будет создан каталог /home/robert. Такое соответствие может сыг- рать злую шутку. Если злоумышленник узнает директорию, то он легко смо- жет определить имя пользователя, которому она принадлежит, и наоборот. При создании пользовательских директорий достаточно даже просто доба- вить к имени какой-либо префикс, и это уже может усложнить задачу зло- умышленнику . Да, я бы не назвал данную проблему большим упущением в безопасности, но все же, любая предсказуемость не есть хорошо. 4.3.2. Изменение настроек по умолчанию Давайте теперь посмотрим, откуда берутся значения по умолчанию. Все это хранится в файле /etc/default/useradd. Взглянем на содержимое этого файла: # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel Единственный комментарий, который я хочу сделать сейчас, — это параметр GROUP . Он равен 100 , и по идее все новые пользователи должны попадать в эту группу. Но, как мы видели, это не так. В разд. 4.3 мы создали пользова- теля robert, и его идентификатор пользователя и группы был равен 501. В Red Hat этот параметр игнорируется, и по умолчанию создается новая группа , именно это мы и наблюдали. В других дистрибутивах этот параметр может работать, поэтому проверьте эту возможность, чтобы не оказаться в неудобном положении. Номер 100 присваивается пользовательской группе, у которой по умолчанию очень мало прав. Это как гостевой пароль, который позволяет только про- сматривать файлы. Глава 4 122 Файл /etc/default/useradd можно редактировать вручную или воспользоваться командой useradd для изменения значений по умолчанию. Чтобы внести из- менения с ее помощью, нужно сразу после имени команды указать ключ -D После этого могут идти следующие опции: -g — изменить группу; -b — установить домашний каталог; -f — время до отключения; -e — дата отключения; -s — оболочка (интерпретатор команд). Я советую вам не игнорировать возможность указания времени действия учетной записи. Допустим, что к вам пришли с инспекцией и просят дать доступ к базе данных или определенным файлам. Создайте для проверяющих нового пользователя и установите время жизни в 1 день (или более, если ин- спекция приехала надолго). Теперь вам не надо напрягать память или фикси- ровать в блокноте, что в определенный день требуется удалить такую учет- ную запись, потому что она сама станет неактивной. Некоторые администраторы плодят временных пользователей, забывая их удалить . А ведь это достаточно большая дыра в безопасности, так как эти учетные записи чаще всего имеют простой пароль. Действительно, зачем за- поминать (на один-два дня) что-то типа opihvgdjwbe. Отключив запись (ав- томатически или вручную), вы закрываете один из проходов в вашу систему и сокращаете количество лазеек. Когда вы возвращаетесь домой, то обяза- тельно закрываете за собой дверь для собственной безопасности. В случае с ОС нужно поступать таким же образом, и, проводив временного гостя, нужно обязательно запереть дверь или замуровать ее (удалить из системы). 4.3.3. Редактирование пользователя Для редактирования параметров учетной записи можно напрямую корректи- ровать файл /etc/passwd, но я советую лучше использовать команду usermod У нее такие же ключи, что и у useradd , но она не создает пользователя, а из- меняет параметры уже существующего. С помощью usermod вы можете добавлять уже имеющегося пользователя в ранее созданную группу. Давайте проделаем такую процедуру с учетной записью robert и определим ее в группу root. Это позволит пользователю ro- bert выполнять некоторые административные функции: usermod -G root robert Управление доступом 123 Здесь мы выполняем команду с ключом -G . Этот ключ позволяет указать, членом каких групп должен быть пользователь. Можно указать несколько групп , разделенных запятыми. В данном случае только одна группа root. Для получения более подробной информации о команде usermod выполните команду : man usermod 4.3.4. Удаление пользователя Для удаления пользователя применяется команда userdel . В качестве пара- метра передается только имя учетной записи, которую надо удалить, и можно распрощаться с ней навсегда. Например: userdel Danver Если пользователь в этот момент находится в системе, будет выдано сообще- ние об ошибке. Необходимо учитывать, что удаление пользователя не уничтожает его до- машний каталог, вы должны сделать это вручную. Если же указать в команде ключ -r , то вместе с пользователем будут удалены и его файлы в домашней директории : userdel -r Danver Никогда не указывайте этот ключ. Выполняйте операцию только вручную, просмотрев содержимое каталога и убедившись, что там нет нужных файлов. К тому же, если для пользователя была автоматически создана группа и в ней никого больше нет, то можно удалить и ее, выполнив команду groupdel 4.3.5. Настройка процедуры добавления пользователей Для полного понимания процесса создания учетных записей нам нужно по- знакомиться еще с файлом /etc/login.defs. В нем хранятся настройки, которые будут использоваться при добавлении пользователей. Содержимое файла можно увидеть в листинге 4.1. Листинг 4.1. Файл /etc/login.defs # *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail Глава 4 124 # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # Password aging controls: # #PASS_MAX_DAYS Maximum number of days a password may be used. #PASS_MIN_DAYS Minimum number of days allowed between password changes. #PASS_MIN_LEN Minimum acceptable password length. #PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # # Min/max values for automatic uid selection in useradd # UID_MIN 500 UID_MAX 60000 # # Min/max values for automatic gid selection in groupadd # GID_MIN 500 GID_MAX 60000 # # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). # #USERDEL_CMD /usr/sbin/userdel_local # # If useradd should create home directories for users by default Управление доступом 125 # On RH systems, we do. This option is ORed with the -m flag on # useradd command line. # CREATE_HOME yes Ряд содержащихся здесь настроек можно использовать для повышения безо- пасности . Рассмотрим основные параметры файла: MAIL_DIR — директория, в которой будет храниться почта пользователей; PASS_MAX_DAYS — максимальный срок жизни пароля; PASS_MIN_DAYS — минимальный срок жизни пароля; PASS_MIN_LEN — минимальная длина пароля (используется только в коман- де passwd и игнорируется в useradd ). В большинстве дистрибутивов здесь будет стоять 5, но я рекомендую поставить 8. В этом случае нельзя будет установить любимый большинством пользователей пароль типа qwerty; PASS_WARN_AGE — срок (в днях) до окончания действия пароля, когда об этом нужно предупредить пользователя; UID_MIN — минимальный идентификатор пользовательских учетных записей ; UID_MAX — максимальный идентификатор пользовательских учетных записей ; GID_MIN — минимальный идентификатор пользовательских групп; GID_MAX — максимальный идентификатор пользовательских групп; CREATE_HOME — признак создания пользовательской директории (значение параметра YES используется по умолчанию). |