No Image

Debian права на папку

СОДЕРЖАНИЕ
814 просмотров
10 марта 2020

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

Отобразить права доступа на объекты можно с помощью команды «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, то файл запустится с идентификатором группы-владельца этого каталога.

Читайте также:  Nvidia geforce gtx 480 характеристики

С правами доступа в абсолютном виде дело обстоит следующим образом: для каждого объекта безопасности можно задать права в виде 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)

Читайте также:  Встроенный модуль beidou в телефоне что это

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

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

  • Изменить права для всех – тогда все пользователи получат доступ к нашей папке, в том числе и нужный пользователь. Но, обычно, так никто не делает, потому что это небезопасно и в производственных системах важные данные могут попасть в чужие руки;
  • Изменить владельца папки на нашего пользователя – по умолчанию владелец имеет полные права на папку, то есть запись и чтение. Если мы сделаем владельцем нашего пользователя, то он автоматически получит все права, а другие пользователи по-прежнему не смогут получить доступ к папке. Но такой вариант тоже не совсем правильный, потому что, обычно, у папки уже есть владелец и изменив владельца мы уберем у него доступ;
  • Добавить к папке группу и добавить в нее пользователя – самый верный путь. Файл или папка может принадлежать определенной группе пользователей, но только одной, и мы можем установить для этой группы отличающиеся от владельца права. Но в группу можно добавить несколько пользователей, поэтому мы никого не оставляем без доступа. По умолчанию, для всех файлов устанавливается группа владельца, но это можно очень просто изменить.
Читайте также:  Php округлить в большую сторону

Теперь давайте разберем как это реализуется на практике. Допустим, у нас есть папка /storage, владельцем которой является пользователь /root:

ls -l / | grep storage

У папки такие права, что записывать в нее данные может только root, а другие пользователи могут их только смотреть. Нам надо предоставить к ней доступ на запись и чтение пользователю sergiy. Сейчас у него такого доступа нет:

Давайте создадим группу storage и добавим в нее пользователя sergiy:

sudo groupadd storage
sudo usermod -aG storage sergiy

Смотрим список групп нашего пользователя:

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

sudo chgrp storage /storage

Если нужно дать права на папку в Linux еще какому-нибудь пользователю, то достаточно добавить его в эту группу. Посмотрим список пользователей группы:

Теперь наша папка выглядит вот так:

ls -l / | grep storage

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

chmod g+rw /storage

Затем пользователь sergiy сможет записывать и читать файлы из этой папки, а все остальные пользователи только читать.

Выводы

В этой небольшой статье мы рассмотрели дать права пользователю linux на доступ к папке. Для серверов это может быть достаточно частой задачей, поскольку пользователи – это не только люди, использующие систему, но и программы, выполняемые от имени того или иного пользователя. А это создает еще одно применение для этой системы прав. Если у вас остались вопросы, спрашивайте в комментариях!

Небольшая подсказка для тех, кто постоянно забывает:)
Для изменения прав доступа на каталог(папку) или файл необходимо написать в консоли:

Если же нужно поменять права всем файлам и каталогам(папкам), находящимся в каком то определенном каталоге(папке), то для этого добавляется команда -R, которая всем им рекурсивно изменит права:

Значения цифр, это три отдельных атрибута.
Первая цифра означает права для владельца файла/каталога, вторая — для группы, третья — для всех остальных.

0 (—) — ничего делать нельзя;
1 (—x) — выполнение;
2 (-w-) — запись;
3 (-wx) — запись, выполнение;
4 (r—) — чтение;
5 (r-x) — чтение, выполнение;
6 (rw-) — чтение, запись;
7 (rwx) — чтение, запись, выполнение.

Для смены владельца файлов или каталогов используем команду:

,где vasya — имя пользователя, users — группа.

И опять же, если нужно рекурсивно поменять владельца всех файлов и каталогов, находящихся в определенном каталоге, добавляем команду -R:

Комментировать
814 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector