Убедитесь, что вновь созданные файлы / папки принадлежат пользователю И группе родительской папки.

Глядя на другие вопросы, я сделал следующее:

chmod g+s MEDIA 
setfacl -R -d -m g::rwx MEDIA 
setfacl -R -d -m o::rwx MEDIA 

ПРИМЕЧАНИЕ: МЕДИА - это папка, которую я хочу настроить, чтобы все добавленные файлы / папки имели того же пользователя / группу, что и родительская папка.

В этом примере МЕДИА принадлежит пользователю Бобу и группе SharedFiles . Цель состоит в том, чтобы вновь созданные файлы / папки сохранили это право собственности (как Боб , так и SharedFiles :

MEDIA Bob SharedFiles
MEDIA/NewFolder Bob Bob   <BAD
MEDIA/NewFolder Bob SharedFiles   <GOOD

Если я создаю подпапку при входе в систему как пользователь «Боб», эта папка будет принадлежит Бобу: SharedFiles с разрешениями [rwxrwxrwx] (как и предполагалось). Все хорошо!

Если я войду как Сью, новая папка станет частью Сью: Сью с [rwxr-xr-x].

Если я войдите с другой машины через смонтированный диск в KDE (пользователь Сью), папка становится частью Боба: Боб с [rwxr-xr-x].

Теперь и Боб, и Сью являются частью SharedFiles, в чем я ошибаюсь Я хочу, чтобы все пользователи в группе SharedFiles имели разрешения RWX, и я хочу, чтобы все файлы / папки, созданные пользователями в группе SharedFiles, имели того же пользователя / группу, что и родительская папка, почему это происходит только с владельцем на самом компьютере.

getfacl MEDIA/

возвращает

# file: MEDIA/
# owner: Bob
# group: SharedFiles
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

samba.conf содержит:

[MEDIA]
 read only = no
 locking = yes
 path = /mnt/local/int001/MEDIA
 guest ok = yes
 create mask = 0775
 directory mask = 0775
0
13.07.2017, 00:51
1 ответ

Samba склонна навязывать собственное представление о правах доступа и владельцах файлов, чтобы более точно имитировать (иерархический )стиль разрешений NTFS.

Если вы расширите определение Samba, включив в него директивы force userи force group, вы можете гарантировать, что все файлы, созданные в общем ресурсе (через Samba ), будут иметь указанного владельца и группу.

[MEDIA]
  read only = no
  locking = yes
  path = /mnt/local/int001/MEDIA
  guest ok = yes
  create mask = 0664
  directory mask = 0775
  force user = Bob
  force group = SharedFiles

Однако вы не можете реализовать то же самое напрямую с локальными пользователями, потому что пользователь не может создать файл, принадлежащий кому-то другому. Вот где inotifywaitможет помочь. Настройте его при загрузке, чтобы отслеживать иерархию каталогов и изменять владельца любого вновь созданного файла :

.
cd /mnt/local/int001/MEDIA || exit
inotifywait --monitor --recursive --event create --format '%w%f'. |
    while IFS= read -r file
    do
        if [[ -f "$file" || -d "$file" ]] && [[ ! -h "$file" ]]
        then
            chown Bob:SharedFiles "$file"
            chmod u+rw,go=u,o-w "$file"
        fi
    done

С этим inotifywaitрешением вам не нужны ACL файловой системы.

Лично я не уверен, что вам действительно нужно менять владельца файла. Указанные вами ACL (и соответствующий force groupв Samba )гарантируют, что все пользователи дерева каталогов могут получить доступ к файлам и каталогам в нем. Есть веская причина для отказа обычным пользователям chown.

1
28.01.2020, 04:44

Теги

Похожие вопросы