CentOS下用openldap管理samba和账号登录

这只是又一个记录,尽量详尽,失败的尝试也记录下来,所以对你可能有用,也可能没用

安装

使用最小安装,这时SSH是肯定会装上的

加账号

 useradd -g <gid> -G wheel,xxx,xxx yyy

visudo,这一句去掉注释,使wheel组的可以执行sudo

%wheel  ALL=(ALL)       ALL

还是wget用着习惯

  yum install wget

更新镜像

  wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
  yum update

安装httpd、samba、vim

  yum install httpd php subversion samba samba-client vim

修改一下iptables

 sudo vim  /etc/sysconfig/iptables
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

别忘记启动服务

 service httpd restart
 service smb restart
 service nmb restart
 service iptables restart

验证SAMBA

修改smb.conf

[global]
        workgroup = WORKGROUP
        server string = Backup server
        netbios name = backup
        log file = /var/log/samba/log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam
        load printers = no
        cups options = raw
        printcap name = /dev/null
        disable spoolss = yes

[上传目录]
        path = /db/smb/upload
        writeable = yes
        public = yes
        printable = no
        browseable = yes
        comment = 所有用户可写
        guest ok = yes
        create mask = 0666
        directory mask = 0777
        dos filetimes = yes

修改selinux

   sudo setsebool -P samba_export_all_rw on

特别注意:文件的权限,最好使用775模式,属主与其他访问者属于同一组——这里为了省事,改成777了

rsync、screen

 yum install rsync screen

同步时间

在rsync之前,最好统一一下时间

  yum install ntpdate
  ntpdate  210.72.145.44
  hwclock -w

rsync同步

限制速度

 rsync -auvzP --bwlimit=2000 192.168.0.xxx::yyy /db/smb

安装ldap

sudo yum install openldap-servers openldap-clients

安装mysql

 sudo yum install mysql-server
 service mysqld restart

mysql初次安装,root密码为空,安全起见,执行下面命令,使mysql产品化y

 /usr/bin/mysql_secure_installation

不能忘记man page

 yum install man

找文件方便点

 yum install mlocate
 updatedb

TODO: 以后让updatedb每天执行一次,得用cron了

创建系统用户组

 groupadd --gid 1000 myteamgroup
 # 修改前面的账号
 usermod -g 1000 -G myteamgroup,wheel xxoo
 # 依次加上几个账号,最后的个人账号,可以从uid 1101开始
 useradd  --shell /sbin/nologin --no-create-home --groups myteamgroup,users --gid 1000  --uid 1001 swleader
 useradd  --shell /sbin/nologin --no-create-home --groups myteamgroup,users --gid 1000  --uid 1002 software
 useradd  --shell /sbin/nologin --no-create-home --groups myteamgroup,users --gid 1000  --uid 1003 tester
 useradd  --groups myteamgroup,users,wheel  --gid 1000  --uid 1999 myuser

加入samba用户组

把这几个账号加入到samba里头

 smbpasswd -a swleader
 smbpasswd -a software
 smbpasswd -a tester

其他处理,摘自 http://blog.licess.org/centos-init/

 # 禁止非wheel使用su,编辑/etc/pam.d/su,按说明注释这句话
auth            required        pam_wheel.so use_uid

 # 在/etc/login.defs,最后加上
SU_WHEEL_ONLY yes

 # 禁用ipv6,在 /etc/modprobe.d/dist.conf,最后面加入
alias net-pf-10 off
alias ipv6 off
 # 然后重启,可以用ifconfig看到ipv6已经没了,用lsmod | grep ipv6 也可

开始设置ldap

 # 用前面的mlocate,找到这个文件
 locate samba.schema
 # 先把samba.schema复制过来
 cp xxxx /etc/openldap/schema/samba.schema

 # 把加密的密码记录下来,我们不使用明文的,这将是rootdn的密码
 slappasswd

配置目录slapd.d不太方便修改,比如ACL怎么弄、samba.schema怎么导入,网络资料都不多。

所以这里使用conf转换的形式,当然了,也可以直接用conf文件来运行

