Как автоматически получить доступ на запись к вновь созданным каталогам?

Доля на сервере определяется следующим образом

[share] path = ... read only = no create mask = 0777 directory mask = 0777 force create mode = 0777 force directory mode = 0777 valid users = dobiasd 

Он монтируется через fstab на клиенте:

 //server/share /home/dobiasd/share/ cifs file_mode=0777,dir_mode=0777,iocharset=utf8,username=dobiasd,password=dummy 0 0 

Клиент может создавать файлы и каталоги. Недавно созданный каталог также можно удалить, но невозможно создать новые файлы или каталоги внутри этого нового каталога. Для этого мне сначала нужно сделать chmod -R 777 . на сервере, поэтому «drwxrwxr-x» каталога становится «drwxrwxrwx».

Как я могу заставить samba создать новый каталог немедленно таким образом, чтобы в нем могли быть созданы подпапки?

Итак, это общий ресурс Samba, установленный на ящике Linux (клиенты, использующие Windows, не имеют проблемы)? Если я хорошо понимаю, это может быть только проблема umask . Если вы umask на своем клиенте, вы, вероятно, получите 0002 это значит, что при создании нового каталога его ACL – это rwxrwxr-x ( rw-rw-r-- для файлов).

Итак, если вы хотите, чтобы все ваши вновь созданные папки и файлы были доступны для записи в мире , вы можете установить umask 0000 (например, в ваш .bash_profile ). Конечно, это может быть плохая идея …

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

 chmod g+rwxs /path/to/share 

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

Пример, чтобы быть более понятным (здесь apaul является членом групп users (основной) и friends ):

 $ mkdir /tmp/share $ mkdir /tmp/share/dir1 $ ls -l /tmp/share drwxrwxr-x 2 apaul users 4096 7 april 21:48 dir1 $ chgrp friends /tmp/share $ chmod g+rwxs /tmp/share $ ls -ld /tmp/share drwxrwsr-x 4 apaul friends 4096 7 april 21:49 share/ $ mkdir /tmp/share/dir2 $ ls -l /tmp/share drwxrwxr-x 2 apaul users 4096 7 april 21:48 dir1 drwxrwsr-x 2 apaul friends 4096 7 april 21:49 dir2 

Затем все члены группы friends могут создавать подкаталоги (или файл) под общим ресурсом, но этот не является всемирно доступным для записи.