Получение новых файлов для наследования групповых разрешений для Linux

У меня проблема с разрешениями на сервере Linux. Я привык к BSD. Когда каталог принадлежит группе, пользователь, который владеет им, не такой, как www-data, создаваемые в нем файлы будут принадлежать этой группе. Это важно, потому что я хочу, чтобы файлы читались на веб-сервере (который я не буду запускать с правами администратора), но так что пользователь все равно может поместить новые файлы в каталог. Я не могу поместить пользователей в www-data, потому что тогда они могут читать все сайты других пользователей.

Я хочу, чтобы веб-сервер читал все веб-сайты, я хочу, чтобы пользователи могли изменять их собственные.

На данный момент разрешения установлены в папках …

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john 

Это стандартное поведение в BSD для разрешений на работу таким образом. Как мне заставить Linux сделать это?

2 Solutions collect form web for “Получение новых файлов для наследования групповых разрешений для Linux”

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

пример

 $ whoami saml $ groups saml wheel wireshark 

установить каталог с perms + владельцами

 $ sudo mkdir --mode=u+rwx,g+rs,gw,o-rwx somedir $ sudo chown saml.apache somedir $ ll -d somedir/ drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/ 

коснитесь файла как saml в этом каталоге

 $ whoami saml $ touch somedir/afile $ ll somedir/afile -rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile 

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

списки управления доступом

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

до

 $ ll -d somedir drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir 

установить разрешения

 $ sudo setfacl -Rdm g:apache:rx somedir $ ll -d somedir/ drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/ 

Обратите внимание на + в конце, это означает, что этот каталог имеет ACL, применяемые к нему.

 $ getfacl somedir # file: somedir # owner: saml # group: apache # flags: -s- user::rwx group::rx other::--- default:user::rwx default:group::rx default:group:apache:rx default:mask::rx default:other::--- по $ getfacl somedir # file: somedir # owner: saml # group: apache # flags: -s- user::rwx group::rx other::--- default:user::rwx default:group::rx default:group:apache:rx default:mask::rx default:other::--- по $ getfacl somedir # file: somedir # owner: saml # group: apache # flags: -s- user::rwx group::rx other::--- default:user::rwx default:group::rx default:group:apache:rx default:mask::rx default:other::--- по $ getfacl somedir # file: somedir # owner: saml # group: apache # flags: -s- user::rwx group::rx other::--- default:user::rwx default:group::rx default:group:apache:rx default:mask::rx default:other::--- по $ getfacl somedir # file: somedir # owner: saml # group: apache # flags: -s- user::rwx group::rx other::--- default:user::rwx default:group::rx default:group:apache:rx default:mask::rx default:other::--- 

после

 $ touch somedir/afile $ ll somedir/afile -rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile $ $ getfacl somedir/afile # file: somedir/afile # owner: saml # group: apache user::rw- group::rx #effective:r-- group:apache:rx #effective:r-- mask::r-- other::--- 

Обратите внимание, что разрешения по умолчанию ( setfacl -Rdm ) установлены так, что разрешения ( rx ) по умолчанию ( g:apache:rx ). Это заставляет все новые файлы иметь только один бит.

Обратите внимание, что в файловой системе ext2 / 3/4 вы можете реплицировать поведение BSD, описанное вами, используя bsdgroups монтирования bsdgroups в разделе. На странице mount(1) man:

 grpid|bsdgroups and nogrpid|sysvgroups These options define what group id a newly created file gets. When grpid is set, it takes the group id of the directory in which it is created; otherwise (the default) it takes the fsgid of the current process, unless the directory has the setgid bit set, in which case it takes the gid from the parent directory, and also gets the setgid bit set if it is a directory itself. 
  • Как разрешить пользователю OpenLDAP записывать данные в точку монтирования SSHFS?
  • Как бы вы назначили разрешения только для чтения для запуска ls -l / proc / {pid} / fd для процессов, которые у вас нет?
  • Как получить права доступа для моей резервной копии?
  • Должен ли я взять на себя права собственности / media, / mnt и / opt или присоединиться к группе root?
  • sudo tar изменяет права собственности на файлы неизвестного пользователя
  • encfs с ожиданием доступа отказано
  • Разрешения NFS для нескольких виртуальных машин LXC
  • Почему владелец папки не может писать в папку, созданную другим пользователем
  • Служба не запускается при отказах разрешений - в каких файлах она не работает?
  • SELinux: Можно ли отключить копирование определенных файлов?
  • Возможно ли сделать файлы исполняемыми владельцем по умолчанию?
  • Interesting Posts

    Как автоматически смонтировать USB-флэш-диск с простой зашифровкой на моем маршрутизаторе OpenWRT?

    Где я могу найти драйвер Linux для наушников в дереве ядра?

    Инструменты и стратегии для анализа устаревшего приложения на основе сценариев оболочки

    Можно ли в реальном времени заменить текст в оболочке?

    Звук HDMI выходит из строя, решает, спустя несколько месяцев повторяет отказ (Intel NUC – монитор Viewsonic)

    Команда «Я» на linux ubuntu

    Как я могу автоматически прекратить отключение шпатлевки

    Нет видео с проигрывателем HTML 5 на YouTube под Iceweasel

    Изменение пароля учетной записи пользователя postfix непосредственно в базе данных MySQL

    open () для дескрипторов файлов по умолчанию

    Способ командной строки для загрузки видео с YouTube в многопоточном режиме

    Разница между максимальным размером резидентного набора, указанным / usr / bin / time vs. getrusage?

    Как отметить поток с помощью iptables?

    Установка Linux без UEFI

    Погрузитесь в исходный код qemu для отслеживания запросов io

    Linux и Unix - лучшая ОС в мире.