Вопрос или проблема
Это сервер 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 и параметры конфигурации до установления источника проблемы.