Разграничение доступа на линуксе

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

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

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

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

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

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

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

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

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

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
Читайте также:  Linux только одно окно

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.

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

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

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

perm

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • — нет прав, совсем;
  • —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- — разрешена только запись и изменение файла;
  • -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r— — права только на чтение;
  • r-x — только чтение и выполнение, без права на запись;
  • rw- — права на чтение и запись, но без выполнения;
  • rwx — все права;
  • —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные — только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

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

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

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

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

Читайте также:  Linux bash if find file

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

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

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

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

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

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

perm1

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

Выводы

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

На завершение хочу предложить неплохое видео про права доступа в Linux:

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

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

Все пользователи объединяются в группы и идентифицируются по номеру. Чтобы узнать свой UID и GID, то есть уникальный номер пользователя и номер группы, к которой принадлежит пользователь, необходимо ввести команду id, результат должен выглядеть следующим образом:

uid=1000(testk) gid=1000(testk) groups=1000(testk),27(sudo)

Просмотреть текущие права доступа к файлам Linux или каталогу можно по команде:
ls -l /etc
Результат выполнения команды выглядит следующим образом:

drwxr-xr-x 3 root root 4096 Nov 2 11:14 postfix drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp -rw-r--r-- 1 root root 608 Nov 3 13:02 profile drwxr-xr-x 2 root root 4096 Oct 26 09:20 profile.d -rw-r--r-- 1 root root 2932 Oct 25 2014 protocols

Параметры результата обозначают следующие параметры:
drwxr-xr-x 4 testk testk 4096 Oct 28 11:53 testk формат владелец группа размер_файла дата_последнего_изменения имя_файла

  • Первый символ обозначает тип объекта: «» означает обычный файл, «d» означает папку.
  • Три следующих символа rwx означают права доступа владельца файла.
  • Далее следует триада rwx означают права доступа группы.
  • Последние 3 символа rwx означают права доступа остальных.

Символ r — это сокращение от слова Read (Чтение).
Для обычного файла это разрешение на чтение, позволяет пользователю просматривать содержимое файла.
Для каталога разрешение на чтение позволяет пользователю просматривать имена файлов в каталоге.

Символ w — это сокращение от слова Write (Запись)/
Для файла это разрешение на запись, позволяет пользователю изменять и удалять файл.
Для каталога разрешение на запись позволяет пользователю удалить каталог, изменять его содержимое (создавать, удалять и переименовывать файлы в нем), а также изменять содержимое файлов, которые пользователь может прочитать.

Символ x — это сокращение от слова Execute (Выполнять)
Для файла это разрешение на исполнение, позволяет пользователю выполнять файл (пользователь также должен иметь разрешение на чтение). Таким образом, права на выполнение должны быть установлены для исполняемых программ и скриптов до того, как пользователь запустит их.
Для каталога разрешение на выполнение позволяет пользователю получить доступ к метаданным о файлах в каталоге (информация, которая может быть получена в результате выполнения команды ls -l).

Читайте также:  Linux kaspersky защита выключена

Примеры форматов

  • -rw——-: Файл, который доступен только его владельцем.
  • -rwxr-хт-х: Файл, который является исполняемым любым пользователем в системе.
  • -rw-rw-rw-: Файл, который открыт для модификации каждого пользователя в системе.
  • drwxr-хт-х: каталог, что каждый пользователь в системе может читать и доступ.
  • drwxrwx —: Каталог, который является изменяемым (включая его содержание) его владельцем и группой.
  • drwxr-х —: Каталог, который доступен по своей группе.

Права доступа к папке Linux

  • разрешение на чтение папки дает право на просмотр списка имен файлов (не более);
  • получение разрешения записи для каталога дает право создавать и удалять файлы в нем, в том числе принадлежащие другим пользователям;
  • для получения подробной информации о файлах, находящихся в каталоге нужно иметь доступ на исполнение папки.

Изменение прав доступа

Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используются команды chown, chgrp и chmod.
Рассмотрим подробно аргументы команды chmod:
chmod [ u | g | o | a ] [+ | — | = ] [r | w | x ] name1 [name2 . ]

Выделяют 3 группы, которые могут иметь права доступа к файлам Linux:
owner (u) – владелец файла;
group (g) – группа владельца файла;
others (o) – все остальные;
all (a ) – все вышеперечисленные группы вместе.

и 3 вида прав доступа для каждой группы:
право на чтение ( r);
право на запись (w);
право на исполнение (x).

а также 3 вида операций:
добавить (+);
убрать (-);
присвоить (=).

С помощью команды chmod также происходит управление битами, которые позволяют производить тонкое изменение прав доступа и запускать файл на выполнение с правами владельца или группы (биты SGID и SUID).

Изменять права доступа к файлу может его владелец или суперпользователь (root).

Примеры изменения прав доступа Linux

Команда, добавляющая право записи для группы владельца файла выглядит так:
chmod g+w file

Для добавления права доступа к файлам Linux для совершения записи для владельца и группы владельца:
chmod ug+w file

Дает право чтения файла всем пользователям, кроме владельца:
chmod go=r file

Лишает пользователей не находящихся в группе владельца права исполнения файла:
chmod o-x file

  • chmod rw-r—r— или chmod 644 – команда разрешает владельцу чтение и запись файла, а пользователям из группы владельца и всем остальным, только чтение.
  • chmod rwxr-xr-x или chmod 755 – команда дает владельцу выполнять любые операции с файлом, а пользователям из группы владельца и всем остальным разрешено чтение и исполнение.
  • chmod rwxrxxrxx или chmod 777 – у всех пользователей есть все права.
  • chmod r-sr-xr-xfail.pl или chmod 4555 для запуска с правами владельца, где «4» — обозначение бита SUID.
  • chmod r-xr-sr-xfail.pl или chmod 2755 для запуска с правами группы, где «2» — обозначение бита SGID.

Источник

Оцените статью
Adblock
detector