CentOS 7.9上搭建samba共享服务器注意事项

    Samba文件共享服务器是能够与windows系统共享文件的服务器,使用非常的广泛,最近参考了《鸟哥的linux私房菜》--服务器篇--samba服务器,在虚拟机上演练了搭建过程,记录一下。

    操作系统:CentOS 7.9

    Samba版本:4.10.16

    主配置文件:/etc/samba/smb.conf,配置前最好先备份一个。另外修改此文件后,注意用 testparm 检查一下语法的正确性

1.samba安装

[root@localhost ~]# yum install samba samba-client

如果有网络,可直接使用以上命令安装,samba-client默认应该安装了的。

如果没有网络(我的虚拟机暂时无网络),可使用iso映像来安装,使用方法为:先挂载光盘到/mnt目录(也可以是其他目录)例如:# mount /dev/cdrom   /mnt,然后添加此挂载目录到yum源中(在 /etc/yum.repos.d/ 目录中添加一个repo文件,(其它文件可先移动到另一个文件夹中,以避免报错)),本地源repo文件示例如下:

[root@localhost ~]# vim /etc/yum.repos.d/Local-CDROM.repo 
[Local-CDROM]  #repo名称
name=Local-CDROM  #这个与上面一样即可
baseurl=file:///mnt/  #光盘映像所挂载的目录位置
gpgcheck=0      #是否校验,此处关闭
enabled=1      #启用此源

 2.3. 服务器端的服务启动与埠口观察

服务启动与开机启动:

[root@localhost ~]# systemctl start smb.service
[root@localhost ~]# systemctl enable smb.service

正常会开启 tcp 139 和 445端口

[root@localhost ~]# netstat -tunlp | grep smbd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      1399/smbd           
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      1399/smbd           
tcp6       0      0 :::445                  :::*                    LISTEN      1399/smbd           
tcp6       0      0 :::139                  :::*                    LISTEN      1399/smbd  

 

3. 无密码共享设置注意事项

[global]
workgroup = SAMBA
security = user #注意samba新版本已不支持 share参数,要加上下面一行
map to guest = Bad User #注意要加上这一行,
; passdb backend = tdbsam  #这一行先注释掉,使用用户名密码共享时再启用吧

force user = root #这一行很重要,没加这一行前,一直不能访问/tmp,此行意义为创建的文件默认为roo

           #t用户所有,如果是其它目录,若权限设置为777,可以不要这一行。(/tmp的    

            #权限比较特殊

[tmp] #共享名称,可以与实际路径名称不同,例如temp
comment = Temporary file space  #描述信息
path = /tmp #要共享的实际目录路径
writable = yes #可写入
browseable = yes #可浏览的共享
guest ok = yes  #任何人可访问

 

 4. 使用帐号密码共享文件

1)修改 /etc/samba/smb.conf

[global]
        workgroup = SAMBA
        security = user
;       map to guest = Bad User #注释或删除这一行和下面一行
;       force user = root
        passdb backend = tdbsam  #使用TDB数据库存放帐号与密码
[homes] #此处默认共享家目录,如果不想共享,可以注释掉或删除
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[project]  #假设共享/home/project目录
comment = smbuser's project
path = /home/project  #实际的目录位置
browseable = yes
writable = yes  #可写
write list = @users  #可写入的有哪些用户或用户组,用户直接写,用户组名前要加@,此处是user组

 编辑完 /etc/samba/smb.conf,记得用 testparm测试一下语法的正确性。

2)注意共享文件夹的权限设置

[root@www ~]# mkdir /home/project
[root@www ~]# chgrp users /home/project
[root@www ~]# chmod 2770 /home/project
[root@www ~]# ll -d /home/project
drwxrws---. 2 root users 4096 Jul 29 13:17 /home/project

 

5. 设定可使用 Samba 的用户账号与密码 (pdbedit)

