13-安装与配置Samba服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13-安装与配置Samba服务器相关的知识,希望对你有一定的参考价值。

零、实验环境
SambaServer:192.168.80.100/24
SambaClient:192.168.80.110/24
WinXP:192.168.80.120/24

一、安装
1、安装Samba服务

yum install samba

2、查看相关软件包

rpm -qa | grep samba

samba4-libs-4.2.10-12.el6_9.x86_64
samba-winbind-3.6.23-45.el6_9.x86_64
samba-client-3.6.23-45.el6_9.x86_64
samba-3.6.23-45.el6_9.x86_64
samba-winbind-clients-3.6.23-45.el6_9.x86_64
samba-common-3.6.23-45.el6_9.x86_64

3、查看Samba相关配置文件

rpm -qc samba

/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/samba/smbusers

4、查看Samba主配置文件

cat /etc/samba/smb.conf

5、设置开机自动启动samba服务

chkconfig smb on

6、启动samba服务

service smb start

二、配置防火墙规则
1、检查防火墙是否启动,是否开机启动

service iptables start
chkconfig iptables on

2、添加防火墙规则,允许客户端访问共享文件夹

iptables -I INPUT -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -p udp --dport 137 -j ACCEPT
iptables -I INPUT -p udp --dport 138 -j ACCEPT

3、保存防火墙规则

/sbin/service iptables save

4、查看防火墙配置

iptables -L

三、Samba服务器的配置文件
1、查看Samba主配置文件

cat /etc/samba/smb.conf

2、重命名配置文件

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

3、去掉注释行并产生新的配置文件

grep -v "#" /etc/samba/smb.conf.bak >/etc/samba/smb.conf

4、测试配置文件是否正确

testparm -v

四、设置允许匿名用户访问的Samba服务器
1、创建文件夹

mkdir /data

2、修改权限

chmod 777 /data

3、设置配置文件

vi /etc/samba/smb.conf

[smb.conf]
①将[global]中security改为 = share
②在后边添加以下内容

[data]
        comment = dataFile #设置共享的说明信息(描述)
        path = /data #指定共享目录的路径
        browseable = yes #所有samba用户都可以看到该目录(是否可见)
        read only = no #允许只读(NO,可读写)
        public = yes #是否允许匿名用户访问
        create mode =0664 #与create mask参数意思相同,在主目录中建立一个文件的默认权限
        directory mode =0775 #与directory mask参数意思相同,在主目录中建立一个目录时的默认权限
        writable = yes #用户对共享目录可写

4、重启Samba服务

service smb restart

5、验证:在XP上访问Samba服务器
①在浏览器中输入\192.168.80.100
②上传测试文件
③查看权限

ll /data/

总用量 8
-rw-rw-r-- 1 nobody nobody   23 1月  25 21:22 test.txt 664
drwxrwxr-x 2 nobody nobody 4096 1月  25 21:24 zhang 775

6、减少在Windows中打开Samba服务器的等待时间

vi /etc/hosts
[hosts]
127.0.0.1  SambaServer #写自己的计算机名
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

五、创建需要登录的Samba服务器
1、修改Samba配置文件来支持验证

vi /etc/samba/smb.conf
[smb.conf]
security = user #修改

2、关于samba用户密码的文件
存放samba用户密码的文件有两种类型
数据库文件

/var/lib/samba/private/passdb.tdb

密码文件

/var/lib/samba/private/smbpasswd

3、创建Linux用户并设置密码

useradd zhang
useradd wang
passwd zhang
passwd wang

4、将Linux用户添加到Samba用户并设置密码

smbpasswd -a zhang
smbpasswd -a wang

5、查看有几个Samba用户

pdbedit -L

PS:
Smbpasswd:主要作用是为系统创建用户创建samba用户
-a 新建用户
使用的时候创建的samba用户必须在系统用户中存在。否则samba找不到系统用户则创建失败
-d 冻结用户,就是这个用户不能在登录了
-e 恢复用户,解冻用户,让冻结的用户可以在使用
-n 把用户的密码设置成空.
-x 删除用户

