Права доступа к файлам в Linux – как использовать команду chmod

Как и в других операционных системах, несколько пользователей могут создавать аккаунты пользователей и использовать одну машину под управлением ОС Linux.

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

Терминал Linux имеет некоторые сверхспособности, когда речь заходит об обработке разрешений на файлы. Вы можете предоставить или отменить разрешения для каждого файла и каталога из терминала Linux.

Что такое разрешения на файлы в Linux?

Права доступа к файлам определяют, какие действия могут выполнять те или иные пользователи. Чтение, запись и исполнение – это три возможных действия для каждого файла.

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

Это кажется полезным, не правда ли?

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

  1. chmod (Изменить режим)
  2. chown (изменить владельца)
  3. chgrp (Изменить группу)

Среди них chmod является одной из важнейших команд. Мы обсудим chmod в этом руководстве, а о других я расскажу в следующих статьях.

Давайте глубже погрузимся в chmod команда 🏊.

Действия, которые можно выполнять с файлом

Прежде чем продолжить, я хочу убедиться, что вы четко понимаете, как работают действия файла «Чтение», «Запись» и «Выполнение». Чтение и запись достаточно понятны сами за себя – они определяют, может ли пользователь читать или писать в файл.

Но что такое исполняемый файл?

Файл называется выполняемым, если он содержит последовательность инструкций для достижения чего-либо. Хорошим примером являются файлы сценариев (Shell Scripts).

Что такое chmod Команда?

chmod это команда, позволяющая изменять права доступа к файлу или каталогу для всех типов пользователей.

Вот синтаксис команды chmod:

chmod <Operations> <File/Directory Name>
Синтаксис использования команды chmod

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

Какие операции вы можете делать?

Операции в приведенном выше синтаксисе делятся на 2 категории. Давайте рассмотрим их ниже.

Разрешения на уровне пользователя

Эти операции контролируют разрешения на пользовательском уровне. Вот команды, которые можно использовать:

  • u – предоставить разрешение пользователю
  • g – Дайте разрешение группе (группе пользователей)
  • o – Предоставлять разрешение другим лицам (не подпадающим ни под один из указанных выше).

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

Разрешения на уровне файла

Эти разрешения контролируют на уровне файла.

  • r – Дает разрешение на чтение
  • w – предоставить разрешение на запись
  • x – предоставить разрешение на выполнение

Этим операциям должен предшествовать оператор «+» или «-«.

«+» указывает на добавление нового разрешения, а «-» указывает на удаление имеющегося разрешения.

Вот пример:

chmod +r sample.txt
Команда, чтобы добавить разрешение на чтение файла

Вышеприведенная команда добавляет разрешение на чтение для sample.txt файл.

Достаточно просто, правда? Продолжим.

Как создать исполняемый файл в Linux

Я могу объяснить это более четко на примере своего опыта.

Linux представляет собой операционную систему по умолчанию моей команды. Недавно мы наняли стажера, у которого нет знаний о Linux, но ему было интересно учиться и исследовать. Сначала мы начали обучать его, попросив его написать несколько сценариев оболочки, поскольку большинство серверов работают под управлением Linux. Он нашел весь код в интернете и скопировал его (мы намеренно дали такую ​​задачу).

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

Он неоднократно получал уведомление об ошибке «Команда не найдена».

Наконец он дошел до 1-й строчки. Он заменил эту строку оператором печати (команда «echo») и запустил файл в надежде увидеть результат. Но он так и не нашел этой ошибки.

С некоторым разочарованием он попросил о помощи.

Давайте посмотрим на вопросы сейчас.

По сути мы можем выполнять файлы .sh, просто запуская их так:

./install.sh
Команда для выполнения сценариев оболочки

Давайте посмотрим на код внутри install.sh

echo "This is executable file 🎉"
install.sh

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

chmod +x install.sh
Команда для добавления разрешения на исполнение файла
trd4dTKoxhk9Ap9xLifsuo6bD9wj4kc_i5gtDudFLQyU1gNdJLGoLoyCuJLh1FF9Yah-IG43YuR3yrrtJq48xBEYEq0QQkHMFB1n1YBiv-_fWJT95gyihZD0tjAj0ScnEmF33WRFdHJbfzTSpxSnaimyUbHlK9a2hMujE8CeyT4AoliZY5XJ_wKOsIVrPw
Команда терминала, чтобы сделать файл исполняемым

Теперь он доступен для исполнения. Он уставился на меня, словно я был хакером 😂. Но на самом деле это достаточно обычная и базисная концепция.

Как удалить разрешения из файла в Linux