# 1. 先来建立所需要的各个账号,但假设 student 已经存在了喔!
[root@www ~]# useradd -G users smb1
[root@www ~]# useradd -G users smb2
[root@www ~]# useradd -G users smb3
[root@www ~]# echo 1234 | passwd --stdin smb1
[root@www ~]# echo 1234 | passwd --stdin smb2
[root@www ~]# echo 1234 | passwd --stdin smb3

# 2. 使用 pdbedit 指令功能
[root@www ~]# pdbedit -L [-vw]            <==单纯的察看帐户信息
[root@www ~]# pdbedit -a|-r|-x -u 账号    <==新增/修改/删除账号
[root@www ~]# pdbedit -a -m -u 机器账号   <==与 PDC 有关的机器码
选项与参数:
-L :列出目前在数据库当中的账号与 UID 等相关信息;
-v :需要搭配 -L 来执行,可列出更多的讯息,包括家目录等数据;
-w :需要搭配 -L 来执行,使用旧版的 smbpasswd 格式来显示数据;
-a :新增一个可使用 Samba 的账号,后面的账号需要在 /etc/passwd 内存在者;
-r :修改一个账号的相关信息,需搭配很多特殊参数,请 man pdbedit;
-x :删除一个可使用 Samba 的账号,可先用 -L 找到账号后再删除;
-m :后面接的是机器的代码 (machine account),与 domain model 有关!

# 2.1 开始新增使用者吧!
[root@www ~]# pdbedit -a -u smb1

6、最后,重新启动 Samba 并进行自我测试

[root@www ~]# /etc/init.d/smb restart  #重新启动samba服务
[root@www ~]# /etc/init.d/nmb restart

#使用mount挂载测试一下
[root@www ~]# mount -t cifs //127.0.0.1/smb1 /mnt -o username=smb1

7、关于设置SELINUX

如果共享目录位于 /home下,需要打开一个setsebool开关

#先查看一下与samba有关的sebool
[root@localhost home]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off   #按下面方法设置为on
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off

#设置samba_enable_home_dirs为on
[root@localhost home]# setsebool -P samba_enable_home_dirs=1
[root@localhost home]# getsebool -a | grep samba_enable_home_dirs
samba_enable_home_dirs --> on

8、防火墙设置

1)使用 iptables 开放防火墙

[root@localhost home]# iptables -I INPUT -i ens33 -p tcp -m multiport --dport 139,445 -j ACCEPT


#参数说明
[root@www ~]# iptables [-AI 链名] [-io 网络接口] [-p 协议] \
> [-s 来源IP/网域] [-d 目标IP/网域] -j [ACCEPT|DROP|REJECT|LOG]
选项与参数:
-AI 链名:针对某的链进行规则的 "插入""累加"
    -A :新增加一条规则,该规则增加在原本规则的最后面。例如原本已经有四条规则,
         使用 -A 就可以加上第五条规则!
    -I :插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。
         例如原本有四条规则,使用 -I 则该规则变成第一条,而原本四条变成 2~5 号
    链 :有 INPUT, OUTPUT, FORWARD 等,此链名称又与 -io 有关,请看底下。

-io 网络接口:设定封包进出的接口规范
    -i :封包所进入的那个网络接口,例如 eth0, lo 等接口。需与 INPUT 链配合;
    -o :封包所传出的那个网络接口,需与 OUTPUT 链配合;

-p 协定:设定此规则适用于哪种封包格式
   主要的封包格式有: tcp, udp, icmp 及 all 。

-s 来源 IP/网域:设定此规则之封包的来源项目,可指定单纯的 IP 或包括网域,例如:
   IP  :192.168.0.100
   网域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
   若规范为『不许』时,则加上 ! 即可,例如:
   -s ! 192.168.100.0/24 表示不许 192.168.100.0/24 之封包来源;

-d 目标 IP/网域:同 -s ,只不过这里指的是目标的 IP 或网域。

-j :后面接动作,主要的动作有接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)及记录(LOG)

2)建议使用firewalld图形化防火墙设置,如图

 

posted @ 2022-05-07 17:31  Evan-whc  阅读(743)  评论(0编辑  收藏  举报