Получение новых файлов для наследования групповых разрешений для 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. 
  • Apache создал файлы и разрешения для CentOS 6.x
  • Разрешения по пути вместо битов режима файла
  • Как предоставить права пользователя на изменение прав собственности на файлы / каталоги в каталоге
  • Автоматически устанавливать группу файлов и разрешения не путем наследования из каталога
  • Есть ли способ увидеть разрешения всех промежуточных каталогов пути.?
  • Изменения владельца файла после редактирования редактируемого файла группы
  • Переназначить первичную группу с помощью пользователя LDAP
  • Не удается заставить Wireshark работать как пользователь на CentOS
  • touch: не может касаться «теста»: разрешение отклонено
  • Как архивировать структуру dir, игнорируя файлы и диски без разрешения на чтение
  • Механизм разрешения файлов в Unix-подобных системах
  • Linux и Unix - лучшая ОС в мире.