原文地址:http://www.centoscn.com/image-text/config/2015/0716/5866.html
1、 什么是samba
Samba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到。
是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2、安装配置samba
[root@test ~]# yum install samba samba-client -y #配置文件:/etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw
配置文件解释: [global] 定义全局的配置,workgroup用来定义工作组,相信如果您安装过windows的系统,你会对这个workgroup不陌生。一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。 security = user #这里指定samba的安全等级。 关于安全等级有四种: share:用户不需要账户及密码即可登录samba服务器 user:由提供服务的samba服务器负责检查账户及密码(默认) server:检查账户及密码的工作由另一台windows或samba服务器负责 domain:指定windows域控制服务器来验证用户的账户及密码。 passdb backend = tdbsam #passdb backend(用户后台) samba有三种用户后台:smbpasswd, tdbsam和ldapsam。 load printers:加载打印机 cups options = raw 打印机相关设置; |
3、samba配置相关命令
smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用 smbpasswd -a 创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。
pdbedit参数很多,列出几个主要的:
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户账号。
pdbedit -c “[]” -u username:恢复该Samba用户账号。
ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置 “passdb backend = ldapsam:ldap://LDAP Server”
load printers 和 cups options 两个参数用来设置打印机相关。
除了这些参数外,还有几个参数需要你了解:
netbios name = MYSERVER # 设置出现在网上邻居中的主机名
hosts allow = 127. 192.168.12. 192.168.13. 172.16.# 用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机
log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name
max log size = 50 # 指定日志的最大容量,单位是K
[homes] 该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
[printers] 该部分内容设置打印机共享。
4、samba实践一
要求共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求只读;
[root@test ~]# vim /etc/samba/smb.conf security = share #在末尾加入 [share] comment = share all path = /tmp/samba browseable = yes public = yes writable = no |
启动smb服务
[root@test ~]# mkdir /tmp/samba [root@test ~]# chmod 777 /tmp/samba [root@test ~]# echo "this is a share file!!"> /tmp/samba/share1.txt [root@test ~]# /etc/init.d/smb start Starting SMB services: [ OK ] [root@test ~]# netstat -tunlp |grep smb tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 24431/smbd tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 24431/smbd tcp 0 0 :::139 :::* LISTEN 24431/smbd tcp 0 0 :::445 :::* LISTEN 24431/smbd |
测试
5、Samba实践二
共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写;
#修改samba的配置文件 [root@test ~]# vim /etc/samba/smb.conf [global] workgroup = WORKGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw
#增加共享目录配置 [myshare] comment = share for users path = /samba browseable = yes writable = yes public = no
#创建共享目录,配置权限 [root@test ~]# mkdir /samba [root@test ~]# touch /samba/1.txt [root@test ~]# touch /samba/2.txt [root@test ~]# echo "test" >/samba/test.txt [root@test ~]# chmod 777 /samba
#将系统账号user1,user2添加到samba,并设置密码samba [root@test ~]# pdbedit -a user1 new password: retype new password: Unix username: user1 NT username: Account Flags: [U ] User SID: S-1-5-21-237071335-1901920187-4216678368-1000 Primary Group SID: S-1-5-21-237071335-1901920187-4216678368-513 Full Name: Home Directory: \\test\user1 HomeDir Drive: Logon Script: Profile Path: \\test\user1\profile Domain: TEST Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Tue, 14 Jul 2015 13:46:41 CST Password can change: Tue, 14 Jul 2015 13:46:41 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#列出samba所有账号 [root@test ~]# pdbedit -L user1:500: user2:501:
#重启smb服务 [root@test ~]# service smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ] |
测试使用user1访问samba服务
在共享目录中创建1个文件user1.txt
我们在linux系统下访问试试
samba服务端,先暂停用户,账号标记为[DU],正常状态为[U];客户端访问,提示账号不可用
#暂停用户 [root@test ~]# pdbedit -c [D] -u user1 Unix username: user1 NT username: Account Flags: [DU ] User SID: S-1-5-21-237071335-1901920187-4216678368-1000 Primary Group SID: S-1-5-21-237071335-1901920187-4216678368-513 Full Name: Home Directory: \\test\user1 HomeDir Drive: Logon Script: Profile Path: \\test\user1\profile Domain: TEST Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Tue, 14 Jul 2015 13:46:41 CST Password can change: Tue, 14 Jul 2015 13:46:41 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#访问smaba服务 [root@test ~]# smbclient //192.168.3.19/myshare -Uuser1 Enter user1's password: session setup failed: NT_STATUS_ACCOUNT_DISABLED #提示账号不可用 |
samba服务端恢复用户,账号标记为[U];客户端访问,恢复正常
[root@test ~]# pdbedit -c [] -u user1 Unix username: user1 NT username: Account Flags: [U ] User SID: S-1-5-21-237071335-1901920187-4216678368-1000 Primary Group SID: S-1-5-21-237071335-1901920187-4216678368-513 Full Name: Home Directory: \\test\user1 HomeDir Drive: Logon Script: Profile Path: \\test\user1\profile Domain: TEST Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Tue, 14 Jul 2015 13:46:41 CST Password can change: Tue, 14 Jul 2015 13:46:41 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [root@test ~]# smbclient //192.168.3.19/myshare -Uuser1 Enter user1's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-14.el6_6] smb: \> ls . D 0 Tue Jul 14 13:51:10 2015 .. DR 0 Tue Jul 14 13:44:33 2015 1.txt 0 Tue Jul 14 13:49:15 2015 2.txt 0 Tue Jul 14 13:49:17 2015 user1.txt A 0 Tue Jul 14 13:51:08 2015 test.txt 5 Tue Jul 14 13:49:28 2015
49313 blocks of size 2097152. 45974 blocks available smb: \> |
6、 Linux访问samba共享文件
安装客户端软件 yum install -y samba-client
命令格式:smbclient //IP/共享名 -U 用户名
如:smbclient //127.0.0.1/share 如果是匿名访问可以省略掉-U
mount挂载samba目录:mount -t cifs //192.168.3.19/myshare /mnt -o username=user1,password=123456 使用用户密码登陆的;
mount -t cifs //192.168.0.22/myshare /mnt 匿名访问不需要-o参数;
如执行命令提示参数有错,还需要安装cifs-utils包;
linux客户端测试samba共享:
故意输入错误密码,会报错登录失败LOGON_FAILURE;输入正确密码后进入,put上传文件,get下载文件;上传的文件smb服务器中查看所属主、组为user1;user1在共享文件夹可以新建目录,删除文件;help可以列出当前命令行可以执行的命令;
#从linux客户端访问samba服务 [root@python ~]# yum install samba-client -y [root@python ~]# smbclient //192.168.3.19/myshare -Uuser1 Enter user1's password: Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.23-14.el6_6] smb: \> ls . D 0 Tue Jul 14 13:51:10 2015 .. DR 0 Tue Jul 14 13:44:33 2015 1.txt 0 Tue Jul 14 13:49:15 2015 2.txt 0 Tue Jul 14 13:49:17 2015 user1.txt A 0 Tue Jul 14 13:51:08 2015 test.txt 5 Tue Jul 14 13:49:28 2015
49313 blocks of size 2097152. 45974 blocks available smb: \> help ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown close del dir du echo exit get getfacl geteas hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setea setmode stat symlink tar tarmode timeout translate unlock volume vuid wdel logon listconnect showconnect .. |
客户端mount挂载samba共享文件夹到本地:
#这里使用user2用户访问 [root@python ~]# mount -t cifs //192.168.3.19/myshare /mnt -o username=user2,password=samba [root@python ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 97G 1.9G 90G 3% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 194M 28M 156M 16% /boot //192.168.3.19/myshare 97G 1.7G 90G 2% /mnt [root@python ~]# mount /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) //192.168.3.19/myshare on /mnt type cifs (rw,username=user2,password=samba) |
到此samba的基本配置已完成
7.配置samba使用ldap进行用户认证
ldap的安装可以参考http://ly36843.blog.51cto.com/3120113/1673892
修改openldap配置文件支持samba
[root@test ~]# vim /etc/openldap/slapd.conf #增加这一行 include /etc/openldap/schema/samba.schema |
修改smb.conf文件
[root@test ~]# vim /etc/samba/smb.conf passdb backend = ldapsam:ldap://192.168.3.19 ldap suffix = "dc=test,dc=org" ldap admin dn = "cn=admin,dc=test,dc=org" ldap user suffix = "ou=People" ldap group suffix = "ou=Groups" ldap delete dn = no ldap passwd sync = yes ldap ssl = off
#将ldap管理员admin的密码添加到samba中 [root@test ~]# smbpasswd -w weyee Setting stored password for "cn=admin,dc=test,dc=org" in secrets.tdb |