#rpm -qa|grep samba
samba-3.0.23c-2
krb5-libs-1.5-17
禁用SELinux方式如下:cli下用setup命令配置
b.修改/etc/krb5.conf文件,该文件是kerberos的配置文件, Kerberos 是大小写敏感的。
典型的krb5.conf文件如下:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
default_realm = MYAD.COM//修改windows的dc
ticket_lifetime = 24000
dns_lookup_realm = false
dns_lookup_kdc = false
MYAD.COM = {
kdc = ms-aaaa.myad.com:88
admin_server = ms-aaaa.myad.com:749
default_domain = myad.com
}
.myad.com = MYAD.COM
myad.com = MYAD.COM
profile = /var/kerberos/krb5kdc/kdc.conf
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
其中需要我们修改的地方很少,以我的例子为例,修改后的文件如下:
kinit(v5): Cannot find KDC for requested realm while getting initial credentials.
密码错误,验证失败:
kinit(v5): Preauthentication failed while getting initial credentials. 用户不存在:kinit(v5): Client not found in Kerberos database while getting initial credentia 时间不一致:kinit(v5): Clock skew too great while getting initial credentials
其中administrator是域管理员账户,MYAD.COM是你的域名.
c.这一步是最主要的步骤了,就是修改/etc/samba/smb.conf配置文件.samba的主配置文件选项很多,在加上各版本中默认的选项都有所差异,在这里我就不列举典型的smb.conf文件了,我的smb.conf文件帖出来顺便介绍一下smb.conf文件中参数的意思!
comment 是对修改共享的备注。
path 指定共享的路径,可以配合Samba变量使用。例如可以指定path=/data/%m,这样如果一台计算机的NetBIOS名字是grind,它访问MyShare共享时就是进入/data/grind目录,而对于NETBIOS名是glass的计算机,则进入/data/glass目录。
allow hosts和deny hosts 和前面的全局设置的方法一样。
writeable 指定目录默认是否可写,也可以用readonly = no来设置可写。
user 设置所有可能使用该共享资源的用户,也可以用@group代表group组的所有成员,不同的项目之间用空格或逗号隔开。
valid users 能够使用该共享资源的用户和组。
invalid users 不能够使用该共享资源的用户和组。
read list 只能读取该共享资源的用户和组。
write list 能读取和写入该共享资源的用户和组。
admin list 能管理该共享资源(包括读写和权限赋予等)的用户和组。
public 该共享资源是否能被用户账号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes,其实和public = yes是一样的。
hide dot files 是否像UNIX那样隐藏以“.”号开头的文件。
create mode 新建立的文件的属性,一般是0755。
directory mode 新建立的目录的属性,一般是0755。
sync always 对该共享资源进行写操作后是否进行同步操作。
short preserve case 忽略文件名大小写。
preserve case 保持大小写。
case sensitive 是否区分大小写,一般选no,不然可能引起错误。
mangle case 混合大小写。
default case 默认的文件名是全部大写还是小写。
force user 强制建立文件的属主。如果有一个目录,让guest可以写,那么guest就可以删除,如果使用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除该目录了。
wide links 是否允许共享外符号连接,比如共享资源里有个连接指向非共享资源里的文件或目录,如果设置wide links = no将使该连接无法使用。
max connections = n 设置同时连接数是n。
delete readonly 能否删除共享资源里面已经被定义为只读的文件。
[global]
workgroup = MYAD//这个是你域名MYAD.COM点前面的东东。 //需要加入的域的netbios名,注意是域的netbios名,要大写
netbios name = centos //本机器的netbios名,有的版本没有这一项会没有这个,
要手动添加
server string = Samba Server //对该服务器的描述
printcap name = /etc/printcap
load printers = yes
cups options = raw
max log size = 50
password server = ms-aaaa.myad.com //这里是DC的FQDN,也可以写ip,但是有时候会出
问题,建议写FQDN
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
winbind separator = / //用户的域名和用户名之间的间隔,用什么随你心情
idmap uid = 1000000-2000000
idmap gid = 1000000-2000000 //域用户映射成Linux本地用户时所有的uid和gid范围.
template home = /home/%D/%U //与home文件夹中定义的作用相同.两者定义一个就行
template shell = /bin/bash //用户登陆后所使用的shell
winbind use default domain = yes //用户登陆使用默认的域
winbind enum users = yes
winbind enum groups = yes //有人说是自动创建用 getent passwd[group]看到的
用户和组的信息.具体有什么用,我也说不清楚
[homes]
comment = Home Directories
browseable = no
writable = yes
create mode = 0777
directory mode = 0777 //创建的文件和目录的默认权限
path = /home/%D/%U //用户主目录的相关设置
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
以上红色的部分都是要修改的,其余的都保持默认就行.好了,修改完成后,保存退出.然后用下面的命令测试 smb.conf是否有误:
在这里注意两个地方就行,一个是 Loaded services file OK. //说明你的配置文件没有错
"准"成员了.
启nmb,你还要打service nmb restart才行.....
然后就可以加入域了:
在这里我插一句,有时候用net ads join 会不好使,这时候就试试net rpc join 这种方式.
到这里,我们就已经把samba服务器加入到域里了,这时,在DC上,computers这个OU里就应该可以看到你的samba服务器了.
wbinfo -u // 查看域用户的映射信息
wbinfo -g
有时候会出现这样的错误信息,解决办法如下:
文件,但是有时候这些缓存会造成一些错误信息,就象我们刚才看到的那样,删除后,重启服务,让他重新
生成就行了.
到这里呢,我们的samba服务器就成功的加入到域里了,但是呢,却还不能实现域账户在Linux终端上的登陆.想要实现这个目的,其实也很简单,只需要修改下面几个文件就可以了:
shadow: winbind files
group: winbind files
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth required /lib/security/$ISA/pam_deny.so
auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_winbind.so //增加这一行,注意这两行的位置
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account required /lib/security/$ISA/pam_permit.so
password requisite /lib/security/$ISA/pam_cracklib.so retry=3
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/$ISA/pam_deny.so
session required /lib/security/$ISA/pam_unix.so
修改完毕后,根据上面smb.conf文件的配置,我们就可以实现用户的登陆了,不过还有一点要说明,就是在用户登陆前,必须手动创建他们的登陆主目录,并且赋予他们完全控制的权限.
要登陆用户administrator的目录,更改目录权限.
还有就是用户登陆Linux平台后,权限控制的问题.默认情况下,这种方式登陆到Linux平台的用户只有对自己主目录有完全控制权限,其余的文件均为只读.
shadow: files winbind
group: winbind files
我在这个试验过程中所碰到的问题如下:
NT_STATUS_NO_TRUST_SAM_ACCOUNT (0xc000018b)
NT_STATUS_INVALID_COMPUTER_NAME
在/etc/fstab中加入
LABEL=/ / ext3 defaults,usrquota,grpquota 1 1
启动磁盘配额(重启后仍有效)
touch /aquota.group
touch /aquota.user
chmod 644 /aquota.group
chmod 644 /aquota.user
/sbin/quotacheck –avugm
/sbin/quotaon –avug
设定test用户的配额为 20M(1000用户共用20000M)
setquota -u test 20000 20000 0 0 /
repquota –a