Файлы, перемещенные из Linux в Samba-расшаривание на том же сервере, невидимы для других пользователей.

Вопрос или проблема

Это сервер Rocky Linux 9.0, который работает в качестве службы, принимающей файлы от шлюза. Служба перемещает файлы в папку, которая общается через Samba. Эти файлы не видны в общем доступе Samba при подключении с сервера Windows.

Я пытаюсь устранить эту проблему уже несколько дней, и вот что я обнаружил.

Файлы, перемещенные внутри файловой системы, независимо от того, каким пользователем или группой они были созданы, не видны в общем доступе. Я пытался установить бит setgid и использовать команду setfacl, чтобы сделать файлы унаследованными группой, но это не сработало.

Служба, которая принимает файлы, устанавливает для них права 0600. Хотя это не имеет значения, так как создание файла с правами root в другом месте файловой системы и изменение владельца на root:sambagroup и прав на 777 перед перемещением его в общую папку также не работает.

Попытки использовать chmod или chown непосредственно на файле после перемещения или копирования не работают. Файлы все еще невидимы.

Файлы, созданные непосредственно через WinSCP, будь то создание файла с его помощью или копирование с другого сервера, работают. Файлы, созданные с помощью команды touch непосредственно в общей папке, тоже видны.

Я также могу создавать и сбрасывать файлы в общем доступе из Windows.

Это проблема Samba или проблема самого операционного системы? Как я могу это решить?

Вот smb.conf:

       [global]
            server string = Samba Server %v
            netbios name = MYSERVER
            security = user
            dns proxy = no
            server min protocol = SMB3
            server max protocol = SMB3
            client min protocol = SMB3
            client max protocol = SMB3
    
       [sambashare]
            path = /srv/samba/sambashare/
            valid users = @sambagrp
            guest ok = no
            writable = yes
            browsable = yes

Ответ или решение

Проблема невидимости файлов, перемещаемых из Linux в Samba-share на одной и той же машине, может быть связана с несколькими факторами, включая настройки прав доступа, механизм кэширования, а также параметры конфигурации Samba. Ниже приведены шаги для диагностики и решения данной проблемы.

1. Проверка прав доступа

Убедитесь, что права на директорию Samba-share позволяют необходимым группам доступ к файлам. Вы упомянули, что файлы создаются с правами 0600. Следовательно, группа samba не имеет доступа к ним. Вы можете изменить права доступа для директории содержимого с помощью следующих команд:

sudo chown -R root:sambagrp /srv/samba/sambashare
sudo chmod -R 2770 /srv/samba/sambashare

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

2. Проверка настроек ACL

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

sudo setfacl -m g:sambagrp:rwx /srv/samba/sambashare
sudo setfacl -R -m d:g:sambagrp:rwx /srv/samba/sambashare

3. Проблемы с кэшированием

Samba может кэшировать информацию о файлах. После переноса файлов попробуйте перезагрузить сервис Samba, чтобы убрать кэш:

sudo systemctl restart smb nmb

Можно также попробовать отключить кэширование в smb.conf, добавив следующие строки:

   dos filemode = yes
   vfs objects = acl_xattr

4. Проверьте журнал Samba

Запускайте Samba с подробными логами, чтобы отладки проблемы. В файле конфигурации smb.conf добавьте следующий параметр:

   log level = 3

После перезапуска проверьте логи в /var/log/samba/, чтобы увидеть, есть ли какие-либо ошибки или предупреждения, связанные с правами доступа.

5. Перемещение файлов

Обратите внимание, что файлы, созданные службой или перемещаемые с неправильными правами, могут не отображаться. Попробуйте скопировать файлы в samba-share с помощью mv или cp, изменив на них права доступа перед перемещением:

sudo cp /path/to/source /srv/samba/sambashare/
sudo chmod 664 /srv/samba/sambashare/source

6. Пересмотрите конфигурацию Samba

Убедитесь, что раздел в smb.conf настроен правильно. Например, можно удалить или изменить следующую строку, чтобы упростить доступ:

   valid users = @sambagrp

Если все пользователи должны иметь доступ к файлам, замените эту строку:

   valid users = @sambagrp, @users

Заключение

После выполнения вышеуказанных шагов попробуйте заново переместить файлы и проверьте их доступность на Samba-share. Если проблема все еще не решена, необходимо продолжить анализировать логи Samba и параметры конфигурации до установления источника проблемы.

Оцените материал
Добавить комментарий

Капча загружается...