Главная >> Инструкции >> Как дать права на папку пользователю Linux

Как дать права на папку пользователю Linux

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

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

Права пользователя на папку Linux

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

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

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

ls -l / | grep storage

 

 

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

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

sudo groupadd storage
sudo usermod -aG storage sergiy

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

groups sergiy

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

sudo chgrp storage /storage

 

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

members storage

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

ls -l / | grep storage

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

chmod g+rw /storage

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

Выводы

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

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

21 комментарий к “Как дать права на папку пользователю Linux”

    • По умолчанию маска прав для папки - 755 или -rwxr-xr-x. На снимках экрана права для группы уже есть потому что они были заданы раньше. Если пользователь не выполнит команду chmod g+... то у него права доступа не появятся.

      Ответить
  1. Да согласен статья рассчитана на новичков, но хотелось бы побольше (детальнее) прочитать про pam, polkit, apparmor - что даёт большую гибкость в настройке прав да и начинает чаще встречаться в новых дистрибутивах.

    Ответить
    • Она и не очень нужна. Есть /etc/group, есть grep. Соорудить строчку типа:
      grep ^group_name /etc/group под силу даже новичкам Fedor-ы. В Дебиан, например, members тоже придётся устанавливать.

      Ответить
  2. Очень неполезные навыки прививает эта статья.
    Во-первых, нахрена в корне создавать какой-то левый каталог для пользователей системы? Есть хомяк для этих целей, вот в хомяке и создавайте левые шАры.
    Во-вторых, надо предупреждать откуда берется members, или давать универсальные средства вместо members.
    В-третьих, chmod g+rw /storage нахрена? У каталога уже есть права на чтение для группы. Нужно добавить права на запись? так и пишите: chmod g+w /storage... Прививаете любовь к печатанию лишних символов в командах? Блин... кто потом будет иметь дело с теми людьми, кто по таким вот статьям будут учиться?
    В-четвёртых, создаёте какую-то левую группу storage... Зачем захламлять систему?
    Статья вредна для новичков. Никогда не учитесь по таким статьям... Читайте маны, пользы будет в разы больше.

    Ответить
    • хоть бы 1 раз такие умники точную ссылку на какой нибудь ман дали
      пишут, словно бы всем остальным ясно

      тут люди сами ответы ищут, если бы было понятно где что искать

      Ответить
  3. Всем, Здравствуйте!
    Нужна помощь клуба.

    Имеется SSD-120 Gb Intenso SSD SATA III
    OS - Linux armv7l Raspibian Linux 9.

    Gparted форматирую SSD-шку в ext4, все нормально.
    Монтирую: mount /dev/sda1 /home, - получаю read-only партицию, любые извороты с fstab в плане RW, ничего не дают. Тупо в режиме R/O
    Хорошо, форматирую тотже диск в формат NTFS
    Монтирую туда же mount /dev/sda1 /home, - все ожило и едет, На диск все записывается, стирается.

    Вопрос: Что делаю не так, куда копать?
    Man-ы: mount, fstab, - искурены вдоль и поперек, гоглил 2 дня, похожей ситуации не обнаружил.

    Заранее благодарен за любые наводки
    P.S. все это затеялось с целью унести HOME на новый SSD диск.

    Ответить
  4. когда вы монтируете командой mount /dev/sda1 /home посмотрите на права каталога /home после монтирования, если там будет хозяин root и группа root, то у вас и получится read-only для всех остальных пользователей. После монтирования партиции измените права на конечный каталог точки монтирования. Типа chown user.group /home. И после этого уже пробуйте стучаться этим юзером и группой. Пример можно посмотреть в конце статьи по ссылке здесь, увидите там на двух последних скриншотах похожая ситуация.

    Ответить
  5. Феликс, Спасибо за ответ!
    Я в курсе про права на каталог, дело в том, что даже ROOT не может ничего изменить, потому как диск ушел в режим Read/Only.
    Любая операция с диаком выдает сообщение, - ничего нельзя сделать, потому что диск в режиме read/only.
    в FSTAB прописано
    /dev/sda1 /home rw,noatime 0 0
    и если попытаться сделать ремоунт с консоли mount -o remount -o rw, все равно пишет о невозможности выполнения ввиду read/only.
    В формате NTFS диск монтируется тоже root:root, но туда пользователю позволено писать/читать/исполнять.
    Тут что-то происходит в системе, когда диск в форате ext4 появляется.

    Ответить
    • Зачем вы монтируете в /home? Обычно, когда переносят хомяк на другой диск делают следующее:

      1. Размечают новый диск и создают на нём файловую систему.
      2. Монтируют новый диск в каталог /mnt
      3. Переносят из каталога /home все пользовательские каталоги в каталог /mnt
      4. Редактируют /etc/fstab, создают новую точку монтирования в нём и нацеливают её на новый раздел диска с соответствующими опциями.
      5. Перезагружают машину и наслаждаются новым дисковым пространством в хомяке.

      Все действия выполняются рутом. Чтобы каталоги пользователей без проблем перенеслись из /home в /mnt, достаточно, чтобы ни один из пользователей не был залогинен в системе.

      Вы же монтируетесь в /home... Почему? Зачем?

      Ответить
  6. Во-первых: тут уже до меня всё высказали.
    Во-вторых: не папки, а директории или каталоги.
    В-третьих: если уж разговор зашёл о правах, то где эти самые права selinux? Ну, хотябы просто ls -Z и chcon?

    Ответить
  7. Ещё большей путаницы я и не видел! Кто на ком стоял? При чем тут storage, И пример непонятен совсем.
    Зачем все эти перемены, Зачем делать ещё одного пользователя? а потом отдавать ему права, и что значит ПЕРЕЛОГИНИТЬСЯ?
    Это наверно выйти и зайти, от какого пользователя? и куда зайти?
    Потрудитесь говорить не загадками , а если взяли на себя труд объяснить, то не пишите на языке понятным только вам.

    Ответить
  8. Как у полного новичка возникло непонимание, как перелогиниться.
    Нагуглил что можно так. Может будет полезно остальным.
    su - $USER

    Автору спасибо за статью! Этот момент можно дополнить. В остальном всё получилось.

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

    Ответить
  10. Забираю свои слова обратно, я забыл перелогиниться, используя коментарий Andrew сделал это и всё получилось на ubuntu 23

    Ответить
  11. Смысл читать всю документацию, пока найдешь и прочитаешь уже устарело или уже новое вышло.
    А здесь кратко, по конкретному вопросу.

    Уважение автору поста за работу (хотя ссылка на мануал не помешала бы)

    Ответить

Оставьте комментарий