Samba通过ad域进行认证并限制空间大小《转载》
本文实现了samba服务被访问的时候通过windows域服务器进行用户名和密码验证;认证通过的用户可以自动分配500M的共享空间;在用户通过windows域登陆系统的时候可以自动把这块空间映射成一块硬盘。
环境说明:
文件服务器用的Centos5.3,域控用的Win2k3 sp2,Domain是rainbird.net。
Centos5.3:
Name:Filesrv
IP:192.168.1.245
Dns:192.168.1.241
Samba:3.0.33-3.7.el5
Win2k3:
Name:ad1
Ip:192.168.1.241
Dns:192.168.1.241
Ok,let’s move!
因为是服务器配置,所以本文的操作都是在字符界面下直接编辑文件。当然为了提高工作效率其中一部分配置是可以在图形界面下配的。前提是你必须是redhat/centos系统。如果是的话,可以参考我上一篇文章<<linux加入windows域之完美方案>>来做J
1.samba服务器软件需求
krb5-workstation-1.2.7-19
pam_krb5-1.70-1
krb5-devel-1.2.7-19
krb5-libs-1.2.7-19
samba-3.0.5-2
[root@filesrv CentOS]# rpm -qa|grep krb5
krb5-auth-dialog-0.7-1
krb5-libs-1.6.1-25.el5
krb5-devel-1.6.1-25.el5
pam_krb5-2.2.14-1
krb5-workstation-1.6.1-25.el5
[root@filesrv CentOS]# rpm -qa|grep samba
samba-swat-3.0.28-0.el5.8
samba-common-3.0.28-0.el5.8
samba-client-3.0.28-0.el5.8
samba-3.0.28-0.el5.8
如果centos在安装的时候没有取消默认选中的”Base”,则krb5的包是默认全部安装
如果没有选择安装samba可以这样安装
[root@filesrv CentOS]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
[root@filesrv CentOS]# rpm -ivh --aid samba*.rpm
2.配置kerberos(关键)
下面配置参数让 Kerberos 进程知道处理活动目录服务器,对 /etc/krb5.conf 做适当的修改,修改时需要注意的是 Kerberos 是大小写敏感的。
这是我的krb5.conf配置文件:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
ticket_lifetime = 24000
default_realm = RAINBIRD.NET //默认域名
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
RAINBIRD.NET = {
kdc = 192.168.1.241:88 //域服务器ip
# admin_server = kerberos.example.com:749
default_domain = RAINBIRD.NET
}
[domain_realm]
. rainbird.net = RAINBIRD.NET
rainbird.net = RAINBIRD.NET
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
3.测试kerberos
kinit administrator@RAINBIRD.NET
kinit 命令将测试服务器间的通信,administrator为域内存在的用户, RAINBIRD.NET 是你的活动目录的域名,必须大写。
正确操作的提示:
[root@filesrv~]# kinit administrator@RAINBIRD.NET
Password for administrator@RAINBIRD.NET: (正确输入密码后直接返回)
[root@filesrv~]#
可能遇到的几个常见错误:
域名错误:
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
4.修改/etc/nsswitch.conf
passwd: files winbind
shadow: files winbind
group: files winbind
5.配置samba
修改/etc/samba/smb.conf如下几行
workgroup = RAINBIRD
server string = Filesrv
password server = AD1.RAINBIRD.NET //域服务器,可以用ip也可以用域名
realm = RAINBIRD.NET //活动目录服务器域名
security = ads //采用活动目录认证方式
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /sbin/nologin
template homedir = /home/%U
winbind use default domain = true
winbind offline logon = true
winbind enum groups = yes
winbind enum users = yes
winbind separator = /
红色部分是要修改的,蓝色部分是要新增的。建议直接把已经存在的注释掉,把这里列出来的东西,直接放进去,这样在一块方便查找。
我们现在把samba服务器加入windows域。
[root@filesrv1 samba]# net ads join -U administrator@RAINBIRD.NET
administrator@RAINBIRD.NET's password:
Using short domain name -- RAINBIRD
Joined 'FILESRV1' to realm 'RAINBIRD.NET'
提示是”Joined”哟~
加入失败可能的原因:
两台机器的时间不一致!
重新启动服务
service smb restart
service winbind restart
设定服务开机自动启动
chkconfig smb on
chkconfig winbind on
咱们去Windows 2003 服务器上检查一下:打开活动目录用户和计算机,查看其中的条目,如果成功的话,就可以看到你的 Linux 服务器。
这里样你可以用wbinfo做一些测试
验证Samba主机已成功加入AD
[root@filesrv samba]# wbinfo -t
checking the trust secret via RPC calls succeeded
说明主机信任已成功建立
使用wbinfo –u 可以列出AD中注册的帐号信息
[root@filesrv samba]# wbinfo -u
administrator
guest
support_388945a0
krbtgt
rainbird
rainbow
a
a1
a2
root
a3
a4
a5
a6
a7
a8
a9
a10
Wbinfo –g可以返回AD中的组信息
[root@filesrv samba]# wbinfo -g
domain computers
domain controllers
schema admins
enterprise admins
domain admins
domain users
domain guests
group policy creator owners
dnsupdateproxy
可能的错误
如果你wbinfo –t 测试的时候提示如下:
[root@filesrv samba]# wbinfo -t
checking the trust secret via RPC calls failed
error code was (0x0)
Could not check secret
说明你winbind服务没起动,重启一下就OK了
当然了有必要说一下,winbind如果提示启动成功但没有启动的话,有可能是因为你没有加入到域。
[root@filesrv1 ~]#vi /etc/fstab
/dev/hdb1 /home ext3 defaults,usrquota,grpquota
选择分区,将defaults选项改为:“defaults,usrquota,grpquota”(针对用户和组做磁盘配额)或“defaults,usrquota"(针对用户做磁盘配额 )或"defaults,grpquota"(针对组做磁盘配额)
[root@filesrv1 ~]#mount –o remount /home
[root@filesrv1 ~]#quotacheck –cmug /home
[root@filesrv1 ~]# edquota -u administrator
inodes: 已写多少个文件;soft:磁盘文件数量软限制;hard:磁盘文件数量硬限制)
查看磁盘配额情况
[root@filesrv1 home]#quota -u administrator
8.域用户登陆自动挂载自己的共享文件夹




