1、 什么是samba Samba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到。 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 2、安装配置samba 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| [iyunv@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实践一 要求共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求只读; 1
2
3
4
5
6
7
8
9
| [iyunv@test ~]# vim /etc/samba/smb.conf
security = share
#在末尾加入
[share]
comment = share all
path = /tmp/samba
browseable = yes
public = yes
writable = no
|
启动smb服务
1
2
3
4
5
6
7
8
9
10
| [iyunv@test ~]# mkdir /tmp/samba
[iyunv@test ~]# chmod 777 /tmp/samba
[iyunv@test ~]# echo "this is a share file!!"> /tmp/samba/share1.txt
[iyunv@test ~]# /etc/init.d/smb start
Starting SMB services: [ OK ]
[iyunv@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实践二 共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写; 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| #修改samba的配置文件
[iyunv@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
#创建共享目录,配置权限
[iyunv@test ~]# mkdir /samba
[iyunv@test ~]# touch /samba/1.txt
[iyunv@test ~]# touch /samba/2.txt
[iyunv@test ~]# echo "test" >/samba/test.txt
[iyunv@test ~]# chmod 777 /samba
#将系统账号user1,user2添加到samba,并设置密码samba
[iyunv@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所有账号
[iyunv@test ~]# pdbedit -L
user1:500:
user2:501:
#重启smb服务
[iyunv@test ~]# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
|
测试使用user1访问samba服务
在共享目录中创建1个文件user1.txt
我们在linux系统下访问试试
samba服务端,先暂停用户,账号标记为[DU],正常状态为[U];客户端访问,提示账号不可用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #暂停用户
[iyunv@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服务
[iyunv@test ~]# smbclient //192.168.3.19/myshare -Uuser1
Enter user1's password:
session setup failed: NT_STATUS_ACCOUNT_DISABLED #提示账号不可用
|
samba服务端恢复用户,账号标记为[U];客户端访问,恢复正常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| [iyunv@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
[iyunv@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可以列出当前命令行可以执行的命令; 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #从linux客户端访问samba服务
[iyunv@python ~]# yum install samba-client -y
[iyunv@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共享文件夹到本地:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #这里使用user2用户访问
[iyunv@python ~]# mount -t cifs //192.168.3.19/myshare /mnt -o username=user2,password=samba
[iyunv@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
[iyunv@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://www.iyunv.com/thread-87152-1-1.html
修改openldap配置文件支持samba
1
2
3
| [iyunv@test ~]# vim /etc/openldap/slapd.conf
#增加这一行
include /etc/openldap/schema/samba.schema
|
修改smb.conf文件
1
2
3
4
5
6
7
8
9
10
11
12
13
| [iyunv@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中
[iyunv@test ~]# smbpasswd -w weyee
Setting stored password for "cn=admin,dc=test,dc=org" in secrets.tdb
|
|