Права доступа к файлам Linux и права собственности объясняем на примерах | DATAENGINER

Права доступа к файлам Linux и права собственности объясняем на примерах

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

Если ищите надежный хостинг обратитесь к нашему партнеру Fozzy

Ссылка на сайт Fozzy

Промокод на 10% скидку dataenginer.ru.

Вот почему UNIX и, следовательно, Linux (Linux является Unix-подобной системой) имеют встроенную меру безопасности. Это гарантирует, что файл или каталог могут быть доступны, изменены или выполнены только желаемыми пользователями.

Какой файл будет доступен тому или иному пользователю, определяется двумя факторами в Linux:

  • Владение файлом
  • Разрешение файла

Понимание владения и разрешения файлов имеет решающее значение для пользователя Linux. Я объясню эти условия подробно здесь.

Владельцы файлов в Linux

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

У каждого файла и каталога в Linux есть три типа владельцев:

Пользователь

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

Группа

Каждый пользователь является частью определенной группы (групп). Группа состоит из нескольких пользователей, и это один из способов управления пользователями в многопользовательской среде.

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

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

Owner «Другой»

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

Другими словами, «Пользователь» — это один пользователь, Группа — это совокупность пользователей, а «Другое» состоит из всех пользователей системы.

Файловые права в Linux

Каждый файл и каталог в Linux имеет следующие три разрешения для всех трех типов владельцев:

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

  • Читать — Может просматривать или копировать содержимое файла
  • Запись — может изменить содержимое файла
  • Execute — может запустить файл (если он исполняемый)

Разрешения для каталогов

  • Читать — может перечислить все файлы и скопировать файлы из каталога
  • Запись — может добавлять или удалять файлы в каталог (также требуется разрешение на выполнение)
  • Выполнить — может войти в каталог

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

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

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

Если вы используете команду ls с опцией -l для файла, вы увидите такой вывод:

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Позвольте мне объяснить этот вывод более подробно на примере данного изображения:

Позвольте мне подробнее объяснить весь вывод:

  • Тип файла : обозначает тип файла. d означает каталог, — означает обычный файл, l означает символическую ссылку.
  • Полномочия . В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
  • Жесткие ссылки : показывает, есть ли в файле жесткие ссылки. Количество по умолчанию — один.
  • Пользователь : пользователь, которому принадлежат файлы.
  • Группа : группа, которая имеет доступ к этому файлу. Только одна группа может быть владельцем файла одновременно.
  • Размер файла : Размер файла в байтах.
  • Время изменения : дата и время последнего изменения файла.
  • Имя файла : Очевидно, имя файла или каталога.

Теперь, когда мы рассмотрели вывод команды ls -l, давайте сосредоточимся на части прав доступа к файлу.

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

rwxrw-r--

Каждая буква обозначает конкретное разрешение:

  • r: разрешение на чтение
  • w: разрешение на запись
  • x: разрешение на выполнение файла
  • -: разрешение не установлено

Права доступа всегда в порядке чтения, записи и выполнения, т. е. rwx. И затем эти разрешения устанавливаются для всех трех типов владельцев (см. Раздел «Владение») в порядке «Пользователь», «Группа» и «Другое».

Эта картина объяснит немного лучше:

Объяснение разрешения файла Linux

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

  • Файл имеет права на чтение, запись и выполнение для владельца пользователя. Но кто этот владелец использования файла? У вас есть эта информация в выводе ls -l (т.е. пользователь abhi).
  • Файл имеет права на чтение и запись для группы, но не для выполнения. Какая это группа? У вас есть информация о группе в выходных данных команды ls -l (то есть группа itsfoss).
  • Файл имеет разрешение на чтение только для Других, то есть для всех, кто имеет доступ к системе. Вам не нужно знать, что это за другой, потому что «другой» означает всех пользователей.

Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права доступа к файлу и владельца вместе.

