Лекция№4. Защита файлов Права доступа. Смена прав пользователя, группы. Маска файла. Смена владельца и группы Категории по отношению к файлам GNU/Linux как истинная Unix-подобная операционная система является многопользовательской. Это значит, что в системе могут работать несколько (или множество) пользователей. Каждый пользователь должен иметь собственное «файловое пространство», к которому доступ других пользователей может быть запрещен или ограничен. Конкретный пользователь по отношению к его собственным файлам выступает как их владелец (u - user). С другой стороны, очевидно, что в любой системе есть программы и данные, которые должны быть доступны всем пользователям или только определенной группе пользователей. Поэтому у каждого файла есть еще и группа (g - group), к которой он принадлежит. Файл может быть доступен абсолютно всем. Поэтому в его атрибутах должны содержаться значения, запрещающие или разрешающие доступ всем другим (o - other), кто не вошел в группу и не является владельцем. Возможные действия над файлом Что можно делать с файлом после его создания? В первую очередь просматривать, или читать (r read). Во вторую очередь, файл можно изменить (дописать, исправить, переименовать, переместить). Таким образом, мы можем говорить о возможности записи (w - write) в файл. Если файл является программой, то его содержимое представляет собой команды для процессора, выполнение которых приводит к тому или иному желаемому (мы надеемся) эффекту. Другими словами, некоторые файлы можно исполнять (x - execution). Права доступа: первая линия обороны Linux В системе Linux каждый файл принадлежит пользователю и группе пользователей. Есть также третья категория пользователей, которые не являются пользователем-владелецем и не принадлежат группе, владеющей файлом. Для каждой категории пользователей, разрешение на чтение, запись и выполнение может быть предоставлено или отклонено. Права доступа: первая линия обороны Linux Команда ls –l отображает разрешения файла (права доступа) для этих трех категорий пользователей; они указаны девятью символами, которые следуют за первым символом (индикатором типа файла). Первые три символа отображают права доступа реального пользователя, который является владельцем файла. Следующие три — предназначены для группы-владельца файла, последние три — для других пользователей. Разрешения всегда описываются в одном и том же порядке: чтение r, запись w и исполнение x для пользователя, группы и других: - rwx rw- r-- Права доступа: первая линия обороны Linux Права Двоичный код Индикатор Значение --- 000 0 Все запрещено --x 001 1 Разрешено исполнение -w- 010 2 Разрешена запись -wx 011 3 Разрешены запись и исполнение r-- 100 4 Разрешено чтение r-x 101 5 Разрешены чтение и исполнение rw- 110 6 Разрешены чтение и запись rwx 111 7 Разрешено все Команда chmod Для смены прав доступа Команда chmod может быть использована с буквенными и числовыми опциями: ◦ chmod 644 имя файла (расшифруйте, что разрешено) или ◦ chmod u+x ,g-w,o-wx (добавили пользователю функцию исполнения, удалили у группы право на запись, у остальных – право на запись и исполнение) + и - используются для разрешения или запрещения конкретного права для определенной категории. Комбинации через запятую не допускаются. Info и man-страницы содержат полезные примеры. Особенности доступа к каталогам Каталог — это особый тип файла. Его содержание — это список других файлов. Каталоги имеют те же «биты прав», что и остальные файлы. Однако то, что эти права означают может быть не таким простым для понимания. Если каталог можно читать (r), то это означает, что разрешено только узнать список файлов, содержащихся в этом каталоге. Только список файлов, но не их свойства (размер, права доступа и др.). Если каталог можно исполнять (x), то это означает, что в него можно заходить и просматривать содержимое файлов (доступ к которым разрешен для данной категории), узнавать свойства (атрибуты) файлов. Можно изменить содержимое файла (если его разрешено менять), но не имя файла. Если каталог можно изменять (w), то это означает, что в нем можно изменять файлы, их имена, удалять их. Опасность! Это можно делать даже с файлами, доступ к которым запрещен для данной категории. Лечение! Вводят дополнительный tбит. При его наличии пользователь может изменять только свои файлы. Следует понимать, что ... доступ к конкретному файлу также зависит от наличия доступа на исполнение к каталогам на протяжении всего пути; изменять существующие файлы можно, не имея доступа на запись в каталог, достаточно иметь доступ на запись самого файла. Задание Просмотрите руководство пользователя по команде chmod. Разберите приведенные там примеры. Вступление в другую группу Когда вы введете id в командной строке, то получите список всех групп, к которым вы можете принадлежать; перед этим будет ваше имя пользователя и ID, а также название группы и ее ID, с которой вы в настоящее время связаны. В целях обеспечения большей гибкости, большинство систем Linux преследуют индивидуальную групповую схему пользователей, которая присваивает каждому пользователю при его создании его собственную группу. Обычно эта группа имеет такое же имя как название логина пользователя. Кроме личной группы пользователь может входить в другие группы. Вступление в другую группу newgrp имя новой группы – вход в другую группу (сначала используйте gpasswd для установки пароля для группы) Вход в новую группу освобождает вас от необходимости использовать chown или вызывать системного администратора для смены владельцев для вас. См. man-страницу newgrp для получения дополнительной информации. Маска файла Прежде чем новый файл куда-то сохраняется, он подвергаться стандартной процедуре защиты. В Linux не существуют файлы без установленных прав доступа. Стандартное разрешение на файл определяется маской при его создании. Значение этой маски может быть получено с помощью команды umask Полные права на чтение, запись и выполнение предоставляются всем при создании нового каталога. При создании нового файла, эта функция создаст право на чтение и запись для всех, но прав на выполнение отсутствует для всех категорий пользователей. Таким образом, первоначально применяется маска для каталога с разрешением 777 или rwxrwxrwx, а для обычного файла 666 или rw-rw-rw-. Значение umask вычитается из этих разрешений по умолчанию, определенных инструментом, создающим новый файл или каталог. Таким образом, каталог будет иметь права доступа 775 по умолчанию, а файл 664, если значение маски (0)002. Маска файла Если вы войдете в другую группу, используя команду newgrp, маска остается неизменной. Таким образом, если она установлена на 002, файлы и каталоги, которые вы создаете, находясь в новой группе, также будут доступны для других членов этой группы; вам не придется использовать команду chmod. Пользователь root обычно имеет более строгую маску по умолчанию: o22 ◦ [root@estoban root]# umask ◦ 022 Эти значения по умолчанию — общесистемная установка в конфигурационном файле shell, например /etc/bashrc или /etc/profile. Вы можете изменить их на ваш собственный файл конфигурации shell Смена владельцев и групп Если файл находится в собственности не того пользователя или группы, то недочет может быть устранен с помощью команд chown (смена владельца) и chgrp (смена группы). Команда chown может использоваться как для изменения владельца-пользователя файла, так и группы, а chgrp изменяет только группу. Чтобы изменить лишь владельца-пользователя файла, используйте следующий синтаксис: ◦ chown newuser file Если вы используете двоеточие после имени пользователя (см. info-страницы), группавладелец будет изменена также на основную группу пользователя, запускающего команду. Смена владельцев и групп Как chown, так и chgrp могут быть использованы для рекурсивной смены владельца с помощью опции -r. В этом случае, все вложенные файлы и подкаталоги данного каталога будет принадлежать указанному пользователю и/или группе. Ограничения. На большинстве систем, использование команд chown и chgrp ограничено для непривилегированных пользователей. Если вы не администратор системы, то не можете изменить пользователя или группу по соображениям безопасности. Если использование этих команд не будет ограничено, то злостные пользователи могут назначать владельцами файлов других пользователей и/или другие группы, и изменить поведение окружения пользователей, и даже повредить чужие для них файлы. Смена владельцев и групп Разберите пример: ◦ jacky:~> id ◦ uid=1304(jacky) gid=(1304) groups=1304(jacky),2034(pproject) ◦ jacky:~> ls -l my_report ◦ -rw-rw-r-- 1 jacky project my_report 29387 Jan 15 09:34 ◦ jacky:~> chown jacky: my_report ◦ jacky:~> chmod o-r my_report ◦ jacky:~> ls -l my_report ◦ -rw-rw---- 1 jacky jacky 29387 Jan 15 09:34 my_report Специальные режимы Режим "липкого бита": После выполнения задания, команда находится в оперативной памяти. Первоначально это была функция, которая использовалась в основном для сохранения памяти: большие рабочие части загружались в память только один раз. Но в наши дни память не такая дорогая и есть технологии, которые управляют ей лучше, поэтому этот режим больше не используется для оптимизации возможностей на отдельных файлах. По отношению к целому каталогу, однако, у липкого бита есть другое значение. В этом случае, пользователь может изменять файлы в данной директории, если является владельцем файла или файл имеет соответствующие разрешения. Эта возможность используется для таких каталогов как /var/tmp, которые должны быть доступны для всех, но где нельзя пользователям изменять или удалять данные друг друга. Липкий бит указывает в конце поля права доступа к файлу. Липкий бит установливается с помощью команды chmod o+t directory. Специальные режимы SUID (установка ID пользователя) и SGID (установка ID группы): представлены символом s в поле прав доступа пользователя или группы. Когда этот режим установлен на исполняемый файл, то он будет запускаться с правами пользователя и группы, имеющих разрешения на файл, а не под тем пользователем, который ввел команду, таким образом, предоставляется доступ к системным ресурсам. Специальные режимы SGID (установка ID группы) на каталог: в этом конкретном случае все файлы, созданные в данном каталоге, будут иметь ту же группу-владельца, что и сам каталог (в то время как нормальным поведением является то, что новые файлы принадлежат пользователям, которые их создают). Таким образом, пользователям не нужно беспокоиться о собственности файла при совместном использовании папок