Вопрос или проблема
Я пытаюсь заставить ksmbd работать на машине под управлением Bookworm. Но независимо от того, использую ли я графический интерфейс Linux, командную строку или клиент Windows 10, я не могу просматривать файлы или директории в подключенной общей папке. Однако я могу создавать файлы и директории на сервере ksmb, редактировать их и снова удалять. Поскольку все клиенты работают одинаково, я полагаю, что это проблема ksmbd. Вся следующая информация взята из командной строки Linux. Кстати, независимо от того, вхожу я на сервер через ssh или sshfs, пользователь ‘henning’ всегда видит файлы и директории. Примечание. Все файлы на сервере в /zPool являются монтированиями репозиториев ZFS с posix acl.
Когда я использую общую папку “example” из моего ksmbd.conf, которая указывает на /tmp на сервере, все работает как ожидается.
Это ошибка или я что-то упускаю? Не нашел ни одного намека…
Давайте посмотрим на точку монтирования перед началом
# vdir /mnt/NAS/
insgesamt 8
drwxrwxr-x 2 admin admins 4096 29. Jul 2020 .
drwxr-xr-x 15 root root 4096 31. Dez 19:14 ..
монтируем общую папку в локальную директорию
# mount -t cifs //pve.dry.lan/tmp /mnt/NAS/
Password for henning@//pve.dry.lan/tmp:
ошибок нет, кажется, ничего не произошло клиент
# vdir /mnt/NAS/
insgesamt 4
drwxr-xr-x 2 root root 0 12. Jun 2022 .
drwxr-xr-x 15 root root 4096 31. Dez 19:14 ..
но попробуйте создать папку и файл, пока ошибок нет
# mkdir /mnt/NAS/ksmbd-test-dir
# echo 1234 > ksmbd-text.txt
кажется, ничего не произошло снова
# vdir /mnt/NAS/
insgesamt 4
drwxr-xr-x 2 root root 0 12. Jun 2022 .
drwxr-xr-x 16 root root 4096 31. Dez 19:17 ..
посмотрим на сервере, новые созданные элементы там
$ vdir /zPool/tmp/
...
drwxrwsr-x+ 2 henning admins 2 Dec 31 19:19 ksmbd-test-dir
-rwxrwxr-x+ 1 henning admins 5 Dec 31 19:20 ksmbd-test.txt
...
$ getfacl /zPool/tmp/
getfacl: Removing leading "https://unix.stackexchange.com/" from absolute path names
# file: zPool/tmp/
# owner: admin
# group: admins
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:admins:rwx
default:mask::rwx
default:other::r-x
$ getfacl /zPool/tmp/ksmbd-test
ksmbd-test-dir/ ksmbd-test.txt
root@pve:/zPool/tmp# getfacl /zPool/tmp/ksmbd-test-dir/
getfacl: Removing leading "https://unix.stackexchange.com/" from absolute path names
# file: zPool/tmp/ksmbd-test-dir/
# owner: henning
# group: admins
# flags: -s-
user::rwx
user:admin:rwx
group::r-x
group:admins:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:admins:rwx
default:mask::rwx
default:other::r-x
$ getfacl /zPool/tmp/ksmbd-test.txt
getfacl: Removing leading "https://unix.stackexchange.com/" from absolute path names
# file: zPool/tmp/ksmbd-test.txt
# owner: henning
# group: admins
user::rwx
user:admin:rwx
group::r-x
group:admins:rwx
mask::rwx
other::r-x
наконец файл ksmbd.conf
[global]
; global parameters
bind interfaces only = no
deadtime = 0
guest account = nobody
interfaces =
ipc timeout = 0
kerberos keytab file =
kerberos service name =
kerberos support = no
map to guest = never
max active sessions = 1024
max connections = 128
max open files = 10000
netbios name = KSMBD SERVER
restrict anonymous = 0
root directory =
server max protocol = SMB3_11
server min protocol = SMB2_10
server multi channel support = no
server signing = disabled
server string = SMB SERVER
share:fake_fscaps = 64
smb2 leases = no
smb2 max credits = 8192
smb2 max read = 4MB
smb2 max trans = 1MB
smb2 max write = 4MB
smb3 encryption = auto
smbd max io size = 8MB
tcp port = 445
workgroup = WORKGROUP
durable handles = no
; default share parameters
browseable = yes
comment =
create mask = 0744
crossmnt = yes
directory mask = 0755
force create mode = 0000
force directory mode = 0000
force group =
force user =
guest ok = no
hide dot files = yes
inherit owner = no
invalid users =
oplocks = yes
path =
read list =
read only = ; yes
store dos attributes = yes
valid users =
veto files =
vfs objects =
write list =
[example]
comment = read only /tmp access
path = /tmp
[tmp]
comment = temp share
path = /zPool/tmp
create mask = 0774
directory mask = 0775
force group = admins
hide dot files = no
read only = no
write list = henning,moni
Ответ или решение
Если вы видите пустую папку на клиентской стороне при использовании ksmbd, важно выявить источник проблемы, учитывая предоставленные данные и конфигурации. Данная инструкция поможет вам разобраться в ситуации и предусмотреть возможные решения.
Понимание проблемы
Согласно описанию, вы сталкиваетесь с ситуацией, где при подключении к общему ресурсу через различные платформы файловый каталог кажется пустым, хотя операции создания и удаления файлов успешно завершаются. На основании этой информации проблема может быть связана с правами доступа или конфигурацией самой службы ksmbd.
Исследование проблемы
1. Проверка прав доступа
- ACL и Posix ACL: Убедитесь, что ACL для
/zPool/tmp
и вложенных каталогов настроены правильно. Права должны быть достаточными для всех пользователей, которые будут работать с файлом через SMB. - Владелец и группа: Проверьте, что пользователь
henning
имеет соответствующие права для доступа и что они не переписываются конфигурацией ksmbd.
2. Анализ конфигурации ksmbd
- Файл конфигурации:
- Проверьте параметры
browseable
,create mask
, иdirectory mask
в секции[tmp]
. Убедитесь, что они не ограничивают права доступа. - Убедитесь в корректном перечислении пользователей в параметрах
write list
. - Проверьте опцию
read only = no
, чтобы убедиться, что запись действительно разрешена.
- Проверьте параметры
3. Сравнение с другим функционирующим ресурсом
- Ваша конфигурация показывает, что общие ресурсы, указывающие на
/tmp
, работают должным образом. Попробуйте использовать подобные настройки для/zPool/tmp
и проверить, исправляется ли проблема.
4. Мониторинг и журналирование
- Включите расширенное логирование на сервере SMB для определения ошибок или предупреждений, связанных с доступом и обнаружением файлов.
- Используйте команды, такие как
smbstatus
, для отслеживания активных соединений и открытых файлов.
Возможные решения
-
Корректировка прав: Убедитесь, что ACL настроены корректно, и пользователь
henning
имеет необходимые права на запись и чтение. -
Настройки конфигурации: Примените проверенные на
/tmp
параметры для/zPool/tmp
, чтобы подтвердить их работоспособность. -
Логирование ошибок: Анализируйте журналы для поиска ошибок, связанных с правами или несовпадениями конфигурации.
Заключение
Итак, решить проблему можно улучшением настройки прав и глубоким анализом конфигурации ksmbd. Внимательное изучение данных аспектов может помочь вам вернуть доступность и видимость файлов на клиентской стороне. Убедитесь, что минимальные требования к правам доступа соблюдаются, и адаптируйте удачные настройки для полного устранения проблемы.
Если вы следуете вышеизложенным шагам, будьте уверены, что имеете все шансы на успешное исправление данной проблемы с ksmbd.