设为首页 收藏本站
查看: 1040|回复: 0

[经验分享] 使用samba3在ubuntu上搭建通过ad验证的文件服务器

[复制链接]
YunVN网友  发表于 2018-5-9 07:59:43 |阅读模式
  环境:
Linux:ubuntu server 11.04
Windows:Windows 2003 AD
ads模式涉及到Windows域网络中的Kerberos身份验证技术,除了需要配置主配置文件smb.conf外,还需要配置用于Kerberos身份认证的配置文件/etc/krb5.conf,用于控制Samba服务器Linux系统账户与Windows域账户交换的/etc/nsswitch.conf文件。还需要使用“net ads join -S”命令把Samba服务器加入到Windows AD域中。

第一步,安装所需的要软件包
apt-get install krb5-user
apt-get install winbind samba

第二步,修改/etc/krb5.conf (krb5-user软件包的配置文件)
在每一节中加入以下语句
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
# 指定Kerberos认证票证有效期
ticket_lifetime = 24000
#DOMAIN.INTERNAL是ad的后缀域名的大写
default_realm = DOMAIN.INTERNAL
# 指定无需DNS解析领域请求包
dns_lookup_realm = false
# 指定允许DNS解析kdc请求包
dns_lookup_kdc = ture
# 允许转发解析请求
forwardable = yes
[realms]
DOMAIN.INTERNAL = {
#domainserver.domain.internal是域控,还可以用IP的形式写,并加入端口号
#例如:kdc = 172.16.0.1:88/admin_server = 172.16.0.1:749
kdc = domainserver.domain.internal
admin_server = domainserver.domain.internal
default_domain = DOMAIN.INTERNAL
}
[domain_realm]
#domain.internal是ad的后缀域名
#设置一个领域搜索范围,并通过这两个语句可以使得领域名与大小写无关。
.domain.internal = DOMAIN.INTERNAL
domain.internal = DOMAIN.INTERNAL
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true # 允许转发请求
krb4_convert = false
}

第三步,修改/etc/samba/smb/conf,samba3的配置文件
[global]
security = ads
#设置允许的IP段
hosts allow = 192.168.1
encrypt passwords = yes
# 指定jeff用户作为来宾访问账户
guest account = jeff
#netbios name是linux的主机名
netbios name = ubuntu
#realm是在krb5.conf中定义的域名
realm = DOMAIN.INTERNAL
#password server就主域控,也可以写成IP地址
password server = domainserver.domain.internal
#workgroup是域的名字,不要后缀
workgroup = DOMAIN
#idmap id用来映射Linux用户到Windows用户SID,而且要确保这个id范围内没有被本地或者NIS用户占用,在winbind服务启动后,也不能在该ID范围内添加用户
idmap uid = 5000-10000000
idmap gid = 5000-10000000
#winbind将使用该分隔符来用户或组名。使用该配置将使得域用户表示为"MYDOMAIN+username",域组被表示为"MYDOMAIN+Domain Users"
winbind separator = +
#指定winbind服务是否能在系统上创建Windows域组或用户。
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
#用来指定为域用户产生主目录。其中%D代表域名,%U代表用户名
template homedir = /home/%D/%U
#控制samba在哪里寻找域用户的主目录。
template shell = /bin/bash
#当ad是win2003时必须要有以下两句
client use spnego = yes
domain master = no

第四步,配置名称解析,修改/etc/nsswitch.conf
Nsswitch.conf配置文件是用来控制在用户访问Samba服务器时与Windows域中DC中的用户账户的切换,使用DC中的用户账户来进行身份验证。Nsswitch.conf配置文件是在/etc目录下
按如下修改
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

第五步,配插PAM(入式验证模块)
编辑/etc/pam.d/common-account配置文件
只保留以下语句:
account sufficient pam_winbind.so
account required pam_unix.so
编辑/etc/pam.d/common-auth配置文件
只保留以下语句:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
编辑/etc/pam.d/common-password配置文件
修改语句为:
password required pam_unix.so nullok obscure min=4 max=50 md5
编辑/etc/pam.d/common-session配置文件
确保有以下语句:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session sufficient pam_winbind.so
session required pam_unix.so

第六步,建一个目录去保存域用户的家目录
目录的名字要与smb.conf中定义的WORKGROUP的值一样
例如:
mkdir /home/DOMAIN

第七步,初始化Kerberos,并把Linux加入Windows AD
kinit domain_admin_account@DOMAIN.INTERNAL
klist
#用户不用加后缀
net ads join -U domainadminuser
使用“wbinfo –u”可以在Samba服务器上查看域中现有的域用户账户,使用“wbinfo –g”命令可以查看域中现有的组账户。如果能列出这些账户出来,证明域加入真正成功了。用“wbinfo –t”命令确认Samba主机帐号在AD中正确注册。如果注册成功会有“checking the trust secret via RPC calls succeeded”的提示。

第九步,设置DNS
在Windows AD 的DNS上增加AD和Linux的正向和反向的主机记录,这一步不能少,少了会出现域用户无法打开Linux共享,提示没有权限的错误

第十步,重启samba服务
service smbd restart
service nmbd restart
/etc/init.d/winbind restart

第十一步,配置SUDO
1、在AD上建立一个叫UnixAdmins的组,并把需要使用sudo管理服务器的用户加入此组中
2、在linux中把UnixAdmins组加入到/etc/sudoers,使用户可以使用sudo
%UnixAdmins ALL = (ALL) ALL

最后一步,设置共享目录
编辑/etc/samba/smb.conf
[homes]
comment = Home Directories
browseable = no
writable = yes
path = /home/%U
valid users = %U
[share]
comment = All user's share directory
path = /usr/share
public = no
guest ok =yes
readonly = yes
[program]
comment = Program Files
path = /etc/program
# 指定该共享目录仅允许域网络中的administrtors组成员和alice用户访问
valid users = @administrator alice
public = no
writable = yes
[share01]
path = /home/TEST
#UnixAdmins:用户组,110110域用户名
valid users = @UnixAdmins 110110
public = no
writable = yes

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-457363-1-1.html 上篇帖子: 在Ubuntu下使samba能显示中文共享名的全过程 下篇帖子: 32位ubuntu linux识别3G以上内存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表