CentOS下用openldap管理samba和账号登录
来源:互联网 发布:搜索引擎快速排名软件 编辑:程序博客网 时间:2024/06/06 04:34
这只是又一个记录,尽量详尽,失败的尝试也记录下来,所以对你可能有用,也可能没用
安装
使用最小安装,这时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 offalias 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.schemainclude /etc/openldap/schema/core.schemainclude /etc/openldap/schema/cosine.schemainclude /etc/openldap/schema/duaconf.schemainclude /etc/openldap/schema/dyngroup.schemainclude /etc/openldap/schema/inetorgperson.schemainclude /etc/openldap/schema/java.schemainclude /etc/openldap/schema/misc.schemainclude /etc/openldap/schema/nis.schemainclude /etc/openldap/schema/openldap.schemainclude /etc/openldap/schema/ppolicy.schemainclude /etc/openldap/schema/collective.schemainclude /etc/openldap/schema/samba.schemaallow bind_v2pidfile /var/run/openldap/slapd.pidargsfile /var/run/openldap/slapd.argsaccess to dn.base="" by * readaccess to dn.base="cn=Subschema" by * readaccess to * by self write by users read by anonymous read by dn.base="cn=Manager,dc=mydomain,dc=com" write by * noneaccess to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword by self write by anonymous auth by dn.base="cn=Manager,dc=mydomain,dc=com" write by * nonedatabase bdbsuffix "dc=mydomain,dc=com"rootdn "cn=Manager,dc=mydomain,dc=com"rootpw {SSHA}28/840Yzu52inFz+isphuqDaFAKGRz0Idirectory /var/lib/ldapaccess to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword by anonymous auth by dn.exact="cn=Manager,dc=mydomain,dc=com" write by self write by * noneaccess 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=comdc: mydomaino: CompanyobjectClass: topobjectClass: domaindescription: My Company Ltd.dn: ou=People,dc=mydomain,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: ou=Group,dc=mydomain,dc=comou: GroupobjectClass: topobjectClass: 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.1BASE dc=mydomain,dc=comURI ldap://127.0.0.1/#SSL start_tls#tls_checkpeer yes#tls_cacertfile xxxxxx/cacert.pemrootbinddn cn=Manager,dc=mydomain,dc=comrootpw {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=comuid: testcn: testobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: topobjectClass: shadowAccountuserPassword:shadowMin: 0shadowMax: 99999shadowWarning: 7loginShell: /bin/bashuidNumber: 1101gidNumber: 1000homeDirectory: /home/testsn: testdisplayName: 我的utf-8编码的名字mail: email1@domain1.commail: email2@domain2.commobile: 1111111111telephoneNumber: 2222
- CentOS下用openldap管理samba和账号登录
- Centos6.5 下Openldap管理各系统账号
- Centos下账号管理操作
- openldap + samba 实现用户管理
- samba和openldap结合实战
- samba和openldap结合实战
- samba和openldap结合实战
- 在CentOS 6.8下编译安装BerkeleyDB和OpenLDAP
- Centos 下mysql用户丢失,root账号在本地登录
- CentOS 6.4下安装和配置Samba
- CentOS 6.4下安装和配置Samba
- centOS下卸载samba
- centos下Samba配置
- Centos下安装Samba
- Centos下安装samba
- centOS下卸载samba
- 〔管理服务器〕的登录账号和OEMREP数据库的账号有什么区别
- CentOS 6.4下安装和配置Samba服务器
- 开发,配置,调用-三步走构建简单的asp.net webservice
- android博客推荐
- tmux快捷键
- 第6章 6_1、6_2、6_3习题
- 学习cocoa编程-.Cocoa.Programming
- CentOS下用openldap管理samba和账号登录
- 第3章 Object c
- 使用ios系统自带的MapKit framework进行定位
- 第4章 memory management
- 应聘常见问题分析
- 第5章 target/action
- Socket模型详解
- uva-489 - Hangman Judge
- C语言实现内存池 (转)