Как контролировать права доступа к файлам и папкам на серверах Linux

Когда у нас есть NAS-сервер на базе Linux, или непосредственно операционная система, такая как Debian или Ubuntu где мы установили различные службы для доступа к файлам и папкам в локальной сети другими пользователями, управления доступом для чтения, записи и выполнения к ним. файлы и папки, которыми мы делимся, очень важны. Мы должны иметь в виду, что при совместном использовании наших папок и файлов через Samba или FTP, возможно, что аутентификация клиентов будет выполняться пользователем без прав, поэтому мы должны правильно организовать пользователей и группы, чтобы предоставить необходимые разрешения и больше не надо .

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

Управление правами доступа к файлам и папкам на серверах Linux

Чтобы все было намного понятнее, мы разделим эту статью на несколько разделов, которые позволят нам лучше понимать, о чем идет речь в любое время. Необходимо уточнить, что все, что мы будем объяснять, будет через командную строку, то есть нам придется вынимать консоль или подключаться через SSH к нашему Linux-серверу. Если вы не знакомы с этим компонентом Linux, возможно, это лучшее время, поскольку уровень сложности, о котором мы будем говорить, невысок.

Что такое команда chmod и для чего она нужна?

Команда chmod (изменить режим) предназначена для изменения прав пользователя, группы и других разрешений для файлов и папок, мы можем изменить права чтения, записи и выполнения для всех файлов и папок, которые мы хотим, кроме того, мы можем сделать Рекурсивное изменение определенной папки, таким образом, все файлы и папки внутри нее также будут затронуты этим изменением. Команда chmod доступна как в операционных системах Linux, так и в Unix, поэтому, если наш сервер основан на Unix, например FreeBSD, мы можем изменять права доступа к файлам и папкам так же, как мы делаем это в Debian или Ubuntu.

Синтаксис использования chmod следующий:

chmod [модификаторы] права доступа к файлам / каталогам

Сначала мы выполним команду chmod, затем мы сможем включить различные модификаторы, например, «-R», чтобы сделать его рекурсивным для всех папок и файлов в одной папке, затем нам нужно будет установить новые разрешения, которые мы хотим применить, и, наконец, мы поместим абсолютный или относительный путь к файлу или папке, для которых мы хотим изменить разрешения.

Очень важная деталь заключается в том, что в некоторых случаях абсолютно необходимо запускать chmod с правами суперпользователя, поскольку только администратор операционной системы может изменять разрешения. Этого можно достичь, войдя в систему как root или напрямую используя популярную команду «sudo» для временного повышения суперпользователя с помощью команды для выполнения.

Примеры использования chmod для изменения разрешений

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

Перед запуском все команды, которые вы собираетесь выполнить, будут выполняться с разными пользователями, чтобы правильно проверить разрешения, которые мы собираемся применить. Чтобы переключиться с одного пользователя на другого в системах Linux, просто откройте консоль и выполните " ваш логин «, Мы вводим пароль и автоматически получаем доступ к терминалу, как если бы мы были другим пользователем.

Подготовка нашей системы к тестированию

Первое, что мы сделаем, это создать папку в текущем каталоге каждого пользователя , обычно находится в / home / username.

mkdir Carpetathis article

Позже мы переместимся в эту папку и создадим файл:

cd Carpetathis article

сенсорный тестовый файл

В завершение мы напишем следующую команду для повышения уровня и выхода из созданной папки:

cd ..

Теперь наша система готова к тестированию изменений разрешений.

Получать информацию о файлах и папках

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

ls

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

ls -l

Мы выполнили эту команду на нашем сервере, здесь вы можете увидеть, как выглядит результат:

Эта команда предоставляет следующую информацию (в порядке слева направо):

  • Тип файла (файл показывает «-», а каталог показывает «d»).
  • Права на чтение, запись и выполнение как для пользователя, так и для группы и других.
  • Пользователь-владелец.
  • Группа, владеющая файлом.
  • Size
  • Дата последнего изменения.
  • Имя

После того, как мы создали папку и файлы, а также увидели вывод команды «ls -l», мы собираемся интерпретировать разрешения, которые имеют файлы или папки.

Интерпретировать разрешения, которые есть у файла или папки

Ранее вы видели, что разные файлы имеют следующие разрешения:

drwxr-xr-x 3 bron bron 4096 may 6 13:19 Descargas

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

