Права доступа к файлам и папкам в Linux и Android. Настройка, изменение, ACL.

nid#66

Реклама

Диаграмма

Права доступа Linux

Поскольку ОС GNU-Linux (просто Linux далее) с самого начала разрабатывалась как многопользовательская, в ней предусмотрен такой механизм, как права доступа к файлам и папкам. Он позволяет разграничить полномочия пользователей, работающих в системе. В частности, права доступа позволяют отдельным пользователям иметь “личные” файлы и папки.

Например, если пользователь "user" создал в своей домашней папке файлы, то он является владельцем этих файлов и может определить права доступа к ним для себя и остальных пользователей. Он может, например, полностью закрыть доступ к своим файлам для остальных пользователей, или разрешить им читать свои файлы, запретив изменять и исполнять их.


Самым простым способом настройки прав доступа к файлам и папкам является работа с меню "Свойства файла" в Вашем файловом менеджере (см. иллюстрацию). Подробности, включая тонкую настройку прав доступа в консоли Linux - далее.

Содержание


Права доступа к файлам и папкам в ОС Linux: устройство и настройка

Правильная настройка прав доступа позволяет повысить надёжность операционной системы, защитив от изменения или удаления важные системные файлы. Наконец, поскольку внешние устройства с точки зрения операционной системы Linux также являются объектами файловой системы, механизм прав доступа можно применять и для управления доступом к устройствам.

У любого файла в системе есть владелец - один из пользователей, однако, каждый файл одновременно принадлежит и некоторой группе пользователей системы. Каждый пользователь может входить в любое количество групп, и в каждую группу может входить любое количество пользователей из числа определённых в операционной системе.

Механизм групп может применяться для организации совместного доступа нескольких пользователей к определённым ресурсам. Например, на сервере организации для каждого проекта может быть создана отдельная группа, в которую войдут учётные записи (имена пользователей) сотрудников, работающих над этим проектом. При этом файлы, относящиеся к проекту, могут принадлежать этой группе и быть доступными для её членов.

Права доступа определяются по отношению к трём типам действий: чтение, запись и исполнение. Эти права доступа могут быть предоставлены трём классам пользователей: владельцу файла (пользователю), группе, которой принадлежит файл, а также всем остальным пользователям, не входящим в эту группу.

  • Право на чтение даёт пользователю возможность читать содержимое файла или, если такой доступ разрешён к папке, просматривать её содержимое.
  • Право на запись даёт пользователю возможность записывать или изменять файл, а право на запись для папки - возможность создавать новые файлы или удалять файлы из этой папки.
  • И наконец, право на исполнение позволяет пользователю запускать файл как программу или сценарий командной оболочки (разумеется, это действие имеет смысл лишь в том случае, если файл является программой или сценарием). Для папок право на исполнение имеет особый смысл - оно позволяет сделать данную папку текущей, т. е. “перейти” в неё, например, командой "cd".

Возможность доступа к файлу зависит так же от прав доступа к папке, в которой он находится: чтобы воспользоваться имеющимися у Вас правами доступа к файлам, Вы должны иметь права на исполнение всех папок в их пути.


Права доступа к файлам и папкам в ОС Linux могут распределять не только сами пользователи вручную, но и некоторые системные процессы: например - механизм монтирования файловых систем. Таким образом права доступа ко вновь подключенным частям файловой системы будут изначально определяются системными правилами.

Права доступа к файлам и папкам в ОС Android

Имея в своей основе ядро Linux, Android-Linux (просто Android далее) использует те же самые модель и механизмы распределения прав к фалам и папкам в системе, что и традиционные дистрибутивы Linux. ОС Android, будь то официальная стандартная прошивка устройства или модифицированная версия Android CyanogenMod, например, включают в себя простейшие консольные программные утилиты GNU для управления правами доступа к файлам и папкам: chmod, chown и т.п.

Реклама

Информация о правах доступа к файлам и папкам в ОС Linux

Чтобы получить информацию о правах доступа к файлам и папкам в консоли Linux, используйте команду ls с ключом -l. При этом будет выведена подробная информация о файлах и папках, в которой будут, среди прочего, отражены права доступа.

ls -l (имя_файла)
-rw-r--r-- 1 user users 1024 Mar 13 19:05 имя_файла
  • Первое поле в этой строке (-rw-r--r--) отражает права доступа к файлу "имя_файла".
  • Третье поле указывает на владельца файла ("user").
  • Четвёртое поле указывает на группу, которая владеет этим файлом ("users").

Другие поля описаны в документации к команде ls (ls --help).

Последовательность "-rw-r--r--" условно разбивается на четыре секции (-/rw-/r--/r--): один первый символ и каждые три последующих, отражающих права доступа для владельца файла, членов группы пользователей владельцев файла, а также для всех остальных пользователей, соответственно. Символ "r" - сокращение от "read" (англ. "читать"), а "w" - сокращение от "write" (англ. "писать").

Таким образом, пользователь "user" из примера (см. выше) имеет право на чтение и запись (изменение) файла, пользователи, состоящие в группе "users", так же как и все прочие, среди прав доступа имеют только право чтения (просмотра) файла.


  • Первый символ из последовательности "-" обозначает тип файла. Символ "-" означает, что это - обычный файл, который не является папкой (в этом случае первым символом было бы "d" - англ. "directory" - "папка"), псевдо-файлом устройства (было бы "c" или "b"), ссылкой ("l").
  • После символа "w" третьим в последовательности каждой секции мог бы стоять символ "x", означающий наличие прав на исполнение (англ. "execute", "исполнять") файла. Однако символ "-", стоящий здесь вместо "x", указывает, что "user" не имеет права на исполнение этого файла. Это разумно, если файл не является программой или папкой. В то же время, пользователь, зарегистрировавшийся в системе как "user", при желании может предоставить себе право на исполнение данного файла, поскольку является его владельцем.

