Поскольку система Linux с самогоначала разрабатывалась как многопользовательская, в ней предусмотрен такоймеханизм, как права доступа к файлам и папкам. Он позволяет разграничитьполномочия пользователей, работающих в системе. В частности, права доступапозволяют отдельным пользователям иметь “личные” файлы и папки.
Например, если пользователь user создал в своейдомашней папке файлы, то он является владельцем этих файлов и может определитьправа доступа к ним для себя и остальных пользователей. Он может, например,полностью закрыть доступ к своим файлам для остальных пользователей, илиразрешить им читать свои файлы, запретив изменять и исполнять их.
Правильная настройка прав доступа позволяет повыситьнадёжность системы, защитив от изменения или удаления важные системные файлы.Наконец, поскольку внешние устройства с точки зрения Linux также являются объектами файловой системы,механизм прав доступа можно применять и для управления доступом к устройствам.
У любого файла в системе есть владелец — один из пользователей.Однако каждый файл одновременно принадлежит и некоторой группе пользователейсистемы. Каждый пользователь может входить в любое количество групп, и в каждуюгруппу может входить любое количество пользователей из числа определённых всистеме.
Когда в системе создаётся новый пользователь, ондобавляется по крайней мере в одну группу. В системе Linux при создании новой учётной записи создаётсяспециальная группа, имя которой совпадает с именем нового пользователя, ипользователь включается в эту группу. В дальнейшем администратор может добавитьпользователя к другим группам.
Механизм групп может применяться для организациисовместного доступа нескольких пользователей к определённым ресурсам. Например,на сервере организации для каждого проекта может быть создана отдельная группа,в которую войдут учётные записи (имена пользователей) сотрудников, работающихнад этим проектом. При этом файлы, относящиеся к проекту, могут принадлежатьэтой группе и быть доступными для её членов.
Права доступа определяются по отношению к трём типамдействий: чтение, запись и исполнение. Эти права доступа могут бытьпредоставлены трём классам пользователей: владельцу файла (пользователю),группе, которой принадлежит файл, а также всем остальным пользователям, невходящим в эту группу. Право на чтение даёт пользователю возможность читатьсодержимое файла или, если такой доступ разрешён к папке, просматривать еёсодержимое. Право на запись даёт пользователю возможность записывать илиизменять файл, а право на запись для папки — возможность создавать новые файлыили удалять файлы из этой папки. Наконец, право на исполнение позволяетпользователю запускать файл как программу или сценарий командной оболочки(разумеется, это действие имеет смысл лишь в том случае, если файл являетсяпрограммой или сценарием). Для папок право на исполнение имеет особый смысл —оно позволяет сделать данную папку текущей, т. е. “перейти” в неё, например,командой cd.
Чтобы получить информацию о правах доступа к файлам ипапкам в консоли, используйте команду ls сключом -l. При этом будет выведена подробная информация офайлах и папках, в которой будут, среди прочего, отражены права доступа.
Рассмотримследующийпример:
/home/user/docs# ls -l test.txt-rw-r–r– 1 userusers 505 Mar 13 19:05 report0041
Первое поле в этой строке (-rw-r–r–)отражает права доступа к файлу. Третье поле указывает на владельца файла (user),четвёртое поле указывает на группу, которая владеет этим файлом (users).Последнее поле — это имя файла (test.txt).Другие поля описаны в документации к команде ls (ls –help).
Данный файл является собственностью пользователя user и группы users.Последовательность-rw-r–r– показывает права доступа для пользователя —владельца файла, пользователей — членов группы-владельца, а также для всехостальных пользователей.
Первый символ из этого ряда (-)обозначает тип файла. Символ - означает, чтоэто — обычный файл, который не является папкой (в этом случае первым символомбыло бы d) или псевдофайлом устройства (было бы c или b).Следующие три символа (rw-) представляют собой права доступа, предоставленныевладельцу user. Символ r —сокращение от read (англ. читать), а w —сокращение от write (англ. писать). Таким образом, user имеет право на чтение и запись (изменение)файла test.txt.
После символа w могбы стоять символ x, означающий наличие прав на исполнение (англ.execute, исполнять) файла. Однако символ -,стоящий здесь вместо x, указывает, что user не имеет права на исполнение этого файла. Эторазумно, так как файл test.txt не является программой. В то же время,пользователь, зарегистрировавшийся в системе как user, при желании может предоставить себе право наисполнение данного файла, поскольку является его владельцем. Для изменения правдоступа к файлу или папке используется команда chmod.
Следующие три символа (r–)отражают права доступа группы к файлу. Группой-собственником файла в нашемпримере является группа users. Посколькуздесь присутствует только символ r, всепользователи из группы users могутчитать этот файл, но не могут изменять или исполнять его.
Наконец, последние три символа (это опять r–)показывают права доступа к этому файлу всех других пользователей, помимособственника файла и пользователей из группы users. Так как здесьуказан только символ r, эти пользователи тожемогут читать файл.
Возможность доступа к файлу зависит также от правдоступа к папке, в котором находится файл. Например, даже если права доступа кфайлу установлены как -rwxrwxrwx, другиепользователи не могут получить доступ к файлу, пока они не имеют прав наисполнение для папки, в которой находится файл. Другими словами, чтобывоспользоваться имеющимися у вас правами доступа к файлу, вы должны иметь правона исполнение для всех папок вдоль пути к файлу.
Ниже перечислены важнейшие команды для решения задач,связанных с правами доступа. Для получения более подробной информации об этихкомандах обращайтесь к руководствам по ним (например, chmod –help).
·chmod –изменение прав доступа к файлу или папке
·chown –изменение владельца файла
·chgroup –изменение группы, которой принадлежит файл
·umask –определение прав доступа по умолчанию для файлов, создаваемых пользователем
Уточнение:
Например, рассмотрим папку с правами 777.
Значение 777 соответствует drwxrwxrwx (для папки) и получено при помощисуммирования значений цифровых кодов прав доступа:
·4 — право на чтение(r);
·2 — право на запись(w);
·1 — право навыполнение (x);
Каждый порядок числа 777 – группаправ, т.е.: значения для владельца файла (папки), для – группы, которойпринадлежит файл (папка), и – всех остальных.
Популярность записи: 9%
Многопользовательская модель разграничения доступа
Процедура регистрации всистеме для Linux обязательна: работать в системе, незарегистрировавшись под тем или иным именем пользователя, просто невозможно.Для каждого пользователя определена сфера его полномочий в системе: программы,которые он может запускать, файлы, которые он имеет право просматривать,изменять, удалять. При попытке сделать что-то, выходящее за рамки полномочий,пользователь получит сообщение об ошибке. Такая строгость может показатьсяизлишней, если пользователи компьютера доверяют друг другу, и особенно если укомпьютера только один пользователь. Эта ситуация очень распространена внастоящее время, когда слово «компьютер» означает в первую очередь«персональный компьютер».
Однако персональныйкомпьютер – довольно-таки позднее явление в мире вычислительнойтехники, получившее широкое распространение только в последние два десятилетия.Раньше слово «компьютер» ассоциировалось с огромным и дорогостоящим (занимавшимцелые залы) вычислительным центром, предназначенным в первую очередь длярешения разного рода научных задач. Машинное время такого центра стоит оченьнедешево, и при этом его возможности необходимы одновременно многимсотрудникам, которые могут ничего не знать о работе друг друга. Требуетсяследить за тем, чтобы не произошло случайного вмешательства пользователей вчужую работу и повреждения данных (файлов), выделять каждому машинное время (повозможности избежав простаивания) и пространство на диске и при этом недопускать захвата всех ресурсов одним пользователем и его задачей, а равномернораспределять ресурсы между всеми. Для такой системы принципиально важно знать,кому принадлежат задачи и файлы, поэтому и возникла необходимость предоставлятьдоступ к ресурсам системы только после того, как пользователь зарегистрируетсяв системе под тем или иным именем.
Такая модель былареализована в многопользовательской операционной системе UNIX.Именно от нее Linux – также многопользовательская система – унаследовалапринципы работы с пользователями. Но это не просто дань традиции или стремлениек универсальности: многопользовательская модель позволяет решить ряд задач,весьма актуальных и для современных персональных компьютеров, и для серверов,работающих в локальных и глобальных сетях, и вообще в любых системах,одновременно выполняющих разные задачи, за которые отвечают разныелюди.
Компьютер – это всеголишь инструмент для решения разного рода прикладных задач: от набора ираспечатывания текста до вычислений. Сложность состоит в том, что для измененияэтого инструмента и для работы с его помощью используются одни и те жеоперации: изменение файлов и выполнение программ. Получается, что, если несоблюдать осторожность, побочным результатом работы может стать выход системыиз строя. Поэтому первоочередная задача для систем любого масштаба – разделятьповседневную работу и изменение самой системы. В многопользовательской моделиэта задача решается очень просто: разделяются «обычные» пользователи и администратор(ы).В полномочия обычного пользователя входит все необходимое для выполненияприкладных задач, попросту говоря, для работы, однако ему запрещено выполнятьдействия, изменяющие саму систему. Таким образом можно избежать повреждениясистемы в результате ошибки пользователя (нажал не ту кнопку) или ошибки впрограмме, или даже по злому умыслу (например, вредительскойпрограммой-вирусом). Полномочия администратора обычно не ограничены.
Для персональногокомпьютера, с которым работают несколько человек, важно обеспечить каждомупользователю независимую рабочую среду. Это снижает вероятность случайногоповреждения чужих данных, а также позволяет каждому пользователю настроитьвнешний вид рабочей среды по своему вкусу и, например, сохранить расположениеоткрытых окон между сеансами работы. Эта задача очевидным образом решается вмногопользовательской модели: организуется домашний каталог, где хранятсяданные пользователя, настройки внешнего вида и поведения его системы и т. п., адоступ остальных пользователей к этому каталогу ограничивается.
Если компьютер подключенк глобальной или локальной сети, то вполне вероятно, что какую-то частьхранящихся на нем ресурсов имеет смысл сделать публичной и доступной по сети. Инапротив, часть данных, скорее всего, делать публичными не следует (например,личную переписку). Ограничив доступ пользователей к персональным данным другдруга, мы решим и эту задачу.
Именно благодаря гибкостимногопользовательской модели разграничения доступа она используется сегодня нетолько на серверах, но и на домашних персональных компьютерах. В самом простомварианте – для персонального компьютера, на котором работает только одинчеловек – эта модель сводится к двум пользователям: обычному пользователю дляповседневной работы и администратору – для настройки, обновления, дополнениясистемы и исправления неполадок. Но даже в таком сокращенном варианте это даетцелый ряд преимуществ.
В начало
Учетные записи
Конечно, система можетбыть «знакома» с человеком только в переносном смысле: в ней должна хранитьсязапись о пользователе с таким именем и о связанной с ним системной информации– учетная запись. Английский эквивалент терминаучетная запись –account, «счет». Именно с учетными записями, а не с самими пользователями,и работает система. В действительности, соотношение учетных записей ипользователей в Linux обычно не является однозначным: несколько человек могутиспользовать одну учетную запись – система не может их различить. И в то жевремя в Linux имеются учетные записи для системных пользователей,от имени которых работают некоторые программы, но не люди.
Учетная запись, account -- объект системы, при помощикоторого Linux ведет учет работы пользователя в системе. Учетная записьсодержит данные о пользователе, необходимые для регистрации в системе идальнейшей работы с ней.
Учетные записи могут бытьсозданы во время установки системы или после установки. Подробно процедурасоздания учетных записей (добавления пользователей) описана в лекции 12.
Главное для человека вучетной записи – ее название, входное имя пользователя. Именно онем спрашивает система, когда выводит приглашение “login:”. Помимо входного имени в учетнойзаписи содержатся некоторые сведения о пользователе, необходимые системе дляработы с ним. Ниже приведен список этих сведений.
Входное имя, login name -- название учетной записипользователя, которое нужно вводить при регистрации в системе.
В начало
Идентификатор пользователя
Linux связывает входноеимя c идентификатором пользователя в системе – UID (UserID). UID – это положительное целое число, по которому системаи отслеживает пользователей. Обычно это число выбирается автоматически прирегистрации учетной записи, однако оно не может быть произвольным. В Linux естьнекоторые соглашения относительно того, каким типам пользователей могут бытьвыданы идентификаторы из того или иного диапазона. В частности, UID от “0” до“100” зарезервированы для псевдопользователей.
Идентификаторпользователя, UID -- уникальноечисло, однозначно идентифицирующее учетную запись пользователяв Linux. Таким числом снабжены все процессы Linux и всеобъекты файловой системы. Используется для персонального учетадействий пользователя и определения прав доступа к другимобъектам системы.
В начало
Идентификатор группы
Кроме идентификационногономера пользователя