Linux-使用Samba实现文件的网络共享及管理

Samba是在Linux和UNIX系统上实现SMB协议的免费软件,由服务器和客户端程序组成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

安装Samba

Samba软件主要有三个部分:samba、samba-common、samba-client
samba:samba主程序;
samba-common:samba的配置,检测程序等;
samba-client:samba的客户端程序。
[root@server ~]# yum install samba samba-common samba-client -y        ##安装samba软件
[root@server ~]# systemctl start smb                                   ##启动samba软件服务
[root@server ~]# systemctl enable smb                                  ##设置开机启动
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
[root@server ~]# firewall-cmd --permanent --add-service=samba          ##配置防火墙允许samba访问
success    
[root@server ~]# firewall-cmd --permanent --add-service=mountd         ##防火墙永久允许挂载服务
success

Samba的基本配置

配置文件:/etc/samba/smb.conf
[root@server ~]# vim /etc/samba/smb.conf 
配置文件帮助
[root@server ~]# man 5 smb.conf

###配置文件内容有两部分:
###Global Settings(全局设置)
 89         workgroup = MYGROUP                        ##工作组
 90         server string = Samba Server Version %v    ##服务器描述
 91 
 92 ;       netbios name = MYSERVER                    ##NetBIOS名称,默认注释
 93 
 94 ;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24    ##设置samba服务器监听网卡,默认注释
 95 ;       hosts allow = 127. 192.168.12. 192.168.13.              ##sanba白名单,默认
107         # log files split per-machine:
108         log file = /var/log/samba/log.%m                        ##日志文件,拆分为每台主机
109         # maximum size of 50KB per log file, then rotate:
110         max log size = 50                                       ##日志最大值,单位KB
123         security = user                                         ##安全验证模式
    ##1、share:共享的,不需要账户密码
    ##2、user:用户验证,samba server负责检查帐号和密码
    ##3、server:服务器代理验证
124         passdb backend = tdbsam|smbpasswd                       ##定义用户信息后台类型

###Share Definitions(共享配置)

[jinx]                                     ##共享名称
        comment = Jinx Directories         ##共享描述
        path = /share/                     ##共享目录路径
        browseable = yes                   ##是否显示,不显示就需要通过IP+共享名称访问
        writable = yes                     ##是否可写
        guest ok = yes                     ##匿名用户是否可访问
        admin users = USER                 ##此共享的管理员,可添加多用户,用逗号隔开
;       valid users = USER|@GROUP          ##可以访问的用户|组
        write list = USER                  ##具有写入权限的用户

Samba用户、登陆

[root@server ~]# smbpasswd -a student        ##添加用户,必须是本地存在的用户
New SMB password:                            ##输入samba登陆密码
Retype new SMB password:                     ##密码确认
Added user student.
[root@server ~]# pdbedit -L                  ##查看用户
student:1000:Student User
[root@server ~]# getsebool -a | grep samba   ##查看SELINUX相关安全设置
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server ~]# setsebool -P use_samba_home_dirs on    ##永久设置允许访问家目录


###客户端###
[root@desktop ~]# yum install samba-client -y           ##安装客户端软件
[root@desktop ~]# smbclient -L //172.25.254.243 -U student    ##-L:List;-U:User
Enter student's password: 
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
    student         Disk      Home Directories
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
[root@desktop ~]# smbclient //172.25.254.243/student -U student
Enter student's password: 
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
smb: \> 

共享目录设定

[root@server ~]# mkdir /jinx
[root@server ~]# touch /jinx/jinxfile

[root@server ~]# vim /etc/samba/smb.conf 
        [jinx]
        comment = Jinx Share
        path = /jinx/
wq

##SELinux未开启下列不用修改
[root@server ~]# semanage fcontext -a -t samba_share_t '/jinx(/.*)?'        ##修改共享目录的安全上下文
[root@server ~]# restorecon -FvvR /jinx
restorecon reset /jinx context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
restorecon reset /jinx/jinxfile context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
##如果共享目录为系统目录,修改系统目录安全上下文显然不合适,则需要:
[root@server ~]# setsebool -P samba_export_all_ro|rw on                     ##只读|读写

##客户端##
[root@desktop ~]# smbclient -L //172.25.254.243 -U student
Enter student's password: 
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]

    Sharename       Type      Comment
    ---------       ----      -------
    jinx            Disk      Jinx Share
    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
    student         Disk      Home Directories
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------

客户端多用户挂载

[root@desktop ~]# yum install cifs-utils -y
##创建用户列表文件
[root@desktop ~]# vim /root/smbusers
username=student
password=smb
##设置用户列表文件权限
[root@desktop ~]# chmod 600 /root/smbusers 

##挂载相关手册:man mount.cifs
##挂载共享目录到本地
[root@desktop ~]# mount -o credentials=/root/smbusers,multiuser,sec=ntlmssp //172.25.254.243/jinx /mnt
##    credentials=/root/smbusers    指定挂载时所用到的用户文件
##    multiuser                     支持多用户认证
##    sec=ntlmssp                   认证方式

[root@desktop ~]# useradd test    ##创建测试账户
[root@desktop ~]# su - test
[test@desktop ~]$ ls /mnt         ##浏览挂载文件
ls: cannot access /mnt: Permission denied
[test@desktop ~]$ cifscreds add -u student 172.25.254.243    ##添加认证
Password: 
[test@desktop ~]$ ls /mnt
jinxfile

匿名用户访问

[root@server ~]# vim /etc/samba/smb.conf
map to guest = bad user
        [jinx]
        comment = Jinx Share
        path = /jinx/
        writable = yes
        admin users = student
        guest ok = yes
        write list = student

[root@desktop ~]# mount //172.25.254.243/jinx /mnt -o username=guest,password=""
[root@desktop ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/vda1              10473900 3213348   7260552  31% /
devtmpfs                 469332       0    469332   0% /dev
tmpfs                    484920      80    484840   1% /dev/shm
tmpfs                    484920   12760    472160   3% /run
tmpfs                    484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo       483670   27050    427129   6% /home
//172.25.254.243/jinx  10473900 3196220   7277680  31% /mnt

你可能感兴趣的:(Linux)