Я работаю со своим коллегой Дивадом над многими проектами, и он любит пытаться обмануть меня. Мы вместе работаем над многими проектами-хобби и часто пишем сценарии оболочки для быстрого развертывания.

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

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

Здесь у нас есть файл с названием install.sh который имеет все разрешения (чтение, запись, исполнение). Давайте удалим разрешение на исполнение для этого файла сценария.

chmod -x install.sh
Команда для удаления разрешения на исполнение из файла
изображение-136
Команда терминала для удаления разрешения на исполнение из файла

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

Давайте снимем разрешение на чтение из файла.

chmod -r install.sh
Команда для удаления разрешения на чтение файла

Ладно, с помощью этой команды мы удалили разрешение на чтение. Давайте попробуем прочесть этот файл с помощью Nano (редактор файлов для терминала Linux). Вы можете увидеть ошибку «В разрешении отказано» внизу.

DHdaIMmV0pcFiMO-9GiLwXbUes8QZs5v6uKDLfuCu9Ltt-0SitENOM8najXPaxMXFJSQAzlI7F1u1p8i6fbqq1timsCoVGVOBdEtzUlybcmoh0W6oHWrIKyUUJr1dOjDZ_vbo0WkGE3fcLa3T7ZfvymVKVZPoKvKrDDH7ZVFSSlyeyQ1ypLixkAdD5uroA
iphPcFoH9r0VnGArokWKexbVTzGtMkaOC-EgeXECKqHyE2QJMA49sh5HK_u_ZNKDDKc_hmFPe-dM8VVy0Xu-EKGT1VpBaABcUtPxCEipSvNVhwJQWfxisGBHJbvAcosK3kO8JNsWT9qSl2-7A0cK-A8gHjWIK4cfvNAx4iofZOOPOgevXbR8mVjmDZqk0w

То же касается удаления разрешения на запись в файле:

chmod -w install.sh
Команда терминала для удаления разрешения на запись в файле
wVL6XdsMVVBrqw3dnrjELCIsqQyDkxtQWUKcD8HyXAUJktcBQyYAK1Ln-A9P517WW1b8tfm95HGd4NmRuP9fgs9QI6w9ZrR0ZeSNyMpWIlYlGld_Vq1-_m8fDDcV9Et-BJd99Jy3RI2cs6vm26Ywp9IFJzx1su8CGVgoe38-BNJp9qDooZe7XAbqv1S88A

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

chmod -rwx install.sh
Команда для удаления разрешения на чтение, запись и исполнение из файла

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

Как добавить или удалить разрешения для каталогов (папок) в Linux

Если вы работаете с Linux, вы могли встретить различные каталоги, такие как /etc, /var, /opt, и другие. Но вы можете не знать, зачем существуют эти каталоги.

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

Этот параметр будет предварительно сконфигурирован в системе при установке ОС Linux.

Но вы можете спросить, могу ли я ограничить свою папку в a /home каталог, похожий на вышеприведенные каталоги? Ответ – да. Вы можете добиться этого, изменив разрешение каталога с помощью chmod команда.

Разберемся в этом на примере.

Я создал каталог под названием locked_directory и удалено разрешение на чтение из этого каталога. Если я попытаюсь прочитать содержимое папки с помощью ls я в конце концов увижу сообщение об ошибке «Разрешение отказано».

chmod -r locked_directory/
Команда для удаления разрешения на чтение из каталога
JfC_fUvfsYzwm23cEaE6ThbFRGdY-tazuXBYIxBdunGsSSema2yGIFkJrLtw0rksPpG4iSUiBqjm9Uu5bEIuTasDyNm_zX0kLAqA3Ncv30FHcmSaXe_XbOzBdIBtg4hVI9kuIwPnRIYhdBZpsfXIaPPnVGUwBP5cwvfWpFn2OPjQfjjiIkkd3rrz0w465A
chmod команда для удаления разрешения на чтение из каталога

Но знаете ли вы, что я могу создать внутри другой каталог locked_directory назван dir1 и читать файлы и папки в dir1?

FMLRcjtvY-M1YVSANwmgdzdDwBJ9lrv4V7dLREva9RRUmal7PG8Q5p-l4XZMCi3zIznvSqIKpr68PwGlcripbREffgPzpmqOJ09OR-CvBEGrncBxYX9c9OTe0kq5-xL9rsGP1xQDO_sZP9iXPmHKpXFukFhTIYlXaFRnoHvdCRYA1FJDHcvXmFqP8dmshA

Тогда какова цель команды, которую мы только что запустили раньше? Удаление разрешения на чтение для родительского каталога также должно отменить его для дочерних каталогов, не правда ли?

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

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