-rwxrw-r-- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Файл agatha.txt принадлежит пользователю abhi, и abhi имеет права на чтение, запись и выполнение. Все члены группы istfoss имеют доступ для чтения и записи к этому файлу, в то время как все остальные имеют доступ только для чтения к этому файлу.

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

Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Первичную группу пользователя можно найти с помощью команды id -gn <username> . Оставьте имя пользователя пустым, если вы пытаетесь найти свою основную группу.

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

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

Вы можете использовать команду chmod для изменения прав доступа к файлу в Linux.

Есть два способа использовать команду chmod:

  • Абсолютный режим
  • Символический режим

Использование chmod в абсолютном режиме

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





  • r (чтение) = 4
  • w (запись) = 2
  • х (выполнить) = 1
  • — (без разрешения) = 0

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

Числоразрешение
0
1выполнение
2запись
3 (то есть 2 + 1)запись и выполнение
4чтение
5 (то есть 4 + 1)чтение и выполнение
6 (то есть 4 + 2)запись и чтение
7 (то есть 4 + 2 + 1)запись, чтение и выполнение

Можете ли вы угадать разрешение файла в числах на файл agatha.txt в нашем примере указанном ранее? 

Верно, это 764.

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

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

chmod 666 agatha.txt

Если вы сейчас перечислите agatha.txt, вы увидите, что разрешение было изменено.

-rw-rw-rw- 1 abhishek abhishek 457 Aug 10 11:55 agatha.txt

Использование chmod в символическом режиме

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

Здесь вы можете использовать символический режим с командой chmod.

В символическом режиме владельцы обозначаются следующими символами:

  • u = владелец пользователя
  • г = владелец группы
  • o = другой
  • a = все (пользователь + группа + другое)

Символьный режим использует математические операторы для изменения прав доступа:

  • + для добавления разрешений
  • — для снятия разрешений
  • = для переопределения существующих разрешений новым значением

Теперь, когда вы знаете, давайте посмотрим, как использовать команду chmod в символическом режиме.

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

chmod g+x agatha.txt

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

-rw-rwxrw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

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

chmod o-rw+x,u+x agatha.txt

Полученные разрешения будут выглядеть так:

-rwxrwx--x 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

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

chmod a-x agatha.txt

Это удалит разрешение на выполнение для всех.

-rw-rw---- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Смена владельца файла в Linux

Чтобы изменить владельца файла, вы можете использовать команду chown. Вы можете легко догадаться, что chown означает смену владельца.

Вы можете изменить владельца файла следующим образом:

chown <new_user_name> <filename>

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

chown <new_user_name>:<new_user_group> <filename>

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

chown :<new_user_group> <filename>

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

chgrp <new_user_group> <filename>

До сих пор в нашем примере, если вы хотите изменить владельца пользователя и группу на root, вы можете использовать команду chown следующим образом:

sudo chown root:root agatha.txt

Это изменит владельца файла на root как для пользователя, так и для группы.

-rw-rw---- 1 root root 457 Aug 10 11:55 agatha.txt

Заметьте, что я должен был использовать sudo с chown? Это потому, что здесь задействован root, и чтобы иметь дело с root, вам нужны права суперпользователя.

Бонусный совет: есть ли приоритет в правах доступа к файлам?

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

----r--rw- 1 abhi itsfoss 457 Aug 10 11:55 agatha.txt

Теперь, если пользователь abhi попытается прочитать файл с помощью команды cat или less, сможет ли он это сделать? Ответ — нет, потому что у него нет разрешения на чтение.

Но пользователь abhi является частью группы itsfoss, и группа имеет доступ для чтения. Черт! другой имеет разрешение на чтение и запись. Это должно означать, что каждый (включая пользователя abhi) может читать и писать файл, верно? Неправильно!

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

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

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

Постоянный редактор и автор сайта

Leave a reply:

Your email address will not be published.

Site Footer