Если вы администрируете какой-либо сервер, у вас может возникнуть необходимость создать общую папку, к которой будут иметь доступ все пользователи на сервере. Например, необходимо, чтобы они имели возможность создавать в ней файлы и все эти файлы были доступны всем пользователям на сервере.
В этой небольшой статье мы рассмотрим как настраиваются общие папки Linux с помощью стандартной системы полномочий Linux.
Общие папки в Linux
Как вы знаете, в Linux есть своя система полномочий для файлов и папок, в которой можно разрешить чтение, запись и выполнение для пользователя владельца, определённой группы пользователей и всех остальных. Если вы забыли как это работает ознакомьтесь со статьей Права доступа к файлам и Группы пользователей Linux.
Сначала давайте создадим саму папку:
sudo mkdir /var/share
Если надо разрешить доступ к папке всем, то достаточно установить такие права:
sudo chmod ugo+rw -R /var/share
Или:
sudo chmod 766 -R /var/share
Эти две команды аналогичны. Они включают для владельца файла полный доступ к нему, а для группы и всех остальных - только чтение и запись. Опция -R позволяет применить изменения рекурсивно ко всем подпапкам и файлам в этом каталоге. Для того чтобы разрешить вообще всё используйте маску прав 777:
sudo chmod 777 -R /var/share
Теперь все пользователи смогут не только создавать и читать файлы в этой папке, но и выполнять их.
Если же надо чтобы папка была доступна только нескольким пользователям, надо объединить их в группу. Например, в группу project. Если такой группы не существует, создайте её:
sudo groupadd project
Для добавления пользователя в группу используется команда usermod. Например, для пользователей losst и losst1 команды будут выглядеть так:
usermod -aG project losst
usermod -aG project losst1
Затем группу папки надо изменить на project. Для этого можно воспользоваться командой chgrp:
sudo chgrp project -R /var/share
Осталось сделать права для этой папки. Кроме стандартных прав, которые разрешают чтение, запись и выполнение файлов для группы project нам необходимо установить SGID бит. Если этот флаг устанавливается для файла, то он позволяет выполнять этот файл с правами группы файла, но если он устанавливается для папки, то все файлы и папки, создаваемые в ней будут получать ту же группу что и у этой папки. Это как раз то, что нам надо:
sudo chmod ug+rwx -R /var/share
sudo chmod +s -R /var/share
Или:
sudo chmod 2774 /var/share
Маска прав 774 разрешает всё группе и владельцу, и разрешает только чтение всем остальным. Можно запретить им и чтение заменив 4 на 0, получится 770. После этого оба пользователя losst и losst1 смогут создавать файлы в этой папке, а также оба получат доступ к созданным файлам.
Как видите всё очень просто. А если вам надо создать общую папку, доступную по сети посмотрите на статью про настройку NFS или Samba.
Здравствуйте, уважаемый. =) В силу специфики работы сижу полностью на бубунте. =) Информацию по настройке черпаю чаще всего у Вас. Сейчас занимаюсь шарой для сетевых пользователей. И, появился вопрос. Нужно ли создавать на файло-сервере пользователя, если он заходит в свою расшаренную папку удалённо? Т.е., не будет ли достаточно указать в информации о разрешениях для папки кто ею владеет? Спасибо!
Владелец папки должен реально существовать на сервере.
Здравствуйте, админ.
Описанный способ работает только наполовину, кмк
Ок, создали папку с 777. User1 залогинился и создал в ней файл, который теперь принадлежит ему и группе имени его. Дефолтные права для other - read.
User2 залогинился, и не может поправить в этом файле пару строк, потому что нельзя.
Что делать?
"Теперь все пользователи смогут не только создавать и читать файлы в этой папке, но и выполнять их." - Неверно. Права выполнения на папку не влияют на права выполнения файлов в этой папке. Для папок это право "на проход".