热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

巧用Winbind服务来使Window200xPDC为你做认证

文章标题:巧用Winbind服务来使Window200xPDC为你做认证。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  也许你公司的服务器大多是windows200x的,而且已经建了WIN200x的域来对公司的所有机器及用户做管理,而且这个域工作得很不错,所有用户的权限设置的也已经十分的合理。这时你想加一台linux或BSD的机器进去,来为公司的用户提供如ftp、samba等服务,因为在linux及BSD下的这些软件比在windows下的工作效率更高,更安全。你也许会碰到的一个问题是,在每台新架的linux及BSD服务器上都得重新加入很多用户,设置这些用户的权限、密码,如果你公司的员工很多的话,这个活还是很累人的。
  
  但既然已经在域中有了所有用户的认证信息,为什么不好好的利用它呢:)。SAMBA3中的winbind服务就为我们提供了这样的一个途径。首先你把这linux台服务器加到win200x域中,成为域中的成员服务器,然后用winbind服务把认证信息发给PDC,由PDC来做用户的认证。只要适当的设置winbind服务、PAM,你就能通过PDC来为你linux或BSD服务器上的ftp、samba、ssh服务来做认证,是不是很不错呢?
  下面是我在redhat7.3上用winbind+PAM实现对sshd、samba服务PDC认证的过程:
  
  1、使用的相关软件:
  samba-3.0.7 pam-0.75-32 (这些软件的安装过程我就不讲了,参考CU上的相关文件吧.
  
  2、实现方法:
  1) 在samba安装完成后,考贝libnss_winbind.so库到/lib目录下
  cp ../samba/source/nsswitch/libnss_winbind.so /lib
  ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2
  
  2) vi /etc/nsswitch.conf 做如下修改,使winbind成为passwd及group的认证信息源
  passwd: files winbind
  shadow: files
  group: files winbind
  
  3)用ldconfig命令来使winbind使用libnss_winbind.so库,这样就不用重启机器了,如果不行,就重启一下机器 。
  /sbin/ldconfig -v | grep winbind
  
  4)vi smb.conf ,在[global]设置中加入下面几行
  # separate domain and username with '/', like DOMAIN+username
  winbind separator = /
  # use uids from 10000 to 20000 for domain users
  idmap uid = 10000-20000
  # use gids from 10000 to 20000 for domain groups
  idmap gid = 10000-20000
  # allow enumeration of winbind users and groups
  winbind enum users = yes
  winbind enum groups = yes
  # give winbind users a real shell (only needed if they have telnet access)
  template homedir = /home/%D/%U
  template shell = /bin/bash
  winbind separator是域名与用户名和组名之间的分隔符,我设成’/’,
  idmap uid 和 idmap gid是设置winbind把win200x域用户、组map成本地用户、组所使用的ID号范围,如果你的用户很多,可以加大这两个值之间的差。Template homedir是用户登录后的主目录,我设置成/home/域名/用户名。Template shell是用户登录后的shell,如果你想用PDC给你的sshd做认证,就可以加上这个,给用户一个shell,不错吧。
  
  5)用samba3的net join命令把这台机器加入到windows200x域中
  /usr/local/samba/bin/net rpc join -S PDC -U Administrator
  然后输入域管理员密码,administrator是域管理员帐号。PDC是你的域名,可以用NETBIOS名。
  
  6)启动winbindd服务
  /usr/local/samba/sbin/winbindd
  
  7)用wbinfo 命令查看你用winbindd服务连接PDC抓到的域内的用户和组的信息。
  引用:
  
  [root@LogBack wy]# wbinfo -u
  WY/Administrator
  WY/Guest
  WY/krbtgt
  WY/wuying
  WY/wy
  
  其中’/’前的是域名,我这是WY,’/’后的是域用户名。
  引用:
  
  [root@LogBack wy]# wbinfo -g
  BUILTIN/System Operators
  BUILTIN/Replicators
  BUILTIN/Guests
  BUILTIN/Power Users
  BUILTIN/Print Operators
  BUILTIN/Administrators
  BUILTIN/Account Operators
  BUILTIN/Backup Operators
  BUILTIN/Users
  WY/Domain Admins
  WY/Domain Users
  WY/Domain Guests
  WY/Domain Computers
  WY/Domain Controllers
  WY/Cert Publishers
  WY/Schema Admins
  WY/Enterprise Admins
  WY/Group Policy Creator Owners
  WY/DnsUpdateProxy
  
  其中’/’前的是域名,我这是WY,’/’后的是域组名。
  用getnet passwd 和getnet group你可以看到本地服务器及域服务器上所有的用户及组的信息。
  到这儿,我们的工作已经完成一大半了。Winbindd服务已经可以正常工作了:)
  
  8)到samba-3.0.7的源码目录source下,编译pam_winbind.so认证模块,CP到/lib/security下:
  make nsswitch/pam_winbind.so
  cp ../samba/source/nsswitch/pam_winbind.so /lib/security
  
  9)下面是设置PAM了,在设置前请先备份你的/etc/pam.d目录。如果是设sshd等关建登入服务的PAM,改错了,可能ssh就登不进去,所以要小心操作。
  下面是我改过的/etc/pam.d/sshd的配置文件:
  引用:
  
  [root@LogBack wy]# cat /etc/pam.d/sshd
  #%PAM-1.0
  auth sufficient /lib/security/pam_winbind.so
  auth required /lib/security/pam_stack.so service=system-auth
  auth required /lib/security/pam_nologin.so
  account sufficient /lib/security/pam_winbind.so
  account required /lib/security/pam_stack.so service=system-auth
  password required /lib/security/pam_stack.so service=system-auth
  session required /lib/security/pam_stack.so service=system-auth
  session required /lib/security/pam_limits.so
  session required /lib/security/pam_mkhomedir.so
  session optional /lib/security/pam_console.so
  
  其中两个含有pam_winbind.so的行是这加进去的,用来做winbind的认证。
  含有pam_mkhomedir.so的行也是我加进去的,用来在域用户登录时自动给他建立主目录和登录脚本,不然你一登录就会在发现自己在根目录下。注意,主目录的路径是你在smb.conf文件中指定的Template shell变量,我这是/home/WY/用户名。/home/WY目录要手动建,不然是登不进去的。我把这个目录的权限设成 1777,好处是大家都能写,但只有属主可删,就象/tmp目录一样。
  再其它机器上用ssh 连看试一下:
  引用:
  
  [wy@wy1 RPMS]$ ssh wy/wuying@172.16.130.35
  wy/wuying@172.16.130.35's password:
  Last login: Sat Oct 30 19:57:47 2004 from 172.16.130.36
  [WY/wuying@LogBack wuying]$ id
  uid=10003(WY/wuying) gid=10009(WY/Domain Users) groups=10009(WY/Domain Users)
  [WY/wuying@LogBack wuying]$
  
  OK,我们成功了。WY/wuying是“域名/用户名”的行式,这个域用户被map成为本地的uid号为1009的用户。
  
  下面是我的/etc/pam.d/samba的配置文件:
  引用:
  
  [root@LogBack wy]# cat /etc/pam.d/samba
  #%PAM-1.0
  auth required pam_stack.so service=system-auth
  account required pam_stack.so service=system-auth
  
  然后vi smb.conf文件,在最后加上
  引用:
  
  [ADMshare]
  comment = admin dir
  path = /home/WY/administrator
  valid users = "WY+Domain Admins"
  public = no
  writable = yes
  printable = no
  create mask = 0775
  directory mask = 0775
  
  这样就只有WY域中的Domain Admins组的成员才可以往ADMshare共享中写东西,是不是好管理多了呢。如果域用户的密码更改,我们也不用去每台linux服务器上改密码了,用winbind去win200xPDC上做认证,他怎么改都行,方便多了吧。
  
  我这里只进了winbind和PAM的配置方法,如果大家对其中的一些概念还不明白的话,可以参考一下SAMBA3源码包samba-3.0.7.tar.gz解开后docs目录中的pdf文档。我讲的部分都在smaba-HOWTO-collection.pdf文档的第6及第20章中,相关的概念讲解得也不错,如果哪位高手有时间的话,把这些文档翻成中文,那真是CU朋友之福了。晚上23:15了,回家喽。
  
推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
author-avatar
kaining_huang_750
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有