Я установил самба-сервер, который, похоже, работает, однако все общие ресурсы экспортируются только для чтения. Машинка называется «люкс». Когда я нахожусь на lx, я могу выполнить следующую команду:
froh@lx:~$ smbclient //lx/export -UAdministrator
Enter Administrator's password:
Domain=[CUSTOMER] OS=[Unix] Server=[Samba 3.5.4]
smb: \> mkdir wrzlbrmpf
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \wrzlbrmpf
smb: \> ls
. D 0 Fri Dec 3 19:04:20 2010
.. D 0 Sun Nov 28 01:32:37 2010
zork D 0 Fri Dec 3 18:53:33 2010
bar D 0 Sun Nov 28 23:52:43 2010
ork 1 Fri Dec 3 18:53:02 2010
foo 1 Sun Nov 28 23:52:41 2010
gaga D 0 Fri Dec 3 19:04:20 2010
Как я могу решить эту проблему?
Что я сделал:
Сначала я установил новую версию Ubuntu 10.10 x64.
Во-вторых, Kerberos работает со следующим файлом krb5.conf:
[libdefaults]
ticket_lifetime = 24000
clock_skew = 300
default_realm = CUSTOMER.LOCAL
[realms]
CUSTOMER.LOCAL = {
kdc = SB4.customer.local:88
admin_server = SB4.customer.local:464
default_domain = CUSTOMER.LOCAL
}
[domain_realm]
.customer.local = CUSTOMER.LOCAL
customer.local = CUSTOMER.LOCAL
#[login]
# krb4_convert = true
# krb4_get_tickets = false
Я также добавил winbind в group, passwd и shadow в nsswitch.conf.
Вроде Kerberos работает:
root @ lx: ~ # net ads testjoin Присоединиться к этому нормально root @ lx: ~ # wbinfo -a 'Administrator% MYSECRETPASSWORD' аутентификация с открытым текстом паролем выполнена успешно, аутентификация по паролю запроса / ответа выполнена успешно
wbinfo -u и wbinfo -g также выводят список пользователей и список групп соответственно. Я заметил, что учетные записи домена НЕ включают домен, и они на немецком языке (как на SBS 2003, который является сервером домена). Поэтому в выводе wbinfo -u я получаю «Domänenbenutzer», а не «КЛИЕНТ + пользователь домена» или что-то подобное.
Я больше не уверен, что я сделал с конфигурацией PAM, но вот что у меня сейчас есть:
root@lx:/etc/pam.d# cat samba
@include common-auth
@include common-account
@include common-session-noninteractive
root@lx:/etc/pam.d# grep -ve '^#' common-auth
auth [success=3 default=ignore] pam_krb5.so minimum_uid=1000
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
root@lx:/etc/pam.d# grep -ve '^#' common-account
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account requisite pam_deny.so
account required pam_permit.so
account required pam_krb5.so minimum_uid=1000
root@lx:/etc/pam.d# grep -ve '^#' common-session-noninteractive
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_krb5.so minimum_uid=1000
session required pam_unix.so
session optional pam_winbind.so
В какой-то момент я присоединил Linux к домену AD.
После (вручную) создания домашнего каталога в окне Linux я могу войти в систему, используя пользователя Adminstrator с паролем, взятым из AD.
Теперь я запускаю самбу со следующей настройкой:
[global]
netbios name = LX
realm = CUSTOMER.LOCAL
workgroup = CUSTOMER
security = ADS
encrypt passwords = yes
password server = 192.168.20.244 #IP des Domain Controllers
os level = 0
socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = Yes
winbind enum groups = Yes
preferred master = no
winbind separator = +
dns proxy = no
wins proxy = no
# client NTLMv2 auth = Yes
log level = 2
logfile = /var/log/samba/log.smbd.%U
template homedir = /home/%U
template shell = /bin/bash
[export]
path = /mnt/sdc1/export
read only = No
public = Yes
В настоящее время меня не волнует, экспортируется ли экспорт для всех или только для одного пользователя, я хочу, чтобы кто-нибудь ПИСАЛ в этот каталог, прежде чем я начну возиться с настройками аутентификации. (Кто может получить к нему доступ).
Как уже упоминалось, доступ к общему ресурсу из smbclient приводит к этому NT_STATUS_MEDIA_WRITE_PROTECTED.
Доступ к нему из Windows показывает ACL, которые выглядят правильно (пользователь может писать), но это не работает, я могу только читать файлы, а не писать.
Каталог, который нужно экспортировать, выглядит так:
root@lx:/etc/pam.d# ls -ld /mnt/
drwxr-xr-x 5 root root 4096 2010-11-28 01:29 /mnt/
root@lx:/etc/pam.d# ls -ld /mnt/sdc1/
drwxr-xr-x 4 froh froh 4096 2010-11-28 01:32 /mnt/sdc1/
root@lx:/etc/pam.d# ls -ld /mnt/sdc1/export/
drwxrwxrwx+ 5 administrator domänen-admins 4096 2010-12-03 19:04 /mnt/sdc1/export/
root@lx:/etc/pam.d# getfacl /mnt/
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: mnt/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
root@lx:/etc/pam.d# getfacl /mnt/sdc1/
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: mnt/sdc1/
# owner: froh
# group: froh
user::rwx
group::r-x
other::r-x
root@lx:/etc/pam.d# getfacl /mnt/sdc1/export/
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: mnt/sdc1/export/
# owner: administrator
# group: domänen-admins
user::rwx
group::rwx
group:domänen-admins:rwx
mask::rwx
other::rwx
default:user::rwx
default:group::rwx
default:group:domänen-admins:rwx
default:mask::rwx
default:other::rwx
Боже мой, что я не замечаю? Что я должен видеть слепым?
Я только что потратил невероятное количество времени на аналогичную отладку своего сервера и пришел к осознанию того, что общий ресурс и общий каталог не могут иметь одно и то же имя.
Понятия не имею почему. Я надеюсь, что кто-то еще наткнется на это раньше, чем я.
Общий ресурс работает правильно, если он называется другим именем, кроме "экспорт". Очень странно, мне потребовалось некоторое время, чтобы понять. Поэтому, если я делюсь им как "exportt" (dobule-t), это чтение-запись, если я делюсь им как "экспорт", он доступен только для чтения.
Остается один вопрос, является ли «экспорт» каким-то волшебным именем для общего ресурса?
Я также задокументировал, что имя общего ресурса и имя каталога не могут быть одинаковыми или общий ресурс будет видимым и доступен только для чтения, несмотря на разрешения. Когда имя общего ресурса изменяется так, чтобы оно отличалось от имени каталога (или диска), оно станет доступным для записи, если оно и у пользователя есть правильные разрешения.
Я обнаружил это с дисками NTFS и папками, смонтированными в Ubuntu, которые ранее использовались в NTFS с теми же именами общих ресурсов. Инструменты общего доступа Win и Linux по умолчанию используют каталог или имя диска для своего общего ресурса во время создания, поэтому конфликт является встроенным по умолчанию. Простое добавление символа к имени общего ресурса Linux сделало его доступным для записи.
Это может быть или не быть правдой, если диск или каталог не являются NTFS или NTFS, но никогда не использовались совместно. Похоже, что ранее использовавшиеся имена общих ресурсов NTFS зарезервированы при монтировании в Ubuntu, а Linux решает конфликт, делая общий ресурс доступным только для чтения.
Общая папка NTFS с именем \ My Music, просто переименованная в \ My Muzak в Ubuntu, достаточна, чтобы сделать каталог доступным для записи.