Главная страница
Навигация по странице:

  • 4.1. Права доступа

  • 4.1.1. Назначение прав

  • 4.1.2. Владелец файла

  • 4.1.3. Правила безопасности

  • 4.1.4. Права по умолчанию

  • 4.1.5. Права доступа к ссылкам

  • 4.2. Управление группами

  • 4.2.1. Добавление группы

  • Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69


    Скачать 3.69 Mb.
    НазваниеМихаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
    Дата13.03.2022
    Размер3.69 Mb.
    Формат файлаpdf
    Имя файлаlinux_glazami_xakera_3-e_izd.pdf
    ТипДокументы
    #394477
    страница10 из 35
    1   ...   6   7   8   9   10   11   12   13   ...   35
    Глава 4
    Управление доступом
    Каждый пользователь должен работать в системе под своей учетной записью.
    Это позволит вам обезопасить свои файлы от чужого вмешательства и по системным журналам определить, когда и кем были произведены разруши- тельные действия.
    Обычному пользователю вы должны выделять ограниченные права, которые позволят выполнять только необходимые действия. Кроме того, вы должны минимизировать количество пользователей с большими привилегиями, по- тому что такие учетные записи требуют особо пристального внимания и на- блюдения
    . Если под привилегированной учетной записью вошли в систему с
    компьютера, где владелец записи не мог находиться, то это укажет на по- тенциальную опасность или взлом. Некоторые считают, что в Linux только один администратор root, но это не так. Root — это только имя, а админист- раторов может быть очень много.
    Если вы являетесь администратором на предприятии, то должны следить за актуальностью записей. После увольнения сотрудника необходимо удалить его учетную запись, чтобы, недовольный увольнением, он не уничтожил важные данные. Я в своей недолгой работе администратора уже встречался с
    такими фактами, правда, всегда мщением занимались бывшие администра- торы
    , но мне от этого легче не становилось.
    Для работы с командами управления доступом вы должны обладать правами администратора
    . Для этого можно войти в систему как пользователь root или использовать команду su
    . В разд. 4.16 мы рассмотрим еще один способ — использование утилиты sudo.
    А
    теперь перейдем к сути проблемы.

    Глава
    4
    108
    4.1.
    Права
    доступа
    Давайте вспомним команду ls -al
    . Она возвращает список файлов в сле- дующем виде: drwx------ 3 Flenov FlenovG 4096 Nov 26 16:10 . drwxr-xr-x 5 root root 4096 Nov 26 16:21 ..
    -rwxr-xr-- 1 Flenov FlenovG 24 Nov 26 16:10 test
    Как мы уже знаем, первая колонка (занимает 10 символов) — это права дос- тупа
    . Давайте рассмотрим, из чего она состоит. Первый символ указывает на тип записи. Здесь может быть одно из следующих значений:
    ˆ
    дефис
    (
    -
    ) — обычный файл;
    ˆ
    буква d
    — каталог;
    ˆ
    буква l
    — символьная ссылка;
    ˆ
    буква s
    — сокет;
    ˆ
    буква p
    — файл FIFO (First in first out, первый вошел, первый вышел).
    После этого в каждой строке идут три группы символов rwx
    , определяющих права доступа для различных категорий пользователей:
    ˆ
    первая тройка — владельцу файла;
    ˆ
    вторая
    — пользователям, входящим в группу владельца;
    ˆ
    последняя
    — всем остальным.
    Каждая такая группа состоит из трех символов: r
    (чтение), w
    (запись) и x
    (вы- полнение
    ). Наличие буквы говорит о разрешении соответствующего действия
    Вернемся к нашему примеру. Первая строка содержит права доступа drwx------.
    Первый символ d
    , значит это директория. Потом идут три сим- вола rwx
    , то есть хозяин файла может читать, записывать и исполнять дирек- торию
    . Вместо остальных шести символов стоят знаки дефиса, значит, ни у
    пользователей группы
    FlenovG, ни у всех остальных никаких прав нет.
    Вторая строка — drwxr-xr-x
    . Это снова директория. Потом стоит тройка символов rwx
    , а значит, владельцу разрешены все операции. Следующая тройка
    , соответствующая группе, равна r-x
    , а стало быть, возможно чтение и
    исполнение, но не запись. Последняя тройка указывает, что всем осталь- ным пользователям также доступно только чтение и исполнение.
    Последняя строка в примере содержит права доступа
    -rwxr-xr-- для файла
    (первый символ — знак тире). Хозяин файла имеет полный доступ к нему
    (первая тройка rwx
    ). Пользователи группы могут читать и выполнять файл,

    Управление
    доступом
    109
    но не могут его изменять (вторая тройка r-x
    ). Все остальные могут только читать файл (последняя тройка r--
    ).
    Права можно воспринимать и как последовательность нулей и единиц. Если в
    определенном месте стоит 1 (указан один из символов r, w или x), то опера- ция разрешена, а если 0 (указан дефис) — действие запрещено. Давайте по- пробуем записать права rwxr-xr-- в виде нулей и единиц. Запишите вместо букв единицы, а вместо тире — нули. Должно получиться 111101100. Разо- бьем эту комбинацию на три части: 111, 101 и 100. Теперь каждую тройку переведем в восьмеричную систему по следующей формуле:
    Цифра1 * 4 + Цифра2 * 2 + Цифра3
    У
    нас получатся три цифры 7, 5, и 4, которые будем рассматривать как деся- тичное число 754. Запомните его, оно нам пригодится при назначении прав на файлы и каталоги. Чтобы вам в дальнейшем было проще регламентиро- вать доступ, предлагаю все возможные варианты значений для отдельного разряда числа:
    ˆ
    0 — запрещено все;
    ˆ
    1 — разрешено выполнение;
    ˆ
    2 — разрешена запись;
    ˆ
    3 — разрешены запись и выполнение;
    ˆ
    4 — разрешено чтение;
    ˆ
    5 — разрешены чтение и выполнение;
    ˆ
    6 — разрешены чтение и запись;
    ˆ
    7 — разрешено все.
    Попробуйте теперь с помощью этого списка определить возможности, ко- торые предоставляет число 754. Каждый разряд нужно рассматривать в от- дельности
    . Сравните полученный результат с символьным представлением rwxr-xr--
    , из которого мы получили с помощью перевода число 754. Должно выйти одно и то же. Если все получилось, значит, мы можем поднять стакан компота за здравие тех умных людей, которые придумали такую простую и
    удобную систему распределения прав. Да, она не идеальна, но вполне рабо- тоспособна
    В
    Н И МА Н И Е
    !
    Для того чтобы иметь право создавать или удалять файлы
    , необходимо иметь разрешение записи на директорию
    Это немного сбивает с
    толку начинающих администраторов
    , так как им непонятно
    , почему при наличии всех прав на файл его нельзя удалять

    Глава
    4
    110
    4.1.1.
    Назначение
    прав
    Для изменения режима доступа на объекты файловой системы используется команда chmod
    . В ней можно указывать новые права на объект как в сим- вольном
    (применяется для изменения относительно текущего состояния), так и
    в числовом виде (абсолютное задание). Для начала рассмотрим символь- ный режим: chmod параметры права файл
    Параметры могут включать комбинацию следующих значений:
    ˆ
    u
    — изменить права владельца;
    ˆ
    g
    — изменить права группы;
    ˆ
    o
    — изменить права остальных пользователей;
    ˆ
    a
    — изменить все права (то же самое, что передать значение ugo
    ).
    Перед указанием прав можно задать режим их изменения относительно су- ществующих
    :
    ˆ
    +
    — добавить;
    ˆ
    -
    — удалить;
    ˆ
    =
    — заменить новыми (старые значения будут уничтожены).
    После этого устанавливается режим доступа:
    ˆ
    r
    — чтение;
    ˆ
    w
    — запись;
    ˆ
    x
    — выполнение;
    ˆ
    X
    — выполнение, если файл является каталогом или уже имеет аналогич- ные права для какого-либо пользователя;
    ˆ
    S
    — SUID- или SGID-бит (см. разд. 4.5);
    ˆ
    t
    — sticky-бит. В этом случае только владелец файла и каталога сможет удалить его (см. разд. 4.4);
    ˆ
    u
    всем пользователям, как и у владельца;
    ˆ
    g
    — всем пользователям, как и у группы;
    ˆ
    o
    — всем пользователям, как и у остальных пользователей.
    В
    случае с числовым представлением команда выглядит следующим об- разом
    : chmod права файл

    Управление
    доступом
    111
    Права передаются в виде восьмеричного числа из четырех разрядов:
    1.
    Первый разряд определяет дополнительный бит и может принимать одно из значений:

    1
    — бит принадлежности;

    2
    — бит SGID;

    4
    — бит SUID.
    Если эти биты не надо устанавливать, этот разряд можно опустить.
    2.
    Права пользователя. Это число может быть от 0 до 7 включительно.
    3.
    Права группы. Это число снова может быть от 0 до 7.
    4.
    Права остальных пользователей. Как вы думаете, какие значения может принимать параметр? Ну конечно же, от 0 до 7.
    Например
    , мы хотим, чтобы владелец и группа имели все права (число 7) на файл text, а остальные пользователи могли его только выполнять (число 1).
    Команда будет выглядеть следующим образом: chmod 771 text
    Число
    771 в символьном виде соответствует правам rwxrwx--x
    . Следующая команда отменит возможность чтения файла у группы: chmod g-r text
    После этой команды права доступа на файл станут rwx-wx--x
    . Теперь давайте запретим для всех запуск файла. Для этого можно выполнить команду: chmod ugo-x text или chmod a-x text
    После наших манипуляций права доступа на файл станут rw--w----
    4.1.2.
    Владелец
    файла
    Для изменения владельца файла существует команда chown
    : chown имя файл
    Через параметр имя определяется пользователь, которому нужно передать права на указанный файл. Например, давайте сделаем владельцем файла test администратора root. Для этого нужно выполнить следующую команду: chown root test
    Изменить можно и группу, к которой принадлежит файл. Для этого выполни- те команду chgrp
    : chgrp имя файл

    Глава
    4
    112
    Здесь задается имя группы, которой предоставляются права на указанный файл
    . Например, для файла test укажите группу администратора root с помо- щью такой команды: chgrp root test
    4.1.3.
    Правила
    безопасности
    При назначении прав на доступ к файлам и папкам вы должны следовать принципу минимализма, описанному в разд. 2.10.1. Чтобы это правило дей- ствовало
    , по умолчанию должно быть запрещено все. Открываем доступ только на то, что необходимо, и не даем лишних прав. Если файл не должен быть виден пользователю, то нельзя разрешать даже его чтение.
    Любые лишние права могут оказаться фатальными для безопасности систе- мы не только с точки зрения взлома, но и утечки информации. Например, файлы бухгалтерской отчетности должны быть доступны только тем, кто с
    ними работает. Если показать эти документы всем, то финансовые данные, возможно
    , станут достоянием общественности, и это нежелательным образом отразится на благосостоянии компании.
    Самое главное для защиты вашей системы — не дать пользователям возмож- ность изменять системные файлы. В Linux основные конфигурационные файлы находятся в каталоге /etc. Только администратор root должен иметь право их модифицировать. Производители дистрибутивов настраивают сис- тему по умолчанию именно так, и не следует повышать статус пользователей без особой надобности.
    4.1.4.
    Права
    по
    умолчанию
    Когда пользователь создает новый файл или директорию, то им назначаются права по умолчанию. Давайте разберем это на примере. Для создания файла выполним команду ls и перенаправим вывод в файл: ls -al >> testfile
    Теперь проверим права на этот файл с помощью команды ls —al
    . Должно получиться
    -rw-r--r--
    , то есть владелец может читать и изменять файл, а
    пользователи группы и все остальные — только просматривать. В старых системах и некоторых дистрибутивах права могут оказаться
    -rw-rw-r--
    , а
    значит, пользователи группы тоже смогут корректировать файл. Такие пра- ва нарушают главное правило безопасности. Но в любом случае все получа- ют возможность читать файл. Это разрешено.
    Такая политика неверна, потому что если вы создадите файл, который хранит конфиденциальные данные, то информация будет доступна для всеобщего

    Управление
    доступом
    113
    обозрения
    . И если вы забудете понизить права, то любой сможет увидеть и
    прочитать файл.
    Ситуацию можно изменить, если понимать, как создаются права для нового файла
    . Они рассчитываются на основе маски, текущее значение которой определяется командой umask
    . Если выполнить ее после установки системы, будет получено значение
    0022
    или
    002
    Посмотрим
    , как маска влияет на регламентацию доступа. По умолчанию пра- ва для файлов устанавливаются в значение 666 минус маска, а для директо- рий
    — 777 минус маска.
    Теперь ясно, что если маска равна
    002
    , то для нового файла будут установле- ны права 666 − 002 = 664, а это соответствует
    -rw-rw-r--
    , а при значении
    0022
    формула изменится на 666 − 0022 = 644, что будет означать
    -rw-r--r--
    Для директорий расчет аналогичный, и при маске, равной 002, по умолчанию будут устанавливаться права 777 − 002 = 775 (
    drwxrwxr-x
    ). В случае с маской
    0022 значение определяется как 777 − 022 = 755, а это соответствует правам drwxr-xr-x
    , то есть все пользователи смогут просматривать директории и
    увидят содержащиеся в ней файлы.
    Все это не есть хорошо. Если владелец должен иметь доступ, достаточный для полноценной работы с файлами и директориями, то остальные вообще не должны иметь прав. Эту ситуацию можно исправить изменением маски.
    Я
    рекомендую установить ее в 077. В этом случае для директорий права будут определены как 777 − 077 = 700 (или drwx------
    ), а для файлов —
    666 − 077 = 600 (или
    -rw-------
    ). Тогда доступ к файлу имеет только владе- лец
    . Все остальные — отдыхают.
    При расчете прав на файл можно подумать, что я ошибся, ведь 666 − 077 не равно
    600. Почему же так получилось? Просто вычитание происходит пораз- рядно
    , то есть первая цифра 6 в числе минус первая цифра 0 в маске, затем операция производится со вторыми цифрами (6 − 7), и т. д. Если какой-либо результат получается отрицательным, то он заменяется нулем.
    Вот такое положение дел нас уже устраивает. Чтобы установить новую мас- ку
    , выполните команду umask маска
    . В нашем случае это будет umask 077
    4.1.5.
    Права
    доступа
    к
    ссылкам
    В
    разд. 3.1.3 мы говорили о жестких и символьных ссылках на файлы. Для начала проверим права на жесткие ссылки:
    913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 1.txt
    913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 link.txt

    Глава
    4
    114
    Как видите, права абсолютно идентичны. Я надеюсь, что вы другого и не ожидали
    , ведь у жестких ссылок одинаковые дескрипторы.
    С
    символьными ссылками дело обстоит куда хуже. Вот пример основного файла и символьной ссылки на него из того же разд. 3.1.3:
    913021 -rw-r--r-- 1 root root 519 Feb 22 12:19 link.txt
    913193 lrwxrwxrwx 1 root root 8 Feb 22 12:40 symbol.txt -> link.txt
    Первая строка содержит информацию о файле, а вторая — о символьной ссылке на него. Как видите, у ссылки открыт абсолютно полный доступ.
    Если создать ссылку для файла /etc/shadow и не изменить ее права, то мож- но попрощаться с паролями, их украдут или обнулят. Помните, что лю- бая операция по изменению файла символьной ссылки затрагивает непо- средственно сам файл? Если уже забыли, то стоит запомнить или на руке выжечь
    Если вы решили использовать символьные ссылки, то всегда помните осо- бенность формирования прав доступа на файлы. Можете даже выбить на мо- ниторе надпись: "Ссылки на файлы создаются с полными правами!!!"
    4.2.
    Управление
    группами
    Что такое группы? Допустим, что в вашей сети 1000 пользователей, 500 из которых должны иметь доступ к файлам бухгалтерской отчетности. Как по- ступить
    ? Можно каждому из 500 пользователей назначить права на нужный файл и забыть об этом до определенного времени. А теперь представим, что нужно отменить это разрешение. Опять выполнять 500 команд для каждого файла
    ? А может быть писать собственную программу? Оба способа неудоб- ны и требуют больших усилий.
    И
    слава богу, что в Linux нельзя просто так дать пользователю право на файл, это можно только в Windows с использованием списков ACL (Access Control
    List, список контроля доступа). Что-то подобное пытаются реализовать в
    Linux, но пока подобные шутки не получили популярности.
    Вместо этого можно объединить многих пользователей в группу, а уже ей дать право на использование определенного файла. Впоследствии, если нуж- но запретить доступ, то одной командой отключаем разрешение для группы, и
    все 500 пользователей больше не смогут работать с файлом. Удобно? Даже очень
    В
    ОС Red Hat Linux все пользователи приписываются к какой-либо группе.
    Если при введении новой учетной записи группа не указана, то она будет создана по умолчанию под именем пользователя.

    Управление
    доступом
    115
    4.2.1.
    Добавление
    группы
    Для создания новой группы используется команда groupadd
    . Она выглядит следующим образом: groupadd [-g gid [-o]] [-r] [-f] имя
    После имени команды можно указывать следующие параметры:
    ˆ
    -g gid
    — идентификатор группы. Это неотрицательное число, которое должно быть уникально. Если вы ввели значение, которое уже использу- ется в системе, то для нормальной отработки команды нужно добавить еще и ключ
    -o
    . В большинстве случаев идентификатор вообще не нужно указывать
    . Тогда система возьмет первое свободное значение, начиная с
    500;
    ˆ
    -r
    — этот ключ указывает на необходимость создания системной группы.
    Идентификаторы таких групп находятся в диапазоне от 0 до 499. Если в
    явном виде не указано значение параметра
    -g
    , то будет выбрано первое свободное число, меньшее 500;
    ˆ
    -f
    — блокирует создание групп с одинаковыми именами. Если указать этот ключ, то команда отработает, но новая группа не сформируется, а
    уже существующая не будет обновляться.
    Если какие-либо параметры не указаны, то будут использоваться значения по умолчанию
    . Рассмотрим примеры создания групп (после знака # идет ком- ментарий
    , поясняющий работу команды):
    #Создать группу testgroup1 с ID по умолчанию groupadd testgroup1
    #Создать группу testgroup2 с ID 506 groupadd -g 506 testgroup2
    #Создать группу testgroup3 с системным ID по умолчанию groupadd -r testgroup3
    Вся информация о группах добавляется в файл /etc/group. Откройте его со- держимое
    , например, в MC или наберите в командной строке: cat /etc/group
    Вы увидите содержимое файла, в самом конце которого будут три строки с
    информацией о добавленных нами группах: testgroup1:x:500: testgroup2:x:506: testgroup3:x:11:

    Глава
    4
    116
    Файл состоит из 4 колонок: имя группы, пароль, идентификатор, список пользователей
    . Колонки разделены знаком двоеточия.
    В
    первой группе мы не указывали идентификатор, поэтому система выбрала значение по умолчанию. Во второй — в явном виде задан номер группы.
    В
    последней строке идентификатор равен 11, потому что был запрошен но- мер по умолчанию из системного диапазона (использовался ключ
    -r
    ).
    Последняя колонка (после третьего двоеточия) ничего не содержит. Здесь должен быть список пользователей группы, но он пуст, потому что мы еще его не формировали.
    1   ...   6   7   8   9   10   11   12   13   ...   35


    написать администратору сайта