Этот флаг есть -R. По сути, это означает рекурсивное применение тех же разрешений ко всем подкаталогам (дочерним каталогам). Следовательно, это разрешение будет применяться к конечному дочернему элементу файла/каталога.

Вот синтаксис для этого:

sudo chmod -R <permission> <filename>
Синтаксис рекурсивного удаления разрешения на чтение из каталога

Помните, что выполнение команды для выполнения рекурсивной операции требует прав root. Поэтому нужно добавить sudo в начале этой команды. Вот как это выглядит:

sudo chmod -R -r locked_directory
Команда для рекурсивного удаления разрешения на чтение из каталога
GZGisVgUxcZjYduKGlOaYHUaTRTgI7tf3nNzdpxL8QZvDDYV_PLgwaFipmbfxzDlziG_Gy7f5Gyeibc_E7IhGvEOmReUKUe3t7yYMXZKDsRnXcxivbepHpqww3y2YSLSyjvi83i_c5Z1rgQbc_ku-Bz5hy8lMl8idzg4MtfYtEZymPFTZBNceq9xgH79ZQ
Команда терминала для рекурсивного удаления разрешения на чтение из каталога

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

Другой способ обработки разрешений на файлы в Linux

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

Мы можем использовать числа для отображения разрешений на файл (самый частый метод установки разрешений). Когда вы изменяете разрешения с помощью восьмеричного режима, вы представляете разрешения для каждого триплета с помощью числа (4, 2, 1 или комбинации 4, 2 и 1).

Давайте посмотрим синтаксис использования восьмеричного режима:

chmod <user><group><others> install.sh
Синтаксис использования восьмеричного режима

Вот пример восьмеричного режима:

chmod 777 install.sh
Команда для предоставления всех разрешений в восьмеричном режиме

Как я могу удалить разрешения с помощью восьмеричного режима?

Мы можем использовать 0 чтобы удалить разрешения из файла. Вот пример:

chmod 000 install.sh
Команда для удаления всех разрешений с помощью восьмеричного режима
Доступ Символический режим Восьмерочный режим
Прочтите r 4
Напишите w 2
Выполнить x 1

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

Доступ Символический режим
к примеру:u+rwx,g+rw,o+r
Восьмерочный режим
к примеру:764 (пользователь, группа, другие)
Пользователь u <перше місце>
группа g <середнє місце>
другие о <останнє місце>

Вы можете запутаться 😖. Читайте дальше, чтобы понять.

Рассмотрим сценарий.

Вы хотите предоставить пользователям разрешения на чтение, запись и исполнение, а также разрешения только на чтение для групп и других install.sh файл.

Давайте посмотрим, как сделать это с помощью двух описанных выше методов.

Как управлять разрешениями в символьном режиме

chmod u+rwx,go+r install.sh
Команда для достижения вышеупомянутого сценария с помощью символического режима

Давайте разберем каждую часть и попытаемся их понять:

  • u+rwx представляет собой добавление разрешений на чтение, запись и исполнение для пользователей
  • go+r представляет собой добавление разрешения на чтение для групп и других

Как управлять разрешениями в восьмеричном режиме

 chmod 744 install.sh
Команда для достижения вышеупомянутого сценария с помощью восьмеричного режима

Давайте разберем каждое из этих чисел и попытаемся понять их:

  • Первое число (7) означает разрешение для пользователя: 7 = ( 4 (read) +2 (write) +1(execute) )
  • Второе число (4) означает разрешения для группы: 4 (read)
  • Третье число (4) означает разрешения для других: 4 (read)

Какой режим самый лучший?

Оказывается, что символьный режим мощнее восьмерочного.

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

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

Мы можем найти существующие разрешения файла с помощью команды ls.

Надеюсь, вы все знаете о ls команда. Добавление -l флаг и имя файла из ls команда показывает дополнительную информацию о файле, включая разрешения.

ls -l install.sh
Команда для поиска существующего разрешения файла
изображение-137
Команда терминала, чтобы увидеть существующее разрешение файла

Посмотрите на первую часть исходных данных (-rwxrwxrwx) со снимка экрана выше. Давайте разберемся, что это значит:

разрешения-1
Описание вывода существующих разрешений

Первый символ указывает тип ввода.

  • «-» означает файл
  • «d» указывает на каталог
  • «i» указывает на ссылку (символную ссылку, которая является ярлыком к файлу/каталогу)

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

Вывод

В этой статье вы узнали об обработке основных разрешений на файлы и папки.

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

Подпишитесь на мою рассылку, посетив мой сайт, а также просмотрите сводный список всех моих блогов.

здоровья!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *