• linux 简单记录11 --使用 Samba 或 NFS 实现文件共享


    使用 Samba 或 NFS 实现文件共享

    --Samba 文件共享服务;
    --NFS(网络文件系统);
    --autofs 自动挂载服务。

    1 Samba 文件共享服务
    Samba 服务程序现在已经成为在 Linux 系统与 Windows系统之间共享文件的最佳选择。
    安装

    [root@iscsi ~]# yum install samba -y
    [root@iscsi ~]# cat /etc/samba/smb.conf
    # See smb.conf.example for a more detailed config file or
    # read the smb.conf manpage.
    # Run 'testparm' to verify the config is correct after
    # you modified it.
    
    [global]
        workgroup = SAMBA
        security = user
    
        passdb backend = tdbsam
    
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
    
    [homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
    
    [printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No
    
    [print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

    Samba 服务程序中的参数以及作用

    [global]
    workgroup = MYGROUP #工作组名称
    server string = Samba Server
    Version %v #服务器介绍信息,参数%v 为显示 SMB 版本号
    log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称, 参数%m 为 来访的主机名
    max log size = 50 #定义日志文件的最大容量为 50KB
    security = user #安全验证的方式,总共有 4 种
    #share:来访主机无需验证口令;比较方便,但安全性很差
    #user:需验证来访主机提供的口令后才可以访问;提升了安全性
    #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
    #domain:使用域控制器进行身份验证
    passdb backend = tdbsam #定义用户后台的类型,共有 3 种
    #smbpasswd:使用 smbpasswd 命令为系统用户设置 Samba 服务程序的密码
    #tdbsam:创建数据库文件并使用 pdbedit 命令建立 Samba 服务程序的用户
    #ldapsam:基于 LDAP 服务进行账户验证
    load printers = yes #设置在 Samba 服务启动时是否共享打印机设备
    cups options = raw #打印机的选项
    [homes]
    comment = Home Directories #描述信息
    browseable = no #指定共享信息是否在“网上邻居”中可见
    writable = yes #定义是否可以执行写入操作,与“read only”相反
    [printers] #打印机共享参数
    [root@iscsi ~]#  mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
    [root@iscsi ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
    [root@iscsi ~]# cat /etc/samba/smb.conf
    [global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
    [homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
    [printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No
    [print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

    1.1 配置共享资源
    Samba 服务程序的主配置文件,包括全局配置参数和区域配置参数。
    全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。
    区域配置参数则用于设置单独的共享资源,且仅对该资源有效。
    用于设置 Samba 服务程序的参数以及作用

    [database] 共享名称为 database
    comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
    path = /home/database 共享目录为/home/database
    public = no 关闭“所有人可见”
    writable = yes 允许写入操作

    --1 创建用于访问共享资源的账户信息。在 RHEL 7 系统中, Samba 服务程序默认使用的是用户口令认证模式(user)。
    pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。
    在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
    用于 pdbedit 命令的参数以及作用

    -a 用户名 建立 Samba 账户
    -x 用户名 删除 Samba 账户
    -L 列出账户列表
    -Lv 列出账户详细信息的列表
    [root@iscsi ~]# id samba
    id: samba: no such user
    [root@iscsi ~]# useradd samba
    [root@iscsi ~]# id samba
    uid=1012(samba) gid=1012(samba) groups=1012(samba)
    [root@iscsi ~]# pdbedit -a -u samba
    new password: ##输入密码
    retype new password: ##确认密码
    Unix username:        samba
    NT username:          
    Account Flags:        [U          ]
    User SID:             S-1-5-21-2997122023-287577459-3228560404-1000
    Primary Group SID:    S-1-5-21-2997122023-287577459-3228560404-513
    Full Name:            
    Home Directory:       \iscsisamba
    HomeDir Drive:        
    Logon Script:         
    Profile Path:         \iscsisambaprofile
    Domain:               ISCSI
    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 2020 09:42:12 CST
    Password can change:  Tue, 14 Jul 2020 09:42:12 CST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    --2 建用于共享资源的文件目录。

    [root@iscsi ~]# mkdir /home/database
    [root@iscsi ~]# chown -Rf samba:samba /home/database/

    --3 设置 SELinux 服务与策略

    # semanage fcontext -a -t samba_share_t /home/database
    # restorecon -Rv /home/database
    # getsebool -a | grep samba
    # setsebool -P samba_enable_home_dirs on

    --4 编辑samba主配置文件

    [root@iscsi ~]# vim /etc/samba/smb.conf
    [root@iscsi ~]# cat /etc/samba/smb.conf
    [global]
        workgroup = MYGROUP
        log file=/var/log/samba/log.%m
        max log size 50
        security = user
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
        directory mask = 0775
    [database]
        comment= do not arbitratily modify the database file
        path=/home/database
        public=no
        writable=yes
    [homes]参数为来访用户的家目录共享信息
    [printers]参数为共享的打印机设备。
    --5 
    [root@iscsi ~]# systemctl restart smb
    [root@iscsi ~]# systemctl status smb
    ● smb.service - Samba SMB Daemon
       Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
       Active: active (running) since Mon 2020-07-20 10:04:37 CST; 7s ago
         Docs: man:smbd(8)
               man:samba(7)
               man:smb.conf(5)
     Main PID: 67555 (smbd)
       Status: "smbd: ready to serve connections..."
       CGroup: /system.slice/smb.service
               ├─67555 /usr/sbin/smbd --foreground --no-process-group
               ├─67557 /usr/sbin/smbd --foreground --no-process-group
    1.2 Windows 访问文件共享服务
    Samba共享服务器 centos7 10.15.7.20
    windows         win10   10.17.60
    在windows使用\10.15.7.20,输入用户名密码 samba
    可以看到database文件夹,在该目录下进行查看、写入、更名、删除文件等操作
    [root@iscsi ~]# cd /home/database/
    [root@iscsi database]# ll
    total 36
    -rwxr--r-- 1 samba samba 28967 Jul  7 15:43 DNS.txt
    -rwxr--r-- 1 samba samba     6 Jul 20 10:08 new1.txt
    1.3 Linux 访问文件共享服务
    Samba共享服务器 centos7 10.15.7.20
    linux客户端     centos7 10.15.7.22
    [root@localhost ~]# yum install cifs-utils -y
    在linux客户端,写入samba服务的用户名、密码、共享域的信息
    [root@localhost ~]# vim auth.smb
    username=samba
    password=samba
    domain=MYGROUP
    [root@localhost ~]# chmod 600 auth.smb 
    [root@localhost ~]# mkdir /database
    [root@localhost ~]# vim /etc/fstab
    //10.15.7.20/database /database cifs credentials=/root/auth.smb 0 0
    [root@localhost ~]# ll /root/auth.smb 
    -rw-------. 1 root root 45 Jul 19 22:20 /root/auth.sm
    [root@localhost ~]# mount -a
    [root@localhost ~]# df -h
    //10.15.7.20/database     40G  6.2G   34G  16% /database
    [root@localhost ~]# cd /database/
    [root@localhost database]# ll
    total 36
    -rwxr--r--. 1 1012 1012 28967 Jul  7 03:43 DNS.txt
    -rwxr--r--. 1 1012 1012     6 Jul 19 22:08 new1.txt

    2 NFS(网络文件系统)--仅实现linux系统之间的共享
    如果需要共享的文件的主机都是linux,建议在客户端部署NFS服务来共享文件。
    NFS(网络文件系统)服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机
    (Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。

    [root@iscsi ~]# yum install nfs-utils -y #安装nfs软件包
    --1 
    NFS 服务器  centos 7  10.15.7.20
    NFS 客户端  centos 7  10.15.7.22
    --2 创建目录和文件夹
    [root@iscsi ~]# mkdir /nfsfile
    [root@iscsi ~]# chmod -Rf 777 /nfsfile/
    [root@iscsi ~]# echo "i love x" >/nfsfile/readme
    --3 修改配置文件
    用于配置 NFS 服务程序配置文件的参数
    ro 只读
    rw 读写
    root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
    no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
    all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    [root@iscsi ~]# vim /etc/exports
    [root@iscsi ~]# more /etc/exports
    /nfsfile 10.15.7.*(rw,sync,root_squash)
    [root@iscsi ~]# systemctl restart rpcbind
    [root@iscsi ~]# systemctl start nfs-server
    --4 配置客户端
    showmount 命令中可用的参数以及作用
    -e 显示 NFS 服务器的共享列表
    -a 显示本机挂载的文件资源的情况
    -v 显示版本号
    [root@iscsi ~]# showmount -e 10.15.7.20 #查询nfs服务器的远程共享信息
    Export list for 10.15.7.20:
    /nfsfile 10.15.7.*
    在 NFS 客户端创建一个挂载目录,使用 mount 命令并结合-t 参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的 IP 地址、
    服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
    [root@localhost ~]# mkdir /nfsfile
    [root@localhost ~]# mount -t nfs 10.15.7.20:/nfsfile /nfsfile
    [root@localhost ~]# vim /etc/fstab
    10.15.7.20:/nfsfile /nfsfile nfs defaults 0 0
    [root@localhost ~]# df -h
    //10.15.7.20/database     40G  6.2G   34G  16% /database
    10.15.7.20:/nfsfile       40G  6.2G   34G  16% /nfsfile
    [root@localhost ~]# cd /nfsfile/
    [root@localhost nfsfile]# ll
    total 4
    -rw-r--r--. 1 root root 9 Jul 19 23:20 readme
    [root@localhost nfsfile]# cat readme 
    i love x
    [root@localhost nfsfile]# echo "i'm xxiuerm luer" >> readme 
    -bash: readme: Permission denied
    [root@localhost nfsfile]# touch 1.txt
    [root@localhost nfsfile]# echo "1234" > 1.txt 
    [root@localhost nfsfile]# more 1.txt 
    1234
    [root@iscsi ~]# cd /nfsfile/
    [root@iscsi nfsfile]# ll
    total 8
    -rw-r--r-- 1 nfsnobody nfsnobody  5 Jul 20 14:24 1.txt ###nfs客户端创建的文件
    -rw-r--r-- 1 root      root      15 Jul 20 11:32 readme ##nfs服务器端创建的文件
    [root@iscsi nfsfile]# echo "222">> 1.txt 
  • 相关阅读:
    [导入]一家公司招收.net高级程序员而出得一套卷子
    [导入].NET Remoting 实现分布式数据库查询
    [导入].NET面试题
    [导入]System.Web.Mail Send Mail
    Aspnet_regsql 碰到的问题解决
    subsnic实例!
    sql coalesce()函数、datalength()函数介绍及应用
    .NET2.0 验证控件常用的正则表达式 站长分享站
    C#日期函数所有样式大全
    SubSonic的sql插入
  • 原文地址:https://www.cnblogs.com/yhq1314/p/13397985.html
Copyright © 2020-2023  润新知