Назад | Перейти на главную страницу

Samba с Active Directory - общие ресурсы доступны только для чтения, NT_STATUS_MEDIA_WRITE_PROTECTED

Я установил самба-сервер, который, похоже, работает, однако все общие ресурсы экспортируются только для чтения. Машинка называется «люкс». Когда я нахожусь на 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, достаточна, чтобы сделать каталог доступным для записи.