Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
Каждый пользователь должен работать в системе под своей учетной записью. Это позволит вам обезопасить свои файлы от чужого вмешательства и по системным журналам определить, когда и кем были произведены разрушительные действия.
Обычному пользователю вы должны выделять ограниченные права, которые позволят выполнять только необходимые операции. Кроме того, вы должны минимизировать количество пользователей с большими привилегиями, потому что такие учетные записи требуют особо пристального внимания и наблюдения. Если под привилегированной учетной записью вошли в систему с компьютера, где владелец записи не мог находиться, то это укажет на потенциальную опасность или взлом.
После увольнения сотрудника вы должны удалить его учетную запись, чтобы недовольный этим фактом он не уничтожил важные данные.
Для работы с командами управления доступом вы должны обладать правами администратора. Для этого можно войти в систему как пользователь root или использовать директиву su. В разд. 4.16 мы рассмотрим еще один способ — использование утилиты sudo.
А теперь перейдем к сути проблемы.
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-х, а стало быть, возможно чтение и исполнение. В соответствии с последней тройкой всем остальным пользователем также доступно только чтение и исполнение.
Последняя строка в примере содержит права доступа -rwxr-xr-- для файла (первый символ — это знак тире). Хозяин файла имеет полный доступ к нему (первая тройка rwx). Пользователи группы могут читать и выполнять файл, но не могут его изменять (вторая тройка r-х). Все остальные могут только читать файл (последняя тройка 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--. Должно выйти одно и то же.
Внимание!Для того чтобы иметь право создания или удаления файлов, необходимо иметь разрешение записи на директорию. Это немного сбивает с толку начинающих администраторов, т.к. им непонятно, почему при наличии всех прав на файл его нельзя удалять.
4.1.1. Назначение прав
Для изменения режима доступа на объекты файловой системы используется команда chmod. В ней можно указывать новые права на объект как в символьном (применяется для изменения относительно текущего состояния), так и в числовом виде (абсолютное задание). Для начала рассмотрим символьный режим:
chmod параметры права файл
Параметры могут включать комбинацию значений изменения прав по категориям пользователей:
□ u — владельца;
□ g — группы;
□ о — остальных пользователей;
□ a — все права (то же самое, что передать значение ugo).
Перед указанием прав можно задать режим их изменения относительно существующих:
□ + — добавить;
□ - — удалить;
□ = — заменить новыми (старые значения будут уничтожены). После этого устанавливается режим доступа:
□ r — чтение;
□ w — запись;
□ x — выполнение;
□ X — выполнение, если файл является каталогом или уже имеет аналогичные права для какого-либо пользователя;
□ s — setuid- или setgid-бит;
□ t — sticky-бит. В этом случае только владелец файла и каталога сможет выполнить удаление;
□ u — всем пользователям, как и у владельца;
□ g — всем пользователям, как и у группы;
□ o —для остальных, как у пользователей, не входящих в группу файла и не являющихся его владельцем.
В случае с числовым представлением команда выглядит следующим образом:
chmod права файл
Права передаются в виде восьмеричного числа из четырех разрядов:
□ первый — определяет дополнительный бит и может принимать одно из значений:
• 1 — бит принадлежности;
• 2 — setgid-бит;
• 4 — setuid-бит;
□ второй — права пользователя. Это число может быть от 0 до 7;
□ третий — права группы. Значение в диапазоне от 0 до 7;
□ четвертый — права остальных пользователей. Это число может быть от 0 до 7.
Например, мы хотим, чтобы владелец и группа имели все права (число 7), а остальные пользователи могли только выполнять файл (число 1). Значит, команда будет выглядеть следующим образом:
chmod 771 filename
Число 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 имя файл
Здесь задается имя группы, которой предоставляются права на указанный файл. Например, для файла test укажите группу администратора root с помощью такой команды:
chgrp root test
4.1.3. Правила безопасности
При назначении прав на доступ к файлам и папкам вы должны следовать принципу минимализма, описанному в разд. 2.10.1. Чтобы это правило действовало, по умолчанию должно быть запрещено все. Открываем доступ только на то, что необходимо, и ничего лишнего. Если файл не должен быть виден пользователю, то нельзя разрешать даже его отображение в дереве каталогов.