我已经设置了一个似乎可以正常工作的samba服务器,但是所有的份额似乎都是只读的。 该机器被称为“lx”。 当我在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
我还在nsswitch.conf中添加了winbind组,passwd和shadow。
看似Kerberos的作品:
root @ lx:〜#net ads testjoinjoin即可root @ lx:〜#wbinfo -a'Administrator%MYSECRETPASSWORD'明文密码validation成功查询/响应密码validation成功
wbinfo -u和wbinfo -g也吐出用户列表和groupsley列表。 我注意到,域帐户不包括一个域,他们是在德国(如在SBS 2003是域服务器)。 所以我在wbinfo -u的输出中得到一个“Domänenbenutzer”而不是“CUSTOMER +域用户”或类似的东西。
我不知道我对PAMconfiguration做了什么,但是这里是我现在拥有的:
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
在某个时候,我join了Linux域到AD域。
在(手动)在Linux机器上创build主目录之后,我可以使用Adminstrator用户使用从AD获取的密码login。
现在我使用以下设置运行samba:
[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
目前我不在乎是否将导出导出到每个人或只有一个用户,我想在开始摆弄身份validation设置之前,看到有人正在写入该目录。 (谁可以访问它)。
如前所述,从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::rx other::rx 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::rx other::rx 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
我的,我的东西我忽略了什么? 我该瞎看什么?
我刚刚花了大量的时间debugging我的服务器,并认识到共享和共享目录不能有相同的名称。
我不知道为什么。 我希望别人在这个过程中比我更早地陷入了这个过程。
如果被称为“导出”的其他名称的共享正常工作。 很平坦,这花了我相当长的一段时间才弄清楚。 因此,如果我将它分享为“exportt”(dobule-t),那么它是可读写的,如果我将它分享为“导出”,则它是只读的。
还有一个问题,是“出口”一些神奇的股份名称?
我还logging了共享名称和目录名称不能相同,或共享将是可见和只读尽pipe权限。 当共享名称被修改为与目录(或磁盘)名称不同时,假设它和用户具有正确的权限,它将变为可写。
我发现这与NTFS磁盘和文件夹安装在Ubuntu中,以前使用相同的共享名称在NTFS共享。 Win和Linux共享工具在创build时默认为其共享名称的目录或磁盘名称,所以默认情况下内置冲突。 简单地添加一个字符到Linux共享名称使其可写。
如果磁盘或目录不是NTFS或是NTFS,但从未共享,则这可能会也可能不会。 似乎以前使用的NTFS共享名称在Ubuntu和Linux中安装时保留,通过将共享设置为只读来处理冲突。
一个名为\ My Music的NTFS目录共享在Ubuntu中简单地重命名为\ My Muzak就足以使目录成为可写的。