Eu configurei um servidor samba que parece funcionar, mas todos os compartilhamentos aparentemente são exportados como readonly. A máquina é chamada "lx". Quando estou em lx, posso executar o seguinte comando:
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
Como posso solucionar isso?
O que eu fiz:
Primeiro eu configurei uma nova instalação do Ubuntu 10.10 x64.
Segundo, eu tenho kerberos trabalhando com o seguinte arquivo 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
Eu também adicionei o winbind ao group, passwd e shadow no nsswitch.conf.
Aparentemente, o Kerberos funciona:
root @ lx: ~ # anúncios líquidos testjoin
Join is OK
root @ lx: ~ # wbinfo -a 'Administrador% MYSECRETPASSWORD'
autenticação de senha em texto simples foi bem-sucedida
autenticação de senha de desafio / resposta foi bem-sucedida
wbinfo -u e wbinfo -g também citam uma lista de usuários e uma lista de grupos respeitosamente. Observei que as contas de domínio NÃO incluíam um domínio e estão em alemão (como no SBS 2003 que é o servidor de domínio). Então eu recebo um "Domänenbenutzer" na saída do wbinfo -u não um "CUSTOMER + Usuário do Domínio" ou algo semelhante.
Não tenho mais certeza do que fiz com a configuração do PAM, mas aqui está o que tenho atualmente:
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
Em algum momento, juntei-me à caixa do Linux no domínio do AD.
Após (manualmente) criar um diretório pessoal na caixa linux, posso efetuar login usando o usuário Adminstrator com a senha retirada do AD.
Agora eu corro o samba com a seguinte configuração:
[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
Atualmente, não me importa se a exportação é exportada para todos ou apenas para um usuário. Quero ver alguém escrevendo para esse diretório antes de começar a mexer nas configurações de autenticação. (Quem pode acessá-lo).
Como mencionado, acessar o compartilhamento dos resultados do smbclient neste NT_STATUS_MEDIA_WRITE_PROTECTED.
Acessar a partir do Windows mostra as ACLs que parecem corretas (o usuário pode escrever) - mas não funciona, só consigo ler arquivos que não escrevo.
O diretório a ser exportado é assim:
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
Meu, oh meu que eu estou negligenciando? O que sou cego para ver?