pdbedit:管理samba 用户数据库的一个工具
pdbedit -a -u username 增加一个samba用户
pdbedit -x samba_user 删除用户
pdbedit -L查看创建的samba用户


6、验证:在WindowsXP访问并进行上传修改操作,在Linux上用ll 对应目录 可以查看文件所有者。
PS:如想快速切换用户可以在CMD中用net use * /del 删除访问凭证。

六、更改samba用户密码文件
1、修改配置文件

vi /etc/samba/smb.conf

在[global]中修改 passdb backend =为 smbpasswd,保存并重启。
2、查看用户数据库文件夹中有没有密码文件

ll /var/lib/samba/private/

3、查看Samba用户的状态

pdbedit -L

回车后为空,需要创建账户
4、将Linux用户添加到Samba用户并设置密码

smbpasswd -a zhang
smbpasswd -a wang

5、再次查看

pdbedit -L

zhang:500:
wang:501:

6、查看Samba账户密码文件

cat /var/lib/samba/private/smbpasswd

zhang:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3DBDE697D71690A769204BEB12283678:[U          ]:LCT-5A69E386:
wang:501:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:5A420E7750B39BE09FA29D314FA4B51C:[U          ]:LCT-5A69E38C:

7、验证:再次在WindowsXP访问

七、设置Samba服务器网络安全
1、网络访问控制
①设置Samba服务允许通过哪个地址或哪个网卡来访问(根据实际情况设置)

vi /etc/samba/smb.conf

[smb.conf]


;       interfaces = lo eth1 #寻找这个,根据你的实际情况设置,可使用ifconfig查看
        interfaces = 192.168.80.100/24  #添加    
        bind interfaces only = YES #强制绑定

重启服务,在Windows客户端中检查可否访问

service smb restart

②设置那些网段能够访问Samba服务器

vi /etc/samba/smb.conf
;       interfaces = lo eth0
        interfaces = 192.168.80.222/24
        bind interfaces only = YES

        hosts allow = 127. 192.168.80.0/24 EXCEPT 192.168.80.130 ,192.168.80.131 #允许那个网段访问,EXCEPT排除那个访问
        hosts deny = 192.168.80.140

PS:
a.等价某一个网段写法:
例如:
192.168.80.X等价于 192.168.80.0/24等价于 192.168.80.0/255.255.255.0
b.在Samba服务器中允许优先
③设置文件夹允许那些网段访问
客户端必须先通过全局网络设置允许访问Samba服务才可以,以下设置data文件夹只允许192.168.80.10和192.168.80.20访问。
vi /etc/samba/smb.conf
[data]
comment = dataFile
path = /data
browseable = yes
read only = no
public = yes
create mode =0444
directory mode =0775
writable = yes
hosts allow = 192.168.80.10 192.168.80.20
④设置哪些用户能够访问共享文件夹
invalid users 是合法用户,valid users 是不合法用户。这两个参数分别设置允许访问文件夹和不允许访问文件夹的用户列表。一个用户同时出现在两个列表中的时候,不允许注册优先。列表中的用户名可以用逗号隔开。@表示组,代表组中全部成员。
例如:

valid users = @managers
invalid users = wang,zhang

a.创建组,并将用户添加到组,授权某个组能够访问共享文件夹

groupadd managers #创建组
usermod -G managers zhang #将zhang加入组
usermod -G managers wang #将wang加入组

b.更改samba配置文件

vi /etc/samba/smb.conf

修改以下配置:

[data]
        comment = dataFile
        path = /data
        browseable = yes
        valid users = @managers #允许那个组访问
        invalid users = wang #不合法用户(拒绝优先)
;       valid users = zhang,wang #合法用户

        read only = no
;       public = yes
        create mode =0444
        directory mode =0775
        writable = yes

;       hosts allow = 192.168.80.10 192.168.80.20

④设置用户访问共享文件夹权限
a.设置文件夹默认的访问权限

