Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 30
Текст из файла (страница 30)
Само собой разумеется, для того,чтобы создать файл, вы должны иметь право записи в каталог, в котором высоздаете файл. При создании файла обычно устанавливаются права на чтениеи запись для владельца, и только чтение для всех остальных пользователей.Пользователи объединяются в группы, например, для работы над одним проектом.Владелец может разрешить или запретить доступ к файлам для членов группы.Прочие — это все остальные пользователи.Для каждой категории имеется свой набор прав доступа, просмотретькоторый вы можете с помощью команды Is —1:Is -1 f i l e . t x t-rw-r— 1 den group -300 Feb 10 1 2 : 0 0 f i l e .
t x tСтрока -rw-rхарактеризует набор прав доступа к файлу f i l e . txt.Владельцем файла является пользователь den, который входит в группу group.Первый символ — это тип файла. «-» означает файл, a «d» — каталог.Следующие три символа «rw-» задают права доступа для владельца файла. Символ «г» - - это право на чтение, «w» - - на запись, а «х» - - навыполнение. Права задаются именно в таком порядке: чтение, запись, выполнение. Если право на какой-нибудь вид доступа отсутствует, то ставится«-». В данном случае отсутствует право на выполнение.720Файловая система LinuxВторой трехсимвольный набор задает права доступа для группы, а третий — для прочих пользователей. В нашем примере (г—) члены группыимеют право только на чтение, а другие пользователи вообще не имеютникакого доступа к файлу (—).Для изменения прав доступа используется программа chmod. При этомправа доступа можно задавать двумя способами: символьным и абсолютным.Рассмотрим сначала символьный метод, а потом — абсолютный.В рамках символьного способа изменения прав вызов программы chmodимеет следующий вид:chmod права <файл|каталог>Параметры программы chmod указаны в табл.
4.10.Права доступа (символьный метод)Опция+-Таблица 4.10ОписаниеУстанавливает право доступа=Отменяет право доступаПрисваивает набор прав доступагПраво на чтение файла или каталогаWПраво на запись файла или каталогаXПраво на выполнениеUУстанавливает право доступа для пользователя, который создал файл и является его владельцемgУстанавливает права доступа для группыоУстанавливает права доступа для прочих пользователейаУстанавливает права доступа для владельца, группы и прочих пользователейsУстанавливает бит смены идентификатора пользователя или группыtУстанавливает sticky-битБит смены идентификатора пользователя или группы является вариантом права выполнения х.
Право на чтение, запись и выполнение обозначается в этом случае не rwx, a rws. Так называемый sticky-бит позволяетоставить программу в памяти после ее выполнения. Устанавливать этот битполезно для маленьких и часто используемых программ, чтобы ускорить ихзапуск.Программа chmod никогда не изменяет права символических ссылок, ноэто не является особой проблемой, так как права ссылок никогда не используются. Изменить группу файла можно командой chgrp, а владельца — chown.Теперь перейдем к абсолютному методу указания прав доступа, который, какмне кажется, несколько удобнее, чем символьный, поскольку не нужно помнитьсимволику прав доступа.
Этот метод еще называют методом двоичных масок.Для изменения прав доступа абсолютным методом используется та жекоманда chmod:chmod число <файл|каталог>Число называется маской прав доступа и представляет собой число ввосьмеричной системе, задающее наборы прав доступа. Напомню, чтовосьмеричная система — это система с основанием 8 (см. табл. 4.11). Неспешите переворачивать страницу, услышав слово «восьмеричная», все насамом деле намного проще, чем звучит.121Файловая система LinuxКаждое число, задающее права доступа, состоит из трех разрядов, например, 760:7первый разряд;6второй разряд;Отретий разряд.Первый разряд задает права доступа для владельца файла, второй — длягруппы, третий — для остальных пользователей. Одному разряду восьмеричной системы соответствует три разряда в двоичной.Соответствие разрядов восьмеричной системы разрядам в двоичной системеТаблица 4.11Восьмеричный форматДвоичный формат000012001*01030114100510161107111Каждый двоичный разряд задает соответствующий ему тип доступа:первый — чтение, второй — запись, третий — выполнение.
Будем считать,что разряды нумеруются слева направо. О — если данная операция запрещена, а 1 — если разрешена. Теперь все становится на свои места, например,право доступа, задаваемое числом 777 (111 111 111) означает право начтение, запись и выполнение для всех пользователей.Наиболее часто используется маска 644, разрешающая чтение и модификацию файла для владельца, и только чтение — для других пользователей.Иногда используется набор прав доступа, состоящий из четырех цифр.Старшая цифра обозначает флаги SETUID (4), SETGID (2), sticky-бит (1).Какие же права доступа будут у только что созданного каталога командой mkdir? Обычно маска прав доступа равна 0777 минус значение, выводимое командой umask.
Значение, выводимое командой umask, обычно равно022. Следовательно, маска прав доступа будет равна 0777 - 0022 = 0755.И действительно, создайте каталог и введите команду Is —1:mkdir newIs -1drwxr-xr-x 2 den den 4 0 9 6 Янв 14 1 4 : 3 0 new/Набор rwx (111) равен семи, а набор r-x (101) равен пяти в восьмеричной системе. Получается, что маска доступа к новому каталогу = 755.Установить значение umask можно с помощью самой этой команды. Простовыполните команду umask 000 от имени суперпользователя и вы установитеновое значение, равное нулю.
Обратите внимание, команда mkdir автоматически устанавливает право выполнения (доступа) для каталога, иначе ккаталогу нельзя будет получить доступ.122Файловая система LinuxПрава доступа SUID и SGIDКроме рассмотренных выше прав доступа в системе Linux имеются еще дваспециальных права доступа — SUID (Set User ID root) и SGID (Set Group IDroot).
Их существование связано с тем, что некоторые программы (pppd, smbmount,SVGA-программы) требуют для своей работы привилегий пользователя root.Допустим, что вы хотите, чтобы другие пользователи могли устанавливать РРР-соединение, для этого нужно установить право доступа SUID дляпрограммы-демона /usr/sbin/pppd. Делается это так:chmod u+s / u s r / s b i n / p p p dПосле этого демон pppd будет запускаться с привилегиями root, даже.
если он запущен самым обыкновенным пользователем. Запуск pppd в такомрежиме необходим для того, чтобы обыкновенный пользователь смог настроить необходимые интерфейсы и таблицу маршрутизации ядра, то естьподготовить систему для РРР-соединения. Обычно на такие изменения (изменение таблицы маршрутизации ядра, конфигурирование интерфейсов)есть право только у пользователя root.То же самое можно сказать и о программе smbmount — для ее работытоже нужно установить право доступа SUID.Казалось бы, все хорошо: и пользователи довольны, и вам не нужнокаждый раз подходить к серверу, если нужно установить коммутируемоесоединение или примонтировать общий ресурс.
Однако следует учитывать,что программы, требующие установления SUID (или SGID) для своей работы являются потенциальными дырами в системе безопасности. Представьтетакую ситуацию: у вас в системе установлена программа superfonnat, котораяпредназначена для форматирования дисков. Создание файловой системы,пусть даже на дискете, -- это привилегированная операция, требующаяправа доступа root. При установке этой программы для нее сразу устанавливается право SUID, чтобы разрешить пользователям форматировать дискеты.
Пользователь запускает ее для форматирования диска. Программа запускается, получает права root, форматирует дискету и нормально завершаетработу. А теперь представим, что программа некорректно завершает своюработу — по ошибке, например, произошло переполнение стека (такиеслучаи известны при работе с этой программой). Что же при этом произошло: программа supermount получила права root и некорректно завершилаработу. В результате чего обыкновенный пользователь получил права root!Неквалифицированный пользователь с правами root — это намного хуже,чем просто крах системы. Нельзя с уверенностью сказать что произойдет,если пользователь получит права root.
Выходит, что не нужно быть профессиональным хакером — достаточно просто уметь форматировать дискеты.Помните о потенциальной опасности при работе с такими программамии, по возможности, избегайте использования прав SUID и SGID.Ради справедливости нужно заметить, что ряд системных программ(в частности pppd) разрабатывался с учетом прав SUID и SGID, и эти программы являются максимально защищенными, хотя полной уверенности в этом нет.Поэтому использовать право SUID нужно только в самых крайних случаях.123Файловая система LinuxЯ позволю себе сделать еще несколько замечаний относительно правдоступа SUID и SGID:1. Лучше не использовать программы, требующие привилегированные права доступа,на сервере, точнее, не разрешать обыкновенным пользователям их использовать.Использование права доступа SUID вы можете себе позволить только на своейдомашней машине, например, для установления того же коммутируемого соединения, чтобы каждый раз при подключении к Интернет не вводить команду su.2.
Если все-таки нужны привилегированные права, используйте программуsudo (или su). Конечно, это не так удобно, но зато гораздо безопаснее.3. Перед использованием программ, требующих права доступа root, убедитесь вих надежности. Если программа получена из ненадежного источника, лучшеее не использовать. Под надежным источником подразумеваются сайты илиFTP-серверы разработчиков дистрибутивов Linux. Желательно получить исходный код такой программы, чтобы убедиться, что она не производиткаких-либо несанкционированных действий.4.
Нет ни одной причины, по какой нужно было бы разрешить использованиеSUID-программ в домашних каталогах пользователей. Для разделов, в которые разрешена запись обыкновенным пользователям, установите опциюnosuid в файле / e t c / f stab.4.13. Обслуживание файловой системыОбслуживание файловой системы в ОС Linux сводится к двум операциям:1. Проверка.2. Дефрагментация.Проверка и восстановление файловой системы Linux выполняется программой fsck. Перед проверкой файловая система должна быть смонтирована в режиме «только чтение».Программа fsck умеет проверять и другие типы файловых систем, но дляисправления ошибок лучше использовать родные для этой файловой системы программы, предназначенные для проверки и исправления ошибок.Программа fsck автоматически проверяет файловые системы при загрузкеLinux в соответствии с указаниями, содержащимися в файле etc/fstab.Для программы fsck можно использовать опции, указанные в табл.