Samba通过ad域进行认证并限制空间大小《转载》的更多相关文章
- Samba通过ad域进行认证并限制空间大小
最近正在做单位电脑的AD域管理. 为漫游用户文件,研究配置Samba通过ad域进行认证并限制空间大小. 参考了很多资料,现总结如下: DC:windows server 2016(配置安装域控制器)略 ...
- Java利用jcifs集成AD域用户认证
近期一段时间发现AD这东西老火了,尤其是涉及到安全这一方面的,所以AD域用户认证成了如今网络安全方面的产品必备!这里就简单的分享一下,Java通过jcifs集成AD域用户实现认证,以实现网络安全! 我 ...
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- Samba结合AD实现域帐号认证的文件服务器
准备一台Windows域控制器, 在Samba服务器上安装Webmin图形化管理工具, samba, krb5-user, winbind. 修改/etc/krb5.conf. [logging] d ...
- freeradius整合AD域作anyconncet认证服务器
一.服务器要求 Radius服务器:centos6.6.hostname.selinux disabled.stop iptables AD域服务器:Windows Server 2008 R2 E ...
- Python实现AD域认证
Python 通过ldap进行ad域账号的校验. 首先需要安装python-ldap的模块 http://www.python-ldap.org/. 在这里用的是windows系统,当然比较容易,下载 ...
- Jenkins配置AD域认证
Jenkins配置AD域认证 #检测域控地址ping youad.com指向的IP #如果不是实际域控ip地址,则修改hosts vi /etc/hosts #192.168.100.100替换为实际 ...
- Ldap实现AD域认证
1.java Ldap基础类 package com.common; import java.io.FileInputStream; import java.io.IOException; impor ...
- SANGFOR AC配置AD域单点登录(二)----AD域侧配置及单点登录认证、注销测试
1.AD域侧配置 1)新建组策略并配置logon登录脚本,以实现用户开机登录域时,自动通过AC认证 AD域服务器"运行"输入gpmc.msc,打开组策略编辑器,如下图. 右建需要 ...
随机推荐
- js-事件委托
事件委托一般用于动态生成的元素中使用,如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...
- Swift 字符串连接
// 使用+直接相加 var i = var str = "Hello" str = str + " jinpangpang" // 可以使用这种方式连接整值 ...
- Mysql中natural join和inner join的区别
假设有如下两个表TableA,TableB TableA TableB Column1 Column2 Column1 Column3 1 2 1 3 TableA的Column1列名和TableB的 ...
- Flask学习记录之Flask-Migrate
一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...
- python生成html文件浏览器中文显示乱码问题
近来在网上采集数据,想把采集下来的数据整合成html的形式保存.以便其他的平台产品可以直接读取html显示或者根据html标签提取数据. def output_html(self): try: fou ...
- ie6兼容性
文本重复Bug 在IE6中,一些隐藏的元素(如注释.display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug.解决办法:给浮动元素添加display:inline;. 躲猫 ...
- 理解java的三大特性之多态(三)
摘自:http://cmsblogs.com/?p=52 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已 ...
- cf C. Purification
http://codeforces.com/contest/330/problem/C 这道题分三种情况.有一行全是E,有一列全是E,还有一种为无解的情况. #include <cstdio&g ...
- qt http 下载文件
本文章介绍如何利用HTTP从网站上下载文件.在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议.对于HTTP就不多解释了. 在Qt网络编程中,需要用到协议,即HTTP ...
- Qt调用VC++生成的动态链接库
Qt如何调用VC++生成的动态链接库?假设当前有VC++编译器生成的动态库文件testdll.h,testdll.lib和testdll.dll. testdll.h文件源码如下: #ifdef TE ...