为了避免歧义,文件名使用 sladp.conf.used

include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema
include         /etc/openldap/schema/samba.schema

allow bind_v2

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

access to dn.base=""
        by * read

access to dn.base="cn=Subschema"
        by * read

access to *
       by self write
       by users read
       by anonymous read
       by dn.base="cn=Manager,dc=mydomain,dc=com" write
       by * none
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
       by self write
       by anonymous auth
       by dn.base="cn=Manager,dc=mydomain,dc=com" write
       by * none

database bdb
suffix "dc=mydomain,dc=com"
rootdn "cn=Manager,dc=mydomain,dc=com"
rootpw {SSHA}28/840Yzu52inFz+isphuqDaFAKGRz0I
directory /var/lib/ldap
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
        by anonymous auth
        by dn.exact="cn=Manager,dc=mydomain,dc=com" write
        by self write
        by * none

access to *
        by self write
        by dn="cn=Manager,dc=mydomain,dc=com" write
        by * read

#index objectClass                       eq,pres
#index ou,cn,mail,surname,givenname      eq,pres,sub
#index uidNumber,gidNumber,loginShell    eq,pres
#index uid,memberUid                     eq,pres,sub
#index nisMapName,nisMapEntry            eq,pres,sub

这里有参考 http://www.linuxidc.com/Linux/2012-04/57932.htm

 # 备份自带的的slapd.d
 cp -a slapd.d slapd.d.origin-YYYYMMDD
 rm -rf slapd.d/*
 # 重新生成
 slaptest -vf /etc/openldap/slapd.conf.used -F /etc/openldap/slapd.d/
 # 修改一下slapd.d的属主和权限
 chown -R ldap:ldap slapd.d
 chmod -R 700 slapd.d
 # 启动服务
 service slapd start

安装phpldapadmin

 # 安装git
 yum install git
 # 直接下载源码
 git clone git://phpldapadmin.git.sourceforge.net/gitroot/phpldapadmin/phpldapadmin

 # 修改 config/config.php
 cp config.php.example config.php

 # 去掉这几句注释,并修改
 $servers->setValue('server','host','127.0.0.1');
 $servers->setValue('server','port',389);
 $servers->setValue('server','base',array('dc=mydomain,dc=com'));
 $servers->setValue('login','auth_type','cookie');
 $servers->setValue('login','bind_id','cn=Manager,dc=mydomain,dc=com');

# 默认是没有的,得安装sudo yum install php-ldap

打开浏览器,进入phpldapadmin,应该可以登录了,任务完成

LDAP认证系统帐户

安装并处理系统的账号

 yum install migrationtools
 locate migrate_group.pl

 /usr/share/migrationtools/migrate_group.pl /etc/group > group.ldif
 /usr/share/migrationtools/migrate_passwd.pl /etc/passwd > passwd.ldif

工具默认的dn,不是你想要的,更换下

 sed -i "s/padl/xxxx/" group.ldif
 sed -i "s/padl/xxxx/" passwd.ldif

这里最好处理一下,很多组、用户,不必要放在ldap里,一是没必要,二,为了避免ldap出问题时无法登陆

 vim group.ldif passwd.ldif

保证ldap是空的,全部删掉

 ldapdelete -x -D "cn=Manager,dc=mydomain,dc=com" -W -r "dc=mydomain,dc=com"

做一个导入文件 init.ldif

dn: dc=mydomain,dc=com
dc: mydomain
o: Company
objectClass: top
objectClass: domain
description: My Company Ltd.

dn: ou=People,dc=mydomain,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=mydomain,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

现在依次导入ldif

 ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f init.ldif
 ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f group.ldif
 ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f passwd.ldif

检查一下

 ldapsearch -x -b "dc=mydomain,dc=com"
 或
 ldapsearch -v -x -H ldap://localhost

LDAP登陆、验证支持需要这些

yum install nss-pam-ldapd pam_ldap

用authconfig-tui,选择“使用LDAP”、“使用MD5密码”、“使用影子密码”、“使用LDAP验证”,然后一步步往下,在填写ldap服务的时候填写正确就可以了

确认/etc/nslcd.conf的uri、base是正确的,一般migrate会自行修改的

这里有一步不确认是否必须,但还是安上为妙, 编辑/etc/openldap/ldap.conf,看资料说可能还需要放在/etc/ldap.conf,不过可以先不放,遇到问题再说

# This file should be world readable but not world writable.
HOST 127.0.0.1
BASE dc=mydomain,dc=com
URI ldap://127.0.0.1/
#SSL start_tls
#tls_checkpeer yes
#tls_cacertfile xxxxxx/cacert.pem
rootbinddn cn=Manager,dc=mydomain,dc=com
rootpw {SSHA}28/840Yzu52inFz+isphuqDaFAKGRz0I

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
#TLS_CACERTDIR /etc/openldap/cacerts

用userdel删掉几个没有放入ldap的系统账号比如software,试试登陆情况如何

 # 看能否看到账号的id、分组等
 id software

 # 看密码对不对
 su - software

如果终止slapd,再用id software,将会提示无此用户

重新启动slapd,记得要重启nslcd,再id software试试,会发现没问题了。

这里修改一下密码 passwd software,可以看到提示中有LDAP字样

如果顺利的话就万事大吉,如果有问题:

  • 不要犯低级错误,确认slapd、nslcd都在运行
  • 可能是LDAP的ACL不对,这时就暂时不要折腾slapd.d了,直接用slapd.conf开始干活好了,这个比较简单
  • 注意 slapd.conf的语法,不要搞错了
  • 记得确认nslcd.conf、ldap.conf,我们现在还没有用SSL,别把这个打开了。

    TODO: 另外这里还是有一个遗留问题的:只能解决认证,无法解决homedir的自动创建,留待后面解决,似乎是用跟samba的配合搞定的?还是需要另外的脚本呢?

顺手安了一个webmin,不过好在现在还没用上

 # 下载rpm
 wget http://downloads.sourceforge.net/project/webadmin/webmin/1.580/webmin-1.580-1.noarch.rpm?r=http://www.webmin.com/&ts=1337859526&use_mirror=nchc

 # 安装
 rpm -Uvh /webmin-1.580-1.noarch.rpm

 #  装个perl-LDAP,webmin看LDAP service用得上
  yum install perl-LDAP

改改iptables,现在是这样了

# ssh
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# httpd
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# samba
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
# openldap
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
# openldap + ssl
-A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -j ACCEPT
# webmin
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT

再次配置samba

修改smb.conf如下

        passdb backend = ldapsam:ldap://127.0.0.1/
        ldap suffix= "dc=mydomain,dc=com"
        ldap group suffix = "ou=Group"
        ldap user suffix = "ou=People"
        ldap admin dn ="cn=Manager,dc=mydomain,dc=com"
        ldap delete dn = no
        ldap passwd sync = yes
        ldap ssl=off
务必执行,让samba知道LDAP管理员的密码,后面若修改密码也要再次执行
smbpasswd -w PassWord123

最好不要通过smbpasswd -a user增加用户

虽然可以增加,但是他有account类、我们希望是inetOrgPerson。

而且smbpasswd增加后,会在系统的/etcpasswd里也增加,并无法控制uidNumber,但我们自己加则可以

自己加了后,可以用smbpasswd -a user来修改密码,则认证的密码一并修改了。务必不能用passwd来修改,这样samba的密码不会跟着同步

TODO: 下一步,得搞定建立主目录的事情了

TODO: 至于目前,先放弃掉samba,扔一边去,因为最后必须得用smbpasswd -a <已经存在的账号>来一次完整的重新处理……这一点不方便。

这是一个可以SAMBA也可以登录的账号模版

dn: uid=test,ou=People,dc=mydomain,dc=com
uid: test
cn: test
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1101
gidNumber: 1000
homeDirectory: /home/test
sn: test
displayName: 我的utf-8编码的名字
mail: email1@domain1.com
mail: email2@domain2.com
mobile: 1111111111
telephoneNumber: 2222

没有更多推荐了,返回首页