Вопрос или проблема
Я пытаюсь настроить общий ресурс Samba на компьютере, к которому буду иметь доступ только я. Мне нужен полный доступ к этому компьютеру с моего Windows-машины. Я единственный пользователь обеих машин, и мне нужен полный доступ на чтение/запись к общему ресурсу.
Я пробовал это до сих пор, и я могу ВИДЕТЬ папки/файлы с моей Windows-машины, но не могу редактировать никакие файлы.
Мой код будет находиться на Linux-машине, и я буду использовать свой Windows-ноутбук для работы над ним.
- Мое имя пользователя в Windows — это просто моя электронная почта, назовем ее [email protected]
- Рабочей группы нет (это просто WORKGROUP).
- Мой пользователь Linux — “expert” (иронично, я знаю)
- Я использую Debian 9 (stretch). Установил сегодня с: debian-9.4.0-amd64-netinst.iso. Использовал KDE.
Вот мой smb.conf (комментарии удалены, секции печати удалены)
[global]
; wins server = w.x.y.z
; interfaces = 127.0.0.0/8 eth0
; bind interfaces only = yes
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Введите\sновый\s*\параметр:* %n\n *Повторите\sновый\s*\параметр:* %n\n *пароль\sуспешно\sобновлен* .
pam password change = yes
map to guest = bad user
########## Domains ###########
; logon path = \\%N\profiles\%U
; logon drive = H:
; logon script = logon.cmd
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
; add group script = /usr/sbin/addgroup --force-badname %g
############ Misc ############
; include = /home/samba/etc/smb.conf.%m
; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
; usershare max shares = 100
usershare allow guests = yes
#======================= Share Definitions =======================
[homes]
comment = Домашние директории
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
[Share]
comment = Общий ресурс с полным доступом
path = /home/expert/Projects/expert
browseable = yes
writable = yes
public = yes
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777
write list = 0777
valid users = nobody, admin, expert, anonymous, [email protected]
Когда я выполняю ls -ld .
в папке, где я хочу иметь полный доступ, я получаю:
drwxrwxrwx 3 expert expert 4096 <дата время> .
Я думал, назначив маски создания, директории и списки записи как 0777, я дам полный контроль Samba.
Последняя строка (valid users) была просто попыткой из пустоты с моей стороны (не сработало)
Несколько вещей, которые могут помочь в получении ответа на ваш вопрос.
Как вы установили Samba? Из репозиториев? Какая версия? samba --version
Какую Windows вы используете? Можете ли вы подключиться с Linux?
Несколько вопросов, которые вы можете решать по одному. Настройте Samba с минимальным набором конфигурационных записей. Обратите внимание на значения по умолчанию для вашей версии Samba. Создайте на рабочей установке.
Windows при подключении к SMB-доступу может отправлять ваше имя пользователя, гостя, отсутствие имени пользователя или другое имя пользователя.
Определите, какая информация передается от Windows к Linux Samba.
Вы можете проверить настройку пользователя Samba из командной строки Linux с помощью smbclient //host/share -U username
перед тем, как углубиться в то, что отправляет Windows.
Являются ли эти пользователи в базе данных паролей?
valid users = nobody, admin, expert, anonymous, [email protected]
passdb backend = tdbsam
Создание локальной учетной записи пользователя
pdbedit — управление базой данных SAM
Не забудьте перезапустить сервер Samba после изменения smb.conf
…
sudo service smbd restart
sudo service nmbd restart
Может, стоит начать с широко открытой настройки общего ресурса, а затем развивать его.
[global]
server string = Это: %h. Добро пожаловать.
workgroup = workgroup
netbios name = hostname
encrypt passwords = yes
## разрешения
server role = standalone
security = user
null passwords = yes
map to guest = Bad Password
guest ok = yes
guest account = nobody
# отладка Настройте для поиска проблем
log level = 2
# соединение IPC$, которое отображает общие ресурсы, выполняется как гость, и поэтому у вас должна быть действительная учетная запись гостя.
[IPC$]
path = /tmp
[lookie]
comment = открытый ресурс на %h
path = /samba/share/lookie
# все файлы, скопированные в этот общий ресурс, имеют полный доступ на чтение/запись для всех
create mask = 0777
delete readonly = yes
## Этот пользователь должен иметь права на чтение/запись к общей директории
## Может потребоваться R/W для полного пути до общей директории. Проверьте.
force user = expert
read only = No
browseable = yes
write list
ожидает список пользователей, которым должен быть предоставлен доступ на запись к сервису.
Поскольку вы установили write list = 0777
, только пользователь, чье имя пользователя буквально 0777
, будет иметь доступ на запись к общему ресурсу; все остальные пользователи получат доступ только на чтение, так же, как вы и испытываете.
Поскольку вы установили read only = no
, вам не следует устанавливать write list
вообще, чтобы получить желаемый доступ.
Ответ или решение
Чтобы настроить совместное использование Samba на Debian и устранить проблему с отсутствием прав на запись с вашей Windows-машины, следует учесть несколько важных моментов в конфигурации и настройках. Давайте поэтапно разберём возможные решения.
1. Проверка конфигурации Samba
Ваш текущий файл smb.conf
требует некоторых изменений. Обратите внимание, что директива write list
используется для указания списка пользователей, которые имеют доступ на запись. Ваша запись write list = 0777
настроена неправильно, так как это воспринимается как имя пользователя, а не как права доступа. Вместо этого, просто удалите эту строку.
Вот как может выглядеть исправленный вариант секции [Share]
:
[Share]
comment = Full Access Share
path = /home/expert/Projects/expert
browseable = yes
writable = yes
public = yes
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777
valid users = expert
2. Права доступа к папке
Проверьте права доступа к директории, к которой вы пытаетесь получить доступ. Вы уже указали, что они составляют drwxrwxrwx
. Убедитесь, что все пользователи имеют соответствующий доступ.
Используйте следующую команду для проверки прав доступа и владельца:
ls -ld /home/expert/Projects/expert
Если нужно, измените владельца и группу:
sudo chown expert:expert /home/expert/Projects/expert
3. Пользователи и права
Убедитесь, что ваш пользователь Samba был создан и добавлен. Ваша система использует tdbsam
для управления пользователями. Добавьте пользователя, если он ещё не был добавлен:
sudo smbpasswd -a expert
Это создаст новую запись Samba для пользователя expert
.
4. Проверка и перезапуск службы Samba
После внесения всех изменений важно перезапустить службы Samba, чтобы изменения вступили в силу:
sudo systemctl restart smbd
sudo systemctl restart nmbd
5. Проверка с Windows
Теперь проверьте, можете ли вы инициировать новое подключение к общей папке с вашей Windows-машины. Попробуйте подключиться с использованием имени пользователя и пароля, которые вы создали для Samba.
Если у вас есть доступ, но всё равно наблюдаются проблемы с правами, попробуйте выполнить подключение с другим пользователем:
smbclient //ip-адрес/Share -U expert
6. Дополнительные настройки
Если по-прежнему невозможно записать файлы:
- Убедитесь, что файлы в общей папке не имеют атрибутов, запрещающих запись.
- Проверьте настройки безопасности в Windows, возможно, некоторые антивирусные программы или политики безопасности блокируют запись.
Заключение
Изменив указанные в конфигурации параметры, обеспечив правильные права доступа и убедившись, что пользователь Samba создан и активен, вы должны получить необходимые права на запись. После выполнения этих шагов вы получите полный доступ к Samba-диску с вашей Windows-машины.