otorgar-permisos-fichero-o-carpeta-linux

В предыдущем примере у нас есть права доступа «drwxr-xr-x», это означает следующее:

  • d: каталог
  • rwx: права на чтение, запись и выполнение для пользователя, владеющего каталогом.
  • rx: права на чтение и выполнение для группы, владеющей каталогом.
  • rx: читать и выполнять разрешения для других в каталоге.

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

-rwx------

То есть мы можем предоставить разрешения следующим ролям:

  • Пользователь-владелец.
  • Группа, к которой принадлежит владелец
  • Остальные пользователи команды.

Как изменить права доступа к файлам и папкам

Команда, которую мы должны использовать для выполнения этой задачи, - это chmod, это будет инструмент, с помощью которого мы сможем добавлять или удалять разрешения как для файла, так и для существующей папки в файловой системе нашей операционной системы. Чтобы выполнить эту настройку с помощью chmod, мы можем сделать это двумя разными способами, используя буквы, которые более «человеческие», но более длинные, а также числа в «восьмеричном» формате, что намного быстрее. Эта последняя форма является нашей любимой из-за ее скорости, хотя возможно, что поначалу вам больше нравится использовать буквы, потому что она гораздо лучше понимается.

Буквы

Если мы собираемся использовать буквы для добавления или удаления разрешений для папки или файла, мы должны учитывать роли, символы и разрешения.

Есть три типа ролей:

  • u: пользователь
  • г: группа
  • или: другие
  • а: все (все), если вам нужно применить одно и то же разрешение к пользователю, группам и другим пользователям, используйте «а» для экономии времени.

Два типа символов:

  • +: добавить разрешения
  • -: удалить разрешения
  • =: указывает набор разрешений.

Три вида разрешений:

  • r: чтение
  • w: письмо
  • x: выполнение

Далее мы предлагаем вам серию примеров, чтобы вы могли понять, о чем мы говорим:

Предоставьте полные права на чтение, запись и выполнение всем ролям, как пользователю, так и группе и другим:

chmod ugo+rwx archivoDePrueba

Удалите разрешения на чтение, запись и выполнение у других пользователей:

chmod o-rwx archivoDePrueba

В конце концов, все заключается в объединении ролей, символов и разрешений в зависимости от наших потребностей.

Восьмеричный с использованием чисел

Освободи Себя CHMOD Команда также совместима с другой номенклатурой, которую мы собираемся научить вас, и которая основана на восьмеричной системе счисления.

Представьте, что разрешения владельца (rwx) обозначены 0 и 1. То есть, если, например, мы хотим предоставить разрешения только на чтение и запись (а не на выполнение), это будет: 110. Если мы хотим только разрешение на чтение, это будет быть: 100.

Поэтому с учетом всех имеющихся возможностей получаем следующие значения:

  • 0 0 0: 0
  • 0 0 1: 1
  • 0 1 0: 2
  • 0 1 1: 3
  • 1 0 0: 4
  • 1 0 1: 5
  • 1 1 0: 6
  • 1 1 1: 7

То есть это то, что можно экстраполировать как на пользователя, группу, так и на других.

Формат команды будет следующим:

chmod xxx archivoDePrueba

Где x будет изменен на число в зависимости от назначенных разрешений.

Например, если мы хотим предоставить владельцу полные разрешения и оставить две другие роли (группу и другие) без каких-либо разрешений, команда будет выглядеть так:

chmod 700 archivoDePrueba

Если мы хотим предоставить разрешения на чтение и запись для всех ролей, это будет:

chmod 666 archivoDePrueba

С помощью этих двух простых способов мы можем установить права доступа к файлам и папкам на нашем компьютере с Linux. Кроме того, у нас под рукой будет команда ls -l для получения информации в реальном времени о файлах и папках в системе. Мы рекомендуем вам посетить официальное руководство chmod для Linux, для этого мы выполним на консоли следующее:

man chmod

Мы также рекомендуем изучить команды getfacl и setfacl, чтобы настроить более продвинутые списки управления доступом в Linux, и не только использовать пользователей, группы и другие, это позволит нам повысить степень детализации, хотя он явно намного более продвинутый, чем популярный chmod. В общем, если вы хорошо организовываете пользователей и группы, вам не нужно использовать эти списки управления доступом.