Права доступа в Linux. Команды CHMOD и ls -ld

Знакомимся в правами доступа в Линукс. Чем логика управления правами доступа в Linux отличается от логики управления правами доступа в Windows. Как в Линукс просматривать и изменять права доступа на объекты файловой системы для пользователей и групп.

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

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

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

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

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

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

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

Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.

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

  • Владелец файла.
  • Члены группы.
  • Остальные (все остальные).

Владение файлом можно изменить с помощью команд chown и chgrp .

К каждому классу применяются три типа прав доступа к файлам:

  • Разрешение на чтение.
  • Разрешение на запись.
  • Разрешение на выполнение.

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

Права доступа к файлам можно просмотреть с помощью команды ls :

ls -l filename.txt-rw-r—r— 12 linuxize users 12.0K Apr 8 20:51 filename.txt|[-][-][-]- [——] [—]| | | | | | || | | | | | +————> 7. Group| | | | | +——————-> 6. Owner| | | | +—————————> 5. Alternate Access Method| | | +—————————-> 4. Others Permissions| | +——————————-> 3. Group Permissions| +———————————-> 2. Owner Permissions+————————————> 1. File Type

Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой специальный тип файла.

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

В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие пользователи имеют разрешения только на чтение ( r— ).

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

Влияние разрешений на файлы

Влияние разрешений на каталоги (папки)

В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.

Первый символ обозначает тип данных.

Данный символ может быть следующим:

В большинстве случаев это будет:

обычный файл;
d директория/каталог/папка (directory);
l символическая ссылка (link).

Но может быть следующим:

b файл блочного устройства (block);
c файл символьного устройства;
s доменное гнездо (socket);
p именованный канал (pipe).

Следовательно, в нашем случае это директория (каталог, папка).

Введение

В этом руководстве вы научитесь изменять права доступа в Linux / Unix и устанавливать нового владельца файла/папки через командную строку. Существует 2 базовые команды, которые могут быть использованы для данных целей: chmod и chown.

Прокачайте ваш Linux сервер, воспользовавшись скидками на VPS-хостинг в Hostinger!

К предложению

Syntax

Syntax of the chmod command is the following:

$ chmod [options] permissions file[s]

Options:

  • -R, –recursive – Change files and directories recursively;
  • -f, –silent, –quiet – Suppress most error messages.

View the current file / directory mode using ls command:

$ ls -l MyFile.txt-rw-r—r— 1 john admin 0 2012-12-02 04:30 MyFile.txt$ ls -ld MyDirdrwxr-xr-x 2 john admin 4096 2012-12-02 04:29 MyDir

or using stat command:

$ stat -c ‘%A %a %n’ MyFile.txt-rw-r—r— 644 MyFile.txt$ stat -c ‘%A %a %n’ MyDirdrwxr-xr-x 755 MyDir

You can give permission to folder and all its contents using option -R i.e Recursive permissions.

But I would suggest not to give 777 permission to all folder and it’s all contents. You should give specific permission to each sub-folder in www directory folders.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категориядействиефлаг файл

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

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

  • u — владелец файла;
  • g — группа файла;
  • o — другие пользователи.

Действие может быть одно из двух, либо добавить — знак «+», либо убрать — знак — «-«. Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r — чтение, w — запись, x — выполнение, s — suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t — устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

chmod o+r test5

Для файла test6 установим SUID:

chmod u+s test6

А для test7 — SGID:

chmod g+s test7

Посмотрим что получилось:

ls -l

perm1

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

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

Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):

Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:

chmod -R 755 /var/www

Изменение прав

Это действие также можно сделать в упомянутых выше приложениях или из консоли командой «chmod» ( англ. «change mode» − «изменить режим»). Продолжим эксперименты на созданной ранее папке. Для начала попробуем дать право доступа только себе:

chmod 700 testdir/

Для изменения доступа к своим файлам и папкам права суперпользователя не нужны, поэтому набираем команду без sudo. Смотрим результат при помощи «ls -l» и видим следующее:

drwx—— 2 rizado rizado 4096 мар 23 19:33 testdir

Буква «d» перед правами доступа означает «directory», указывая, что это папка, а не файл. Попробуем дать себе полный доступ, группе только чтение и просмотр содержимого, а остальным ничего:

chmod 750 testdir/

Результат

drwxr-x— 2 rizado rizado 4096 мар 23 19:33 testdir

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

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

man chmod

Расширенные права

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

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

— Соловьев Алексей aka allexnew upd 07.10.2020 17:56

Основная безопасность

Ваш домашний каталог — это ваше личное пространство в системе.

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

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

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

Работа с символическими ссылками

Символические ссылки всегда имеют 777 разрешений.

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

chmod 755 symlink

Скорее всего, вместо смены целевого владельца вы получите ошибку «Нет доступа к ‘символической ссылке’: в разрешении отказано».

Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Рекомендуется не отключать защиту символических ссылок.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: