Меню Рубрики

Установка прав доступа debian

Debian. Шпаргалка сисадмина. Права доступа

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

Отобразить права доступа на объекты можно с помощью команды «ls» с ключом «-l«, при выводе мы увидим что-то на
подобии этого (права доступа выделены красной рамкой):

Далее идет пользователь-владелец объекта и основная группа пользователя. Подробнее о выводе команды «ls» вы можете почитать в «манах» или в моей предыдущей статье «Debian. Шпаргалка сисадмина. Работа с файлами и каталогами«.

Первый символ означает тип объекта, ниже они собраны в таблицу:

Флаг Описание
Отсутствие флага
l — лат. «л» Символическая ссылка (symbolic link)
d Директория (directory)
b Блочное устройство (block device)
c Символьное устройство (character device)
p Канал, устройство fifo (fifo device)
s Unix сокет (unix domain socket)

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

Формат символьного режима:
`[ugoa…][[+-=][rwxXstugo…]…][,…]’.
Буквы «ugoa» расшифровываются следующим образом, как логично предположить:
u — пользователь-владелец;
g — первичная группа пользователя, в неё также могут входить другие юзеры;
o — все остальные пользователи, не входящие в первичную группу пользователя-владельца;
a — все вышеперечисленные (a=ugo).

Далее разбираемся с «+-=«:
+ — добавляет выбранные права доступа к уже имеющимся;
— удаляет выбранные права;
= — присваивает только выбранные права каждому указанному файлу.

Теперь перейдем к правам:
r — чтение;
w — запись;
x — выполнение (или доступ к каталогу);
X — выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя;
s — setuid- или setgid-биты;
t — sticky-бит;
u — установка для остальных таких же прав доступа, которые имеет пользователь, владеющий этим файлом;
g — установка для остальных таких же прав доступа, которые имеет группа файла;
o — установка для остальных таких же прав доступа, которые имеют остальные пользователи (не входящие в группу файла).

Небольшое пояснение по поводу параметра «t«, цитата из справочных страниц:

В настоящее время установка sticky-бита для каталога, приводит к тому, что только владелец файла и владелец этого каталога могут удалять этот файл из каталога. (Обычно это используется в каталогах типа /tmp, куда все имеют права на запись)

Биты setuid— и setgid нужны чтобы запускать исполняемые файлы от имени пользователя-владельца. Если запустить исполняемый файл, который находится в каталоге с установленным битом setgid, то файл запустится с идентификатором группы-владельца этого каталога.

С правами доступа в абсолютном виде дело обстоит следующим образом: для каждого объекта безопасности можно задать права в виде rwx, где r — чтение, w — запись, x — выполнение; соответственно, если права необходимо предоставить, выставляем «1«, если права не нужны — ««. Таким образом полные права для пользователя в двоичной системе счисления будут выглядеть как «111«, что в восьмеричной будет равно 7.

Рассмотрим на примере как в двоичном виде будут выглядеть маска полных прав для владельца, прав на чтение и выполнение для первичной группы и права на чтение для всех остальных:
-rwxr-xr—
111101100
Теперь условно разбиваем на 3 части:
111|101|100
Переводим в восьмеричную систему и получаем:
754

Стоит отметить, что в большинстве случае биты setuid-, setgid и sticky в абсолютном виде опускаются. Чтобы их установить, необходимо перед числовым представлением прав вставить 4 для setuid, 2 для setgid и 1 для sticky.

Теперь попробуем задать одни и те же права в символьном и абсолютном виде.

Задать владельцу полные права, группа и остальные пользователи не имеют никаких прав, даже на чтение:
root@debian7:

# chmod u=rwx,go= test_file01
Как мы видим, права на файл изменились соответствующим образом:
Аналогичная команда в абсолютном виде выглядит так:
root@debian7:

# chmod 700 test_file01

Задать владельцу полные права, группе права на чтение и изменение, а всем остальным на чтение и выполнение:
root@debian7:

# chmod u=rwx,g=rw,o=rx test_file01
Аналог в абсолютном виде:
root@debian7:

# chmod 765 test_file01

Стоить отметить, что основное преимущество изменения прав с использованием символьного вида состоит в гибкости этого метода — он позволяет изменять права только определенным объектам безопасности.

Например, мы имеем файл c разрешениями для владельца только на запись и чтение, а у всех остальных никакого доступа нет. Мы хотим присвоить группе и всем остальным право за чтение файла. Сделать это можно командой:
root@debian7:

# chmod go+r test_file01
При этом мы никак не меняем права пользователя, потому что они нас устраивает, а изменяем права только группы и всех остальных.
Чтобы задать такие же права в абсолютном виде, нам придется задавать их для каждого объекта безопасности:
root@debian7:

# chmod 644 test_file01

Теперь попробуем у этого же файла изменить права следующим образом: владельцу дать дополнительно права на выполнение, группе дать права на запись, а права на чтение у всех остальных отозвать:
root@debian7:

# chmod u+x,g+w,o-r test_file01
В принципе эту же команду можно записать даже немного короче:
root@debian7:

# chmod u+x,g+w,o= test_file01
Аналог в абсолютном виде:
root@debian7:

# chmod 760 test_file01

Выставим файлу, например, бит setuid:
root@debian7:

# chmod u+s test_file01
Аналогичная команда в абсолютном представлении с текущими правами:
root@debian7:

# chmod 4760 test_file01
Соответствующим образом изменились и права:
(см. скриншот 06)

Sticky-бит можно установить вот так:
root@debian7:

# chmod +t test_file01
В абсолютном представлении с сохранением текущих прав:
root@debian7:

# chmod 1760 test_file01

Если есть необходимость установить враз, например, setu >

Если нужно изменить права рекурсивно на каталог:
root@debian7:

# chmod -R 755 testdir02

Либо на все файлы в текущем каталоге:
root@debian7:

# chmod -R 755 *

Кроме изменения прав доступа может потребоваться смена пользователя-владельца или группы. К сожалению, «chmod» это сделать не сможет, однако есть другие команды:

chown — изменить владельца и группу файлов.

Пример использования:
chown [опции] пользователь[:группа] файл…
root@debian7:

# chown zabbix:zabbix test_file01
Можно использовать рекурсию для изменения владельца всех файлов и каталогов:
root@debian7:

# chown -R zabbix:zabbix testdir02

chgrp — изменить группу файлов

Изменим группу у файла:
root@debian7:

# chgrp zabbix test_file01
Или рекурсивно для каталога:
root@debian7:

# chgrp -R zabbix test_file01

На этом обзор основ работы с правами закончен. Более подробную информацию можно найти в разделе «1.2.3. Filesystem permissions» руководства.

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

источник

Права доступа к файлам в 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 с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.

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

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

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

  • — нет прав, совсем;
  • —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- — разрешена только запись и изменение файла;
  • -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r— — права только на чтение;
  • r-x — только чтение и выполнение, без права на запись;
  • rw- — права на чтение и запись, но без выполнения;
  • rwx — все права;
  • —s — установлен SU >

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

источник

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

Главное меню » Операционная система Linux » Разрешения и права доступа к файлам Linux с примерами

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

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

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

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

Владение файлами в Linux

Каждый файл и каталог в Linux имеет трех типов владельцев:

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

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

Группа

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

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

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

Другие

Другие – это в основном супергруппа со всеми пользователями в системе. В принципе, любой, кто имеет доступ к системе, принадлежит этой группе.

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

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

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

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

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

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

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

Общие сведения о разрешениях и правах доступа к файлам в Linux

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

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

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

  • File type (Тип файла) : Обозначает тип файла. d означает каталог, – означает обычный файл, l означает символическую ссылку.
  • Permissions (Разрешения) : В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
  • Hard Link Count (Количество жестких ссылок) : показывает, имеет ли файл жесткие ссылки. Счет по умолчанию – один.
  • User (Пользователь) : Пользователь, которому принадлежат файлы.
  • Group (Группа) : Группа, у которой есть доступ к этому файлу. Одновременно может быть только одна группа.
  • File Size (Размер файла) : Размер файла в байтах.
  • Modification timestamp (Время модификации) : Дата и время последнего изменения файла.
  • Filename (Имя файла) : Очевидно, имя файла или каталога.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Общая информация : Разрешения назывались режимом доступа и, следовательно, CHMOD была короткая форма изменения режима доступа.

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

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

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

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

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

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

Число разрешение
1 -x
2 -w-
3 (т.е. 2 + 1) -wx
4 r-
5 (т.е. 4 + 1) г-х
6 (т.е. 4 + 2) rw-
7 (т.е. 4 + 2 + 1) rwx

Можете ли вы догадаться о разрешении файла в цифрах в файле andreyex.txt в нашем примере? Это пишут, это 754.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изменение владельца файла в Linux

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

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

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

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

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

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

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

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

Бонус Совет: Есть ли приоритет в разрешениях на файлы?

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

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

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

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

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

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

Что еще?

Существуют некоторые расширенные разрешения для файлов, такие как установка Sticky bit для предотвращения удаления файлов и т. д.

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Читайте также:  Установка знак опасные грузы

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