zoukankan      html  css  js  c++  java
  • linux系统中部署Samba服务(实现linux系统之间文件共享)

    samba的文件共享服务采用服务器/客户端模式,本质为服务器端的特定目录实现在客户机端特定目录的挂载,从而实现服务器端和客户机端的目录文件共享。

    在以下实验中,PC1为服务器端,IP为192.168.10.10;  PC2为客户机端,IP为192.168.10.20;

    1、在PC1服务器端安装samba服务

    [root@PC1 ~]# yum install samba -y
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    rhel7                                                      | 4.1 kB  00:00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package samba.x86_64 0:4.1.1-31.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ==================================================================================
     Package         Arch             Version                   Repository       Size
    ==================================================================================
    Installing:
     samba           x86_64           4.1.1-31.el7              rhel7           527 k
    
    Transaction Summary
    ==================================================================================
    Install  1 Package
    
    Total download size: 527 k
    Installed size: 1.5 M
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : samba-4.1.1-31.el7.x86_64                                      1/1 
    rhel7/productid                                            | 1.6 kB  00:00:00     
      Verifying  : samba-4.1.1-31.el7.x86_64                                      1/1 
    
    Installed:
      samba.x86_64 0:4.1.1-31.el7                                                     
    
    Complete!

    2、在PC1服务器端精简samba服务的主配置文件

    [root@PC1 ~]# cd /etc/samba/
    [root@PC1 samba]# ls
    lmhosts  smb.conf
    [root@PC1 samba]# cp smb.conf smb.conf.bak
    [root@PC1 samba]# grep -v "#" smb.conf.bak | grep -v ";" | grep -v "^$" > smb.conf
    [root@PC1 samba]# cat smb.conf
    [global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
    [homes]
        comment = Home Directories
        browseable = no
        writable = yes
    [printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no
        writable = no
        printable = yes

    3、在PC1服务器端创建用于访问共享资源的账户信息(samba服务采用用户口令认证模式,用于登录的用户在PC1服务器端必须已经存在

    [root@PC1 ~]# id linuxprobe
    uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),10(wheel)
    [root@PC1 ~]# pdbedit -a -u linuxprobe
    new password:      ## 此处设定在客户端登录时的密码
    retype new password:
    Unix username:        linuxprobe
    NT username:          
    Account Flags:        [U          ]
    User SID:             S-1-5-21-1761013935-1237571759-2663186072-1000
    Primary Group SID:    S-1-5-21-1761013935-1237571759-2663186072-513
    Full Name:            linuxprobe
    Home Directory:       \\pc1\linuxprobe
    HomeDir Drive:        
    Logon Script:         
    Profile Path:         \\pc1\linuxprobe\profile
    Domain:               PC1
    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, 15 Dec 2020 21:22:58 CST
    Password can change:  Tue, 15 Dec 2020 21:22:58 CST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    4、在PC1服务器端创建用户共享资源的文件目录

    [root@PC1 ~]# mkdir /home/database
    [root@PC1 ~]# ll -d /home/database/
    drwxr-xr-x. 2 root root 6 Dec 15 21:25 /home/database/
    [root@PC1 ~]# chown -R linuxprobe:linuxprobe /home/database/   ## 修改权限,客户端登录用户权限
    [root@PC1 ~]# ll -d /home/database/
    drwxr-xr-x. 2 linuxprobe linuxprobe 6 Dec 15 21:25 /home/database/
    [root@PC1 ~]# ll -ldZ /home/database/   ## 查看SELinux上下文
    drwxr-xr-x. linuxprobe linuxprobe unconfined_u:object_r:home_root_t:s0 /home/database/
    [root@PC1 ~]# semanage fcontext -a -t samba_share_t /home/database   ## 修改上下文
    [root@PC1 ~]# restorecon -Rv /home/database/  ## 启动
    restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
    [root@PC1 ~]# ll -ldZ /home/database/
    drwxr-xr-x. linuxprobe linuxprobe unconfined_u:object_r:samba_share_t:s0 /home/database/

    5、在PC1服务器端设置SELinux服务于策略,使家目录支持samba服务

    [root@PC1 ~]# getsebool -a | grep samba
    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@PC1 ~]# setsebool -P samba_enable_home_dirs=on
    [root@PC1 ~]# getsebool -a | grep samba
    samba_create_home_dirs --> off
    samba_domain_controller --> off
    samba_enable_home_dirs --> on
    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

    6、在PC1服务器端修改samba服务主配置文件,填写共享信息

    [root@PC1 ~]# vim /etc/samba/smb.conf
    [global]
            workgroup = MYGROUP
            server string = Samba Server Version %v
            log file = /var/log/samba/log.%m
            max log size = 50
            security = user
            passdb backend = tdbsam
            load printers = yes
            cups options = raw
    [homes]
            comment = Home Directories
            browseable = no
            writable = yes
    [printers]
            comment = All Printers
            path = /var/spool/samba
            browseable = no
            guest ok = no
            writable = no
            printable = yes
    [database]
    comment = Do not arbitrarily modify the database file
    path = /home/database
    public = no
    writable = yes
    ~                                                                                                   

    7、在PC1服务器端重启samba服务

    [root@PC1 ~]# systemctl restart smb
    [root@PC1 ~]# systemctl enable smb
    ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'

    8、在PC1服务器端清空防火墙策略

    [root@PC1 ~]# iptables -F
    [root@PC1 ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
    [root@PC1 ~]# systemctl status smb   ## 查看samba服务状态
    smb.service - Samba SMB Daemon
       Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled)
       Active: active (running) since Tue 2020-12-15 21:41:03 CST; 1min 42s ago
     Main PID: 4487 (smbd)
       Status: "smbd: ready to serve connections..."
       CGroup: /system.slice/smb.service
               ├─4487 /usr/sbin/smbd
               └─4490 /usr/sbin/smbd
    
    Dec 15 21:41:03 PC1 smbd[4487]: [2020/12/15 21:41:03.287294,  0] ../lib/util/become_daemon.c:...ady)
    Dec 15 21:41:03 PC1 systemd[1]: Started Samba SMB Daemon.
    Hint: Some lines were ellipsized, use -l to show in full.

    9、查看PC1服务器端IP

    [root@PC1 ~]# ifconfig | head -n 5
    eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255
            inet6 fe80::20c:29ff:fe66:37f7  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:66:37:f7  txqueuelen 1000  (Ethernet)
            RX packets 222  bytes 45170 (44.1 KiB)

     10、在PC2客户端测试与PC1服务器主机的连通性

    [root@PC2 ~]# ifconfig | head -n 5
    eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
            inet6 fe80::20c:29ff:fe25:bb3e  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:25:bb:3e  txqueuelen 1000  (Ethernet)
            RX packets 78  bytes 26676 (26.0 KiB)
    [root@PC2 ~]# ping -c 3 192.168.10.10
    PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
    64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.408 ms
    64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.231 ms
    64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.238 ms
    
    --- 192.168.10.10 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    rtt min/avg/max/mdev = 0.231/0.292/0.408/0.083 ms

    11、在PC2客户端安装支持文件共享服务的软件包(cifs-utils)

    [root@PC2 ~]# yum install cifs-utils -y
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    Resolving Dependencies
    --> Running transaction check
    ---> Package cifs-utils.x86_64 0:6.2-6.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package             Arch            Version               Repository      Size
    ================================================================================
    Installing:
     cifs-utils          x86_64          6.2-6.el7             rhel7           83 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 83 k
    Installed size: 174 k
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : cifs-utils-6.2-6.el7.x86_64                                  1/1 
    rhel7/productid                                          | 1.6 kB     00:00     
      Verifying  : cifs-utils-6.2-6.el7.x86_64                                  1/1 
    
    Installed:
      cifs-utils.x86_64 0:6.2-6.el7                                                 
    
    Complete!

    12、在PC2客户端,将登陆用户、密码和共享域写入到认证文件中

    [root@PC2 ~]# pwd
    /root
    [root@PC2 ~]# vim auth.smb
    username=linuxprobe
    password=abc123456   ## 此处的密码为在PC1服务器端使用pdbedit命令创建用户资料是设定的登陆密码
    domain=MYGROUP
    [root@PC2 ~]# ll auth.smb 
    -rw-r--r--. 1 root root 54 Dec 15 22:09 auth.smb
    [root@PC2 ~]# chmod 600 auth.smb  ## 设定为仅root可查看
    [root@PC2 ~]# ll auth.smb 
    -rw-------. 1 root root 54 Dec 15 22:09 auth.smb

    13、在PC2客户机端创建挂载点

    [root@PC2 ~]# mkdir /database

    14、修改开机自动挂载配置文件

    [root@PC2 ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Wed Dec  2 16:46:09 2020
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root   /                       xfs     defaults        1 1
    UUID=5cc50fd7-fef7-4902-a0f6-d583b437954d /boot                   xfs     defaults        1 2
    /dev/mapper/rhel-swap   swap                    swap    defaults        0 0
    /dev/cdrom      /media/cdrom    iso9660 defaults        0       0
    //192.168.10.10/database        /database       cifs    credentials=/root/auth.smb      0       0

    15、在PC1服务器端的共享点创建测试文件

    [root@PC1 database]# cd /home/database/
    [root@PC1 database]# echo 'i am pc1' > pc1
    [root@PC1 database]# mkdir dirpc1
    [root@PC1 database]# ls
    dirpc1  pc1

    16、在PC2客户机端挂载共享目录

    [root@PC2 ~]# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root   18G  3.0G   15G  17% /
    devtmpfs               985M     0  985M   0% /dev
    tmpfs                  994M   80K  994M   1% /dev/shm
    tmpfs                  994M  8.8M  986M   1% /run
    tmpfs                  994M     0  994M   0% /sys/fs/cgroup
    /dev/sda1              497M  119M  379M  24% /boot
    /dev/sr0               3.5G  3.5G     0 100% /media/cdrom
    [root@PC2 ~]# mount -a
    [root@PC2 ~]# df -h
    Filesystem                Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root      18G  3.0G   15G  17% /
    devtmpfs                  985M     0  985M   0% /dev
    tmpfs                     994M   80K  994M   1% /dev/shm
    tmpfs                     994M  8.8M  986M   1% /run
    tmpfs                     994M     0  994M   0% /sys/fs/cgroup
    /dev/sda1                 497M  119M  379M  24% /boot
    /dev/sr0                  3.5G  3.5G     0 100% /media/cdrom
    //192.168.10.10/database   18G  3.0G   15G  17% /database

    17、在PC2端进入挂载点,检测是否PC1服务器端测试文件

    [root@PC2 database]# cd /database/
    [root@PC2 database]# ls
    dirpc1  pc1
    [root@PC2 database]# cat pc1 
    i am pc1
    [root@PC2 database]# echo 'i am pc2' > pc2
    [root@PC2 database]# mkdir dirpc2
    [root@PC2 database]# ls
    dirpc1  dirpc2  pc1  pc2

    18、在PC1服务器端共享目录检测客户端创建的文件

    [root@PC1 database]# cd /home/database/
    [root@PC1 database]# ls
    dirpc1  dirpc2  pc1  pc2
    [root@PC1 database]# cat pc2
    i am pc2

      以上实验说明了PC1服务器端的目录 /home/database在客户机端/database(挂载点)实现了文件共享

  • 相关阅读:
    MySQL/MariaDB/Percona数据库升级脚本
    systemd详解
    Nginx下Redmine2.6配置
    Linux下Python获取IP地址
    浅谈Linux内存管理机制
    深入理解PHP Opcode缓存原理
    Varnish – 高性能http加速器
    问题记录
    Java 排序报错
    记录一次数据库链接不够用被drop掉的问题
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14141216.html
Copyright © 2011-2022 走看看