Изменение прав доступа к файлам и папкам в ОС Linux

Ниже перечислены важнейшие команды для решения задач, связанных с изменением прав доступа к файлам и папкам операционной системы Linux.

  • chmod - изменение прав доступа к файлу или папке
  • chown - изменение владельца файла
  • chgroup - изменение группы, которой принадлежит файл
chmod 664 имя_файла
Команда сделает файл "имя_файла" доступным для записи и тем, кто состоит в группе "users". Каждая из цифр кода 664 - одна из последних трёх секций последовательности "-rw-rw-r--" (см. выше), но в цифровом виде.

Цифры кода получаются методом сложения чисел, условно обозначающих одно из прав доступа:

  • 1 - только выполнение (--x)
  • 2 - только запись (-w-)
  • 4 - только чтение (r--)
  • 6 - чтение и запись (rw-)
  • 7 - vчтение, запись и выполнение (rwx)
chown user1 имя_файла
Команда сменит пользователя файла на "user1".
chown user1:others имя_файла
Сменит И группу владельцев файла на "others".
chgroup others имя_файла
Команда для смены группы владельцев отдельно.

При работе с символьной ссылкой chmod изменяет права доступа файла, связанного с ней. При этом chmod проигнорирует символьные ссылки, встретившиеся программе во время рекурсивной обработки папок.

Расширенные настройки прав доступа ОС Linux: "Access Control Lists" (ACL)

Многие современные дистрибутивы Linux используют механизм ACL ("Access Control Lists", англ. "списки контроля доступа"), позволяющий расширить используемые права доступа к файлам и папкам, дополняя их специализированными настройками доступа для определённых пользователей и групп.

Таким образом, например, могут быть защищены монтируемые пользователями диски (оптические носители, "флэш"-карты и т.п.): принадлежа администратору компьютера - пользователю root, папки с адресами вида "/media/user/disk" могут быть доступны для чтения и записи смонтировавшему диск пользователю.

Если такие расширенные настройки прав доступа используются для управления каким-либо файлом или папкой, при выводе списка файов командой ls -al, в поле прав доступа такого файла Вы обнаружите знак "+" в последовательности типа "drwxr-x---+".

getfacl имя_файла
Команда выведет дополнительные расширенные права файла или папки "имя_файла".
setfacl -b имя_файла
Очистит (!) настройки расширенных прав доступа.
setfacl -m u:user:x / g:group:r имя_файла
Установит дополнительные расширенные права выполнения и чтения для пользователя "user" / или группы "group" - соответственно.

Для того, чтобы узнать, используется ли в вашей ОС Linux механизм расширения прав доступа к файлам и папкам, чаще всего достаточно уточнить наличие соответствующего программного пакета ("acl" - в случае с Debian Linux, например).

Комментарии

Статья полезная, просвещающая, но пока так и не понял как открыть для себя доступ к папке "usr/share/qutim"
на подсказанный запрос вида: "ls -la usr/share/qutim"
выводится "drwx-xr-x 3 root root 4096 2011-01-09 00:15 ." и еще две строки подобного содержимого танцы с chmod ни к чему не привели, либо "читайте help" либо "операция не позволяется"

Код drwx-xr-x означает, что Вы не имеете права как-либо изменять папку /usr/share/qutim от имени обычного пользователя. В том числе, чтобы изменить права доступа к этой папке необходимо действовать от имени администратора (режимы su, или sudo).

Например:

sudo chmod 777 /usr/share/qutim

Значение 777 соответствует drwxrwxrwx (для папки) и получено при помощи суммирования значений цифровых кодов прав доступа:

  • 4 — право на чтение (r);
  • 2 — право на запись (w);
  • 1 — право на выполнение (x);

Каждый порядок числа 777 - группа прав, т.е.: значения для владельца файла (папки), для - группы, которой принадлежит файл (папка), и - всех остальных.

Вы так же можете просто изменить владельца папки на Вашего персонального:

sudo chown username /usr/share/qutim

Однако, хочу Вас предупредить, что обычно операции в системных папках, коими являются в Linux все, кроме /home пожалуй, выполняются от имени суперпользователя (в режимах su/sudo) без изменения прав доступа к ним непосредственно. Плюс ко всему, почти все программы сохраняют свои настройки в домашней папке пользователя, от имени которого они были запущены, а папка /urs/share служит для хранения общих/стандартных настроек, иконок и т.п.

здравствуйте, не могли бы вы мне ответить на вопрос.
пытаюсь настроить права доступа в openSUSE 12,1 для папки /windows/C
пробовал через chmod, chown, chgrp ничего не выходит, права только для рута, для остальных их нет, как это изменить?
ls -l /windows
выдает такую вещь : drwxr-xr-x 1 root users

ls -l /
выдает : drwxrwxrwx 3 root users

Похожая проблема

А вот у меня такая проблема, есть web хостинг, на котором множество виртуальных хостов, с сайтами, естественно, каждый админ сайта имеет ftp доступ к своей директории сайта, но файлы, которые он закидывает по ftp не дают доступ к себе с web панели. пользователь, под которым запускается апач www-data и группа такая же, а ftp-сервер под каким пользователем запускается не могу найти. Основная проблема-дать доступ на изменение пользователю www-data файла, который создан пользователем ftp, которого создали через панель управления хостингом ISPconfig

ruslanmir, ваш вопрос скорее из области настройки используемых программных серверов.

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <s> <kbd> <var> <code> <samp> <q> <cite> <ul> <ol> <li> <p> <br>
  • Строки и параграфы переносятся автоматически.
  • Шаблоны [цель|текст] обрабатываются как ссылки. Стандартный индикатор цели - ID материала.