背景:
在上次的背景之下(见上一文章),管理员发现公司内现有部门不多,但员工数量非常的多.如果按照用户一个一个的去创建用户并用smbpasswd增加samba的登陆用户非常的麻烦.而且公司内已经存在一台windows 2003 server域控制器(建立方法),并且包含所有员工的帐号信息.在此管理员想通过windows 2003 server域控制器的帐号来作为samba的登陆帐号.
 
环境:
 
   Windows 2003 Server    Linux Samba's Server
IP地址       192.168.1.1/24    192.168.1.250/24
DNS          192.168.1.1              192.168.1.1
hostname  gz                     rhel
域              eric.local 
 
 配置:
一.linux加入到AD域(这步暂时大家先放一下,因为我后面步骤没有使用到.大家先做后面的步骤如果不行在返过来做这一步骤.以前在RHEL AS4的时候,用这步骤是很简单就能成功的,但我用RHEL AS5就不知道为什么怎么都不成了.)
 
#vi /etc/krb5.conf
 
修改为以下内容 (注意区分大小写,还有就是自己正确替换为自己的域)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = ERIC.LOCAL(验证域的realm,必须全部大写)
dns_lookup_realm = false
dns_lookup_kdb = false
[realms]
ERIC.LOCAL = {
kdc = 192.168.1.1:88
default_domain = ERIC.LOCAL(缺省域名,同样必须全部大写)
}
[domain_realm] 
.eric.local= ERIC.LOCAL
eric.local = ERIC.LOCAL
 
后面不用修改,省略......

做完这里的话就测试一下
#kinit administrator@ERIC.LOCAL            (@ERIC.LOCAL必须大写)
 
输入AD里的administrator密码,如果没有任何的提示.直接返回到shell里的话就表示已经成功了.但这并不代表已经加入了域.继续看下去
 
修改samba的主配置文件
#vi /etc/samba/smb.conf
 
修改以下的内容
workgroup = ERIC        # <-- 这里的 workgroup 见图1就知道填什么了.
realm = ERIC.LOCAL   # <-- 建立的域名称
security = ADS
password server = 192.168.1.1 # <-- windos AD 域控制器的完整主机名。也可以用 IP 地址来代替
 
workgroup的填写内容就在登陆到里显示了!!,图1
 
 
然后就基本可以了.
启动samba服务
#service smb start
 
同步时钟,加入域必须时差在5分钟内!
#ntpdate 192.168.1.1
 
测试与加入域
#kinit administrator@ERIC.LOCAL  
 
#net ads join  (在AS4的话用这句很容易就加到域的,但AS5中我怎么都加不到.所以krb5.conf文件就变得似呼没有用了.)
 
#net rpc join -S gz.eric.local -U administrator (如果上句不行就试试这一句,我AS5就是用rpc方式连接域的,功能上没有ADS强.)
Net rpc join –S (pdc全名) –U administrator
 
 
如果能够加入后,在AD域可以在windows 2003 server里看到rhel
 
 
到这里其实就只是加入域而已,但并不能用AD帐号登陆samba
 
二.将AD帐号同步到linux里.这里要用到一个工具winbind
修改samba的主配置文件
#vi /etc/samba/smb.conf
 
在配置文件中添加以下内容
idmap uid = 10000 - 20000
idmap gid = 10000 - 20000
template shell = /sbin/nologin
template homedir = /home/%D/%U
winbind separator = %
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
encrypt passwords = yes
 
修改以下内容
[home]
         path = /home/%D/%U
         browsable = no
         writable = yes
         create mask = 0664
         directory mask = 0775
 
前面不是看到/home/%D/%U这样的目录吗?我们就要手工去创建这个目录了.不过这里比较麻烦,AD帐号的个人目录必须要工的去创建,而不能说自动的检测是否已存在,不存在自动创建.不知道哪个高手能够说说有什么方法解决,我想到用脚本去做.但还在测试中...大家说说你们的高见
#mkdir /home/ERIC
 
#chmod -R 777 /home/ERIC
 
 
添加winbind写入帐号的信任
#vi /etc/nsswitch.conf
 
修改以下位置
passwd:    files   winbind
shadow:    files   winbind
group:       files   winbind
 
保存然后就重启两个服务
#service smb restart
 
#service winbind start
 
再加入域语句和前面一样,我这就不再写了.
 
加入成功后就测试一下!
#wbinfo -t       #看winbind是否正常运行
 
#wbinfo -u      #看AD用户是否同步过来了
 
 
基本上到这里就已经完成了配置.到windows测试一下吧!
 
 
我先来说一下存在的问题:
1.首先最亟待解决的问题就是AD帐号主目录的自动建立问题,一直想不到好的解决方法.暂时有一个方向是用脚本去实现,还在研究当中.
 
2.net ads join不能够加入域,只能用net rpc join的方法.不知道哪个高人能指点一下.
 
以上是我暂时想到的问题,大家在操作研究中如果发现有什么问题可以提出来大家讨论一下.学习Linux就必须多思考,而不是到处搜索.版本多了,并不一定网上的转载就正确.讨论才是解决的好办法!哈哈
2个小时前,我发表了一篇名为<samba结合AD实现大型网络方案>的文章.在文章中,存在着一个问题,那就是不能够自动的创建AD用户的主目录,因此我就利用中午时间开始了研究.
 
在研究中,我想起了用以前做VSFTP的时候,曾用pam来自动创建一些帐号.因此我也找了一下文章,发现有一个文件可以做到这个功能.那文件名叫作pam_mkhomedir.so.这文件的使用原理是在大家在linux下登陆才创建目录,也就是说通过samba的就不能够自动创建.有关这文件的使用大家可以看下面的地址
 