read only = no
writeable = yes

b.指定用户对共享文件夹的访问

write list = zhang
read list = wang

这两个参数分别指定只允许对一个服务进行只读访问或同时有"写"权限的主机列表,这里,如果一个主机同时在两个列表里,则"写"优先。
c.在Windows中删除访问共享文件夹凭证的命令

net use * /del

d.修改配置文件来实现功能

vi /etc/samba/smb.conf
[data]
        comment = dataFile
        path = /data
        browseable = yes
        valid users = @managers
;       invalid users = wang
  read only = yes #默认情况下只读
        write list = zhang #特定用户写入
        read list = wang #特定用户只读
;       public = yes
        create mode =0444
        directory mode =0775
        writable = yes

⑤设置共享文件夹是否可见
browsable #可见
browseable #隐藏
这两个功能相同的参数控制该段是否在浏览列表中列出。浏览列表列出的是可获得的共享列表。一般[home]段禁止浏览,以提高安全性。
必须输入共享名才能访问隐藏的共享。
可以修改配置文件

[data]
        comment = dataFile
        path = /data
        browseable = yes
        valid users = @managers
;       invalid users = wang
        read only = yes
        write list = zhang
        read list = wang
;       public = yes
        create mode =0444
        directory mode =0775
        writable = yes
  browsable = no
;       hosts allow = 192.168.80.10 192.168.80.20

验证后发现输入共享名才能访问。

八、将Windows用户映射到samba用户
1、编辑名称映射文件

vi /etc/samba/smbusers

[smbusers]

# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
 #当Windows用户输入等号后边的用户名等价于前边的Linux用户

2、编辑配置文件,添加一行,指定映射文件位置和名称

vi /etc/samba/smb.conf

[smb.conf]

      security = user
        passdb backend = smbpasswd
#添加一行,用户映射文件
username map = /etc/samba/smbusers

3、将root用户添加到samba用户

smbpasswd -a root

4、验证:在WindowsXP上使用administrator访问,可以看到使用root用户连接到了samba。

九、在Linux上访问Samba服务器
1、使用smbclient(192.168.80.110)在zhang用户来查看Samba服务器有那些共享

smbclient -L 192.168.80.100 -U zhang

2、使用smbclient(192.168.80.110)命令访问共享文件夹

smbclient //192.168.80.100/data -U zhang

3、输入?可查看smbclient所有可用命令

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb: \> ?
?              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    ..             
!              
smb: \> 
smb: \> get wang.txt #下载文件
smb: \> q #退出

4、查看下载的文件

ls
anaconda-ks.cfg  install.log  install.log.syslog  wang.txt

5、这么下载是很不方便的,所以我们可以将samba服务器共享文件夹挂在到本地

mkdir /mnt/data
mount -t cifs -o username=zhang //192.168.80.100/data /mnt/data/
Password:
#输入密码

6、使用smbclient(192.168.80.110)在Linux访问WindowsXP共享文件夹
①在Windows设置共享策略和共享文件夹并关闭防火墙(如没有账号可在CMD中用net user 用户名 密码 /add来创建用户)

mkdir /mnt/winxp
mount -t cifs -o username=zhangyujia //192.168.80.120/winxp /mnt/winxp
Password: 
#输入密码

②创建文件测试

touch /mnt/winxp/test.txt

欢迎关注
新浪微博:https://weibo.com/yougazhang0506
微信公众平台:张雨嘉
技术分享图片
我的网站:http://www.zhangyujia.cn
51CTO博客:http://blog.51cto.com/11099293
CSDN博客:http://blog.csdn.net/u013260195

以上是关于13-安装与配置Samba服务器的主要内容,如果未能解决你的问题,请参考以下文章

Samba服务器的安装与配置

CentOS 7下安装samba

Samba的安装与配置

Linux Samba文件共享服务,安装与案例配置

Win7 环境下虚拟机内 Samba 服务器的安装配置以及与主机的通信实现

CentOS 7下Samba服务器的安装与配置