Права доступа в системе Linux
Поскольку Linux (да и UNIX вообще) — многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.
- чтение (read)
- запись (write)
- выполнение (execute)
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS’овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия расширение файла, как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это — уже другая история. ). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.
- владельцы — у каждого файла в Linux’e есть один владелец.
- группы — с каждым файлом связана группа пользователей этого файла.
- остальные пользователи.
Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа — свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 — это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).
Команда chmod
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
Символьная форма прав доступа
Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d — директория, — — обычный файл. Три последующих — права доступа владельца к этому файлу. Если первый символ из этих трех — r, владелец имеет право читать этот файл, а если —, то не имеет. Следующие 2 символа — w — писать и x — запускать. Если вместо них стоит —, значит, владелец этого права не имеет. Еще 3 символа — права доступа группы, еще три — права всех остальных пользователей.
drwxrwxrwx — директория, к которой все имеют любые права доступа.
-rwxr--r-- — обычный файл, владелец может делать все, а остальные — только читать.
-r-------- — обычный файл, который владелец может только читать, а остальные пользователи не видят.
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw-------, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx------.
С правами доступа в символьной форме chmod работает так:
Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (—). И наконец, вы указываете один или несколько режимов: read, write или execute.
Числовая форма прав доступа
- 400 — владелец имеет право на чтение
- 200 — владелец имеет право на запись
- 100 — владелец имеет право на выполнение
- 40 — группа имеет право на чтение
- 20 — группа имеет право на запись
- 10 — группа имеет право на выполнение
- 4 — остальные имеют право на чтение
- 2 — остальные имеют право на запись
- 1 — остальные имеют право на выполнение
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.
Примеры
Символьная форма
Дает всем пользователям право читать файл stuff.
То же самое, что и ранее (a — по умолчанию).
Лишает права на выполнение всех, кроме владельца.
Разрешает владельцу все (read, write и execute).
Запрещает все (read, write и execute) пользователям категории другие (other).
владелец может делать все, а остальные — только читать.
все имеют право только на чтение.
владелец может читать и выполнять, остальные — только выполнять.
Классическая команда. Скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.
Команда chown
Изменение владельца файла осуществляется командой chown, например:
Для передачи каталога надо вводить:
Команда chgroup
Изменение группы, которой принадлежит файл.
Для передачи каталога надо вводить:
FilePermissionsRu (последним исправлял пользователь ckimes 2017-09-02 05:31:46)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Права доступа к файлам Linux
Все пользователи объединяются в группы и идентифицируются по номеру. Чтобы узнать свой UID и GID, то есть уникальный номер пользователя и номер группы, к которой принадлежит пользователь, необходимо ввести команду id, результат должен выглядеть следующим образом:
uid=1000(testk) gid=1000(testk) groups=1000(testk),27(sudo)
Просмотреть текущие права доступа к файлам Linux или каталогу можно по команде:
ls -l /etc
Результат выполнения команды выглядит следующим образом:
drwxr-xr-x 3 root root 4096 Nov 2 11:14 postfix drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp -rw-r--r-- 1 root root 608 Nov 3 13:02 profile drwxr-xr-x 2 root root 4096 Oct 26 09:20 profile.d -rw-r--r-- 1 root root 2932 Oct 25 2014 protocols
Параметры результата обозначают следующие параметры:
drwxr-xr-x 4 testk testk 4096 Oct 28 11:53 testk формат владелец группа размер_файла дата_последнего_изменения имя_файла
- Первый символ обозначает тип объекта: «—» означает обычный файл, «d» означает папку.
- Три следующих символа rwx означают права доступа владельца файла.
- Далее следует триада rwx означают права доступа группы.
- Последние 3 символа rwx означают права доступа остальных.
Символ r — это сокращение от слова Read (Чтение).
Для обычного файла это разрешение на чтение, позволяет пользователю просматривать содержимое файла.
Для каталога разрешение на чтение позволяет пользователю просматривать имена файлов в каталоге.
Символ w — это сокращение от слова Write (Запись)/
Для файла это разрешение на запись, позволяет пользователю изменять и удалять файл.
Для каталога разрешение на запись позволяет пользователю удалить каталог, изменять его содержимое (создавать, удалять и переименовывать файлы в нем), а также изменять содержимое файлов, которые пользователь может прочитать.
Символ x — это сокращение от слова Execute (Выполнять)
Для файла это разрешение на исполнение, позволяет пользователю выполнять файл (пользователь также должен иметь разрешение на чтение). Таким образом, права на выполнение должны быть установлены для исполняемых программ и скриптов до того, как пользователь запустит их.
Для каталога разрешение на выполнение позволяет пользователю получить доступ к метаданным о файлах в каталоге (информация, которая может быть получена в результате выполнения команды ls -l).
Примеры форматов
- -rw——-: Файл, который доступен только его владельцем.
- -rwxr-хт-х: Файл, который является исполняемым любым пользователем в системе.
- -rw-rw-rw-: Файл, который открыт для модификации каждого пользователя в системе.
- drwxr-хт-х: каталог, что каждый пользователь в системе может читать и доступ.
- drwxrwx —: Каталог, который является изменяемым (включая его содержание) его владельцем и группой.
- drwxr-х —: Каталог, который доступен по своей группе.
Права доступа к папке Linux
- разрешение на чтение папки дает право на просмотр списка имен файлов (не более);
- получение разрешения записи для каталога дает право создавать и удалять файлы в нем, в том числе принадлежащие другим пользователям;
- для получения подробной информации о файлах, находящихся в каталоге нужно иметь доступ на исполнение папки.
Изменение прав доступа
Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используются команды chown, chgrp и chmod.
Рассмотрим подробно аргументы команды chmod:
chmod [ u | g | o | a ] [+ | — | = ] [r | w | x ] name1 [name2 . ]
Выделяют 3 группы, которые могут иметь права доступа к файлам Linux:
owner (u) – владелец файла;
group (g) – группа владельца файла;
others (o) – все остальные;
all (a ) – все вышеперечисленные группы вместе.
и 3 вида прав доступа для каждой группы:
право на чтение ( r);
право на запись (w);
право на исполнение (x).
а также 3 вида операций:
добавить (+);
убрать (-);
присвоить (=).
С помощью команды chmod также происходит управление битами, которые позволяют производить тонкое изменение прав доступа и запускать файл на выполнение с правами владельца или группы (биты SGID и SUID).
Изменять права доступа к файлу может его владелец или суперпользователь (root).
Примеры изменения прав доступа Linux
Команда, добавляющая право записи для группы владельца файла выглядит так:
chmod g+w file
Для добавления права доступа к файлам Linux для совершения записи для владельца и группы владельца:
chmod ug+w file
Дает право чтения файла всем пользователям, кроме владельца:
chmod go=r file
Лишает пользователей не находящихся в группе владельца права исполнения файла:
chmod o-x file
- chmod rw-r—r— или chmod 644 – команда разрешает владельцу чтение и запись файла, а пользователям из группы владельца и всем остальным, только чтение.
- chmod rwxr-xr-x или chmod 755 – команда дает владельцу выполнять любые операции с файлом, а пользователям из группы владельца и всем остальным разрешено чтение и исполнение.
- chmod rwxrxxrxx или chmod 777 – у всех пользователей есть все права.
- chmod r-sr-xr-xfail.pl или chmod 4555 для запуска с правами владельца, где «4» — обозначение бита SUID.
- chmod r-xr-sr-xfail.pl или chmod 2755 для запуска с правами группы, где «2» — обозначение бита SGID.