[url]http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_mkhomedir.html[/url]
 
上面有清楚的说明使用的方法.
 
我就受这文件的启发,还有就是我一直的一个思路所影响.开始研究那个pam_mkhomedir.so的原理.最后我想到了以下这个方法.
 
在SAMBA的主配置文件下的[homes]增加一句执行脚本的代码
preexec = /home/ERIC/buildhome %D %U %G
 
然后就保存文件.接下来就到/home/ERIC下创建脚本了!
#vi /home/ERIC/buildhome
 
脚本的内容如下
umask 077    
domain=$1  
user=$2      
group=$3    
 
if [ ! -d /home/$domain/$user ] ; then
mkdir /home/$domain/$user
chown $user /home/$domain/$user
chgrp $group /home/$domain/$user
if
 
分配权限
#chmod 777 /home/ERIC/buildhome
 
然后就重启samba服务
#service smb restart
 
 
到此就完成了一个samba的自动化了!

转载于:https://blog.51cto.com/xiaomilonely/239707

samba and AD相关推荐

  1. Samba通过ad域进行认证并限制空间大小《转载》

    本文实现了samba服务被访问的时候通过windows域服务器进行用户名和密码验证;认证通过的用户可以自动分配500M的共享空间;在用户通过windows域登陆系统的时候可以自动把这块空间映射成一块硬 ...

  2. linux 加入ad 用ssh,使用samba验证AD用户,允许AD用户登录到linux

    使用samba验证AD用户,允许AD用户登录到linux 2007年06月26日 星期二 14:10 1.先把samba加入到AD域中 2.在smb.conf中添加一行,让登录进来的用户使用bash ...

  3. 2021-07-22 CentOS7.6 Samba使用AD域控认证(winbind),亲测有效。

    CentOS7.6 Samba使用AD域控认证(winbind),亲测有效. centos7: https://www.freesion.com/article/44621398696/ cetnos ...

  4. windows文件迁移到linux,从Windows到Linux迁移之文件服务器(Samba和AD完美结合)

    经过在网上查找好多资料,现在终于搞定了Samba的用户管理由AD 域控制器来执行,也就是说把samba 服务器加入到AD 域中,使之成为AD中的member server,这样就可以逐步把Window ...

  5. ad域文件服务器迁移到samba,将AD域漫游用户配置文件放在samba服务器中

    书接上回https://www.cnblogs.com/jackadam/p/11448497.html 我们已经将linux服务器设置为域成员,启动samba服务后,已经实现了使用域账号验证,自动创 ...

  6. Samba结合Windows AD

    五.Samba结合Windows AD samba集成AD认证并限制空间 1.安装必须程序 yum install -y krb5-workstation yum install -y pam_krb ...

  7. CentOS6.3 Samba安装配置、多用户、加域

    CentOS6.3 Samba安装配置.多用户.加域 2013-09-09 20:24:27 标签:Samba AD samba 域 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  8. Linux中用tar包配置samba,Linux建域使用samba(二)——安装Samba

    Linux建域使用samba(二)--安装Samba 2020年07月15日 | 萬仟网IT编程 | 我要评论 Linux建域使用samba安装Samba相关依赖安装直接安装源码编译安装下载源码包执行 ...

  9. linux加入windows域之完美方案

           笔者这几天在研究samba服务通过ad域进行用户验证.在查资料的过程中发现.关于linux加入windows域,网上资料不少,但是按着网上的说法做大多不成功,甚至很多人估计都不知道自己在 ...

最新文章

  1. 曝光机与曝光能量_LED曝光机
  2. java jsch_java使用JSCH实现SFTP文件管理
  3. php的$_SERVER['HOSTNAME']
  4. [20170606]11G _optimizer_null_aware_antijoin.txt
  5. 假如程序员面试都说真话
  6. java中的jackson_Java中的JSON数据绑定框架Jackson使用介绍
  7. 什么是管理大数据技术
  8. 怎么才能取消和实现XP/windows 7自动登陆
  9. python爬虫淘宝评论_记录一次爬取淘宝/天猫评论数据的过程
  10. 高等数学(第七版)同济大学 习题1-2 个人解答
  11. Network: 光纤猫下无线路由器的设置
  12. 【Unity3D】资源文件 ③ ( Unity 资源包简介 | 导出 Unity 资源包 | 导出资源包的包含依赖选项 | 导入 Unity 资源包 | Unity 资源商店 )
  13. 字符串包含单引号加上mybitis${}写法引发的plese exclude tableName or statementId异常
  14. 厂长来了 | 从个人英雄到软件工程,我们经历了什么
  15. 【回溯专题】—— 回溯算法入门篇
  16. 防范返贫监测预警系统开发设计
  17. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一
  18. 洛谷-P2550-彩票摇奖
  19. 自己努力要学习啦(android的很多demo 总有你需要的)
  20. 【Caffe学习三】基于ROC-RK3399-PC/Ubuntu18.04的Caffe-SSD-CPU 安装编译___BUG

热门文章

  1. 基于Docker的GoldenGate部署
  2. NOIP 2016【蚯蚓】
  3. Linux环境下的Popush部署——张凯
  4. ASP.NET MVC 在控制器中获取某个视图动态的HTML代码
  5. mongodb 部署
  6. .net生成随机字符串
  7. 从客户端(CourseIssueContent=P财务审计师岗位认证招生简章BR...)中检测到有潜在危险的 Request.Form 值。...
  8. 两个Python web框架:Django Tornado比较
  9. MongoDB在不同主机间复制数据库和集合的教程_MongoDB_脚本之家
  10. Visual Studio Code 使用 ESLint 增强代码风格检查 - gyzhao - 博客园