Операционные системы на базе Linux являются многопользовательскими, и поэтому вопрос разграничения доступа к файлам и директориям является важным и требующим внимания.
Механизм разграничения доступа базируется на именах пользователей, а также на названиях групп пользователей, состав которых изменяет и определяет root пользователь (суперпользователь). Пользователь может входить в одну или несколько групп и иметь права доступа в зависимости от группы, в которую он входит.
При создании файла у него появляется владелец, то есть пользователь, который запустил процесс его создания. Также определяется группа, которая будет иметь права на этот файл. Изменять владельца файла и группу файла можно при помощи команд chown и chgrp.
Команды chown и chgrp
Команда chown (расшифровывается как “change owner”) используется для изменения владельца файла. При этом выполнять изменение владельца должен обязательно суперпользователь. Вам нужно ввести название команды, затем имя пользователя, которого вы собираетесь сделать владельцем файла, и в конце название файла:
# chown имя_пользователя название_файла
Команда chgrp (сокращение от “change group”) используется для изменения группы файла. При этом выполнить команду может как суперпользователь, так и владелец файла, но он обязательно должен быть членом группы, которой он хочет передать права на файл. Вам нужно ввести команду, название группы файлов, которой вы передаете права, а затем название файла:
# chgrp название_группы название_файла
Сразу расскажу о полезном ключе -R (расшифровывается как “recursively”). Он позволяет применять команду не только к текущей директории, но и ко всем поддиректориям. Ключ можно использовать и с chown, и с chgrp. Использовать такую рекурсивную команду удобно в случае большой вложенности.
Права доступа
Зачем настраивать права доступа?
Права доступа всегда необходимо назначать и разграничивать – это крайне важный момент обеспечения безопасности вашей Linux-системы. В случае, когда хакеру удастся получить доступ к одному из ваших пользователей, грамотно настроенные права доступа к файлам и каталогам не дадут ему возможности сделать много неприятностей. Иными словами, настройка прав доступа даст вам возможность максимально ограничить ваши данные от попадания в чужие руки (естественно, если речь не идет о root или sudo пользователях без ограничений, которые могут изменять любые права под себя).
Как смотреть права доступа?
Перед тем, как перейти к самому процессу изменения прав, нужно понять, как смотреть уже имеющиеся права у файлов и каталогов. Делать это можно при помощи команды ls и ключа –l.
# ls –l
После ввода этой команды вы увидите содержимое текущего каталога, а также информацию о владельце и правах доступа.
Пример отобразившейся информации:
total 32 drwxr-xr-- 2 root root 4096 May 7 2016 bin drwxr-xr-- 2 root root 4096 May 7 2016 etc drwxr-xr-- 2 root root 4096 Aug 11 2016 games drwxr-xr-- 2 user1 users May 5 12:00 Images drwxr-xr-- 2 root root 4096 Mar 23 2016 sbin -rw-r–-r-- 1 root root May 6 20:28 file1.txt -rw-r–-r-- 1 root root May 6 09:58 kdm.log
Разберемся, что означают эти строки.
Первая буква в выводе обозначает тип файла. Самые популярные обозначения, которые вы будете встречать чаще всего, это:
- - — обычный файл;
- d – каталог.
Помимо них есть и другие обозначения:
- b — файл блочного устройства;
- c — файл символьного устройства;
- s — доменное гнездо (socket);
- p — именованный канал (pipe);
- l — символическая ссылка (link).
Три следующие буквы, которые идут после первой, означают те права доступа, которые имеет пользователь-владелец этого файла или каталога. Расшифровываются они следующим образом:
- r – read – право на чтение;
- w – write – право на запись (изменение, в том числе и удаление);
- x – execute – право на выполнение этого файла (если речь о каталоге, то просмотр оглавления и поиск в нем);
- - (прочерк) вместо одной из букв говорит о том, что соответствующего права у вас нет.
Поэтому по записи
-rw-r–-r-- 1 root root May 6 20:28 file1.txt
можно сказать о том, что это обычный файл, владельцем которого является пользователь root, и он может читать и изменять этот файл.
Следующие три буквы, которые идут после определения прав для владельца файла или каталога, означают права доступа для группы, которая владеет этим файлом.
В рассматриваемом нами примере выше у группы root будут права только на чтение файла.
Наконец, последние три буквы – это права доступа для всех остальных пользователей и групп, в том числе для абсолютно посторонних людей (если доступ в каталоги и файлы открыт на других ресурсах).
Изменение прав доступа
Для назначения и изменения прав доступа используется команда chmod (сокращенно от change mode). Она вводится в командную строку по следующей логике:
chmod кто=права файл/каталог
Вместо «кто» вам нужно подставить обозначение того, для кого будет назначены права доступа. Существуют следующие обозначения:
- u – user – владелец файла;
- g – group – группа, которой принадлежит файл;
- o – other – остальные пользователи;
- a – all – все (вместо сочетания ugo).
Далее вместо «права» вам нужно ввести обозначение права, которое вы хотите дать этому пользователю или группе. О существующих правах уже было рассказано выше. Эти права будут даны вместо имеющихся.
Наконец, вместо «файл/каталог» вам нужно написать в команде название файла или каталога, права к которому вы хотите изменить.
Примеры
Допустим, вы хотите, чтобы файл logs все сторонние (остальные) пользователи могли только читать. Для этого вам нужно ввести вот такую команду:
chmod o=r logs
Даже если до этого у пользователей было больше прав (например, они могли еще и изменять файл), то теперь у них останется только право на чтение:
-rwxr-xr—-
Вы можете комбинировать обозначения тех, кому хотите изменить права доступа. Например, если нужно изменить права доступа сразу и для владельца, и для группы, то можно написать вот так:
chmod ug=rw file1.txt
В этом случае владелец и группа смогут читать и изменять файл file1.txt.
Комбинировать можно и сами файлы или каталоги (если вы хотите изменить права сразу для нескольких файлов):
chmod ug=rw file1.txt file2.txt
Добавление и исключение прав
Еще один интересный нюанс – вы можете также использовать знаки плюса (+) и минуса (-). Это полезно в тех случаях, когда вы хотите предоставить (добавить) или убрать (лишить) какие-либо права.
К примеру, команда
chmod o+w file.txt
даст остальным пользователям возможность редактировать этот файл.
Копирование прав
Также можно копировать (передавать) права доступа между разными пользователями. Допустим, вам нужно, чтобы остальные пользователи имели такие же права, как и владелец файла. Тогда вам нужно ввести следующую команду:
chmod o=u file.txt
Но менять сами права при вводе команды такой конструкции нельзя.
Цифровое обозначение
Наверняка вы ни раз сталкивались с тем, что папкам или файлам даются права доступа в виде цифр. Например, 754, 755, 774 и т.д.
Каждая из цифр – это то же обозначение прав доступа для владельца, группы и остальных пользователей соответственно.
Расшифровка: чтение (r) – 4, запись (w) – 2 и выполнение (x) – 1. Если сложить все эти права, то получится 7 – такое право доступа может быть у владельца файла. Группа может иметь право на чтение и запись (4+2) – обозначается 1. И так далее.
Чтобы было понятнее:
- 7 – r+w+x – чтение, запись, выполнение;
- 6 – r+w – чтение и запись;
- 5 – r+x – чтение и выполнение;
- 4 – r – чтение;
- 3 – w+x – запись и выполнение;
- 2 – w – запись;
- 1 – x – выполнение;
- 0 – отсутствие каких-либо прав.
Такая запись пошла из двоичного кодирования восьмеричных цифр, то есть 754 – это восьмеричная запись 9 бит, которые задают права для файла или каталога.
При желании вы можете использовать команду chmod с цифровым кодированием:
chmod 754 file1.txt
Примеры
644 – владелец файла может читать и изменять файл, а остальные пользователи (в том числе и группа) – только читать;
777 – все пользователи могут читать, изменять и выполнять файл.
Помните, что права доступа всегда выставляются от владельца файла к группе файла, а затем к остальным пользователя; то есть больше всего прав (или хотя бы точно не меньше) должно быть у владельца.
Дополнительно
Изменять права доступа можно не только через командную строку, но в различных файловых менеджерах, где это обычно более удобно и наглядно. Например, в Total Commander выставление прав выглядит следующим образом:В Filezilla:
Комментарии