Linux学习93 跨平台共享服务-samba服务基础应用与进阶

一、上集续

  1、共享文件系统配置

    a、[SHARED_NAME]

    b、有三类

      (1)、[homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录

      (2)、[printers]:定义打印服务

      (3)、[shared_fs]:定义共享的文件系统

    c、常用指令

      comment:注释信息

      path:当前共享所映射的文件系统路径

      browseable:是否可浏览,指是否可被用户查看

      guest ok:是否允许来宾账号访问

      public:是否公开所有用户

      writable:是否可写

      read only:是否为只读

      white list:拥有写权限的用户列表

        用户名

        @组名

        +组名

  2、samba用户管理

    a、smbpasswd

      smbpasswd [options] USERNAME

        -a:添加

        -x:删除

        -d:禁用

        -e:启用

    b、pdbedit

      -L:列出samba服务中的所有用户。(在服务端执行)

        

      -a,--create:添加用户为samba用户

        -u,--User=USER:要管理的用户

        

      -x,--delete:删除用户;

        

      -t,--password-from-stdin:从标准输出接收字符串作为用户密码

        使用空提示符,而后将密码输入两次。(功能太菜鸡)

    c、查看服务器端的共享

      smbclient -L SMB_SERVER [-U USERNAME]

    d、交互式文件访问

      smbclient //SMB_SERVER/SHARE_NAME [-U USERNAME]

    e、挂载访问:

      mount -t cifs //SMB_SERVER/SAHRE_NAME -o username=USERNAME,password=PASSWORD

      注意:挂载操作的用户,与-o选项中指定用户直接产生映射关系;

        此时,访问挂载点,是以-o选项中的username指定的用户身份运行;本地用户对指定的路径访问,首先得拥有对应的本地系统权限。

  3、smbstatus命令

    a、显示samba服务的相关共享的访问状态信息

      -b:显示简要格式信息

      -v:显示详细格式信息

[root@www /]# smbstatus 

Samba version 4.6.2
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
13582   smbuser3     smbuser3     192.168.10.14 (ipv4:192.168.10.14:36960)  NT1               -                    -                    

Service      pid     Machine       Connected at                     Encryption   Signing     
---------------------------------------------------------------------------------------------
myfiles      13582   192.168.10.14 四 5月 28 17时20分28秒 2020 CST -            -           
IPC$         13582   192.168.10.14 四 5月 28 17时20分28秒 2020 CST -            -           

No locked files

[root@www /]# smbstatus -b

Samba version 4.6.2
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
13582   smbuser3     smbuser3     192.168.10.14 (ipv4:192.168.10.14:36960)  NT1               -                    -                    
[root@www /]# smbstatus -v
using configfile = /etc/samba/smb.conf

Samba version 4.6.2
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing              
----------------------------------------------------------------------------------------------------------------------------------------
13582   smbuser3     smbuser3     192.168.10.14 (ipv4:192.168.10.14:36960)  NT1               -                    -                    

Service      pid     Machine       Connected at                     Encryption   Signing     
---------------------------------------------------------------------------------------------
myfiles      13582   192.168.10.14 四 5月 28 17时20分28秒 2020 CST -            -           
IPC$         13582   192.168.10.14 四 5月 28 17时20分28秒 2020 CST -            -           

No locked files

  4、实验

    a、我们在我们192.168.10.13上创建目录/data/samba/files

[root@www /]# mkdir -pv /data/samba/files
mkdir: 已创建目录 "/data/samba"
mkdir: 已创建目录 "/data/samba/files"

    b、然后我们编辑配置文件/etc/samba/smb.conf,添加相应的配置信息,并测试语法是否有问题,然后我们重启服务

[root@www /]# cat /etc/samba/smb.conf |grep -EA5 "[myfiles]"
[myfiles]
    comment = A test shared dir
    path = /data/samba/files
    public = yes
    writable = yes
    browseable = yes
[root@www /]#
[root@www /]# testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[myfiles]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
    interfaces = lo ens33
    server string = Samba Server Version %v
    workgroup = MYGROUP
    log file = /var/log/samba/log.%m
    max log size = 50
    security = USER
    idmap config * : backend = tdb
    cups options = raw
    hosts allow = 127. 192.168.10.


[homes]
    comment = Home Directories
    browseable = No
    read only = No


[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = No
    printable = Yes


[myfiles]
    comment = A test shared dir
    path = /data/samba/files
    guest ok = Yes
    read only = No
[root@www /]#
[root@www /]# systemctl restart nmb.service smb.service

    c、现在我们在客户端192.168.10.14上

      (1)、查看

[root@node2 ~]# smbclient -L 192.168.10.13 -U smbuser1
Enter SAMBAsmbuser1's password: 
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    myfiles         Disk      A test shared dir
    IPC$            IPC       IPC Service (Samba Server Version 4.6.2)
    smbuser1        Disk      Home Directories
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]

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

    Workgroup            Master
    ---------            -------
    MYGROUP              WWW

      (2)、访问时我们发现我们可以查看,但是没法上传,这是因为虽然共享权限没问题,但是我们文件权限有问题

[root@node2 ~]# smbclient //192.168.10.13/myfiles -U smbuser1
Enter SAMBAsmbuser1's password: 
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: > ls
  .                                   D        0  Thu May 28 15:59:27 2020
  ..                                  D        0  Thu May 28 15:59:27 2020

        17811456 blocks of size 1024. 11438732 blocks available
smb: > lcd /etc/
smb: > put fstab
NT_STATUS_ACCESS_DENIED opening remote file fstab
smb: >

      (3)、我们查看我们/data/samba/files目录,可以看到其他用户没有写权限,并且属主和属组都是root,因此我们需要将属主改为samba这个用户。当然我们也可以使用facl权限,设定我们smbuser1拥有读写执行权限。然后重启服务

[root@www /]# ls -ld /data/samba/files/
drwxr-xr-x 2 root root 6 5月  28 15:59 /data/samba/files/
[root@www /]# setfacl -m u:smbuser1:rwx /data/samba/files/
[root@www /]# getfacl /data/samba/files/
getfacl: Removing leading '/' from absolute path names
# file: data/samba/files/
# owner: root
# group: root
user::rwx
user:smbuser1:rwx
group::r-x
mask::rwx
other::r-x
[root@www /]# !syst
systemctl restart nmb.service smb.service

      (4)、然后我们重启后再次在192.168.10.14上执行上传操作,发现就可以了

[root@node2 ~]# smbclient //192.168.10.13/myfiles -U smbuser1
Enter SAMBAsmbuser1's password: 
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: > lcd /etc/
smb: > put fstab
putting file fstab as fstab (37.8 kb/s) (average 37.8 kb/s)
smb: >

  3、我们设置有限用户才有写权限

    a、在/etc/samba/smb.conf中配置相应的参数,并且重启服务

[root@www /]# cat /etc/samba/smb.conf |grep -EA5 "[myfiles]"
[myfiles]
    comment = A test shared dir
    path = /data/samba/files
    public = yes
    browseable = yes
    write list = smbuser1 #如果有多个的话在后面写即可
[root@www /]#
[root@www /]# systemctl restart nmb.service smb.service

    b、此时就算我们smbuser2对目录有写权限也是没法写的,因为我们在配置文件中配置了权限的

    c、如果我们期望smbuser1和smbuser2都有访问权限还有另外一种方法,我们创建一个组后让组对目录有写权限,我们组内所有用户也就都有相应的权限了。

      (1)、我们首先创建一个组并且定义组对这个目录有写权限

[root@www /]# groupadd smbgrp
[root@www /]# setfacl -m g:smbgrp:rwx /data/samba/files/
[root@www /]# getfacl /data/samba/files/
getfacl: Removing leading '/' from absolute path names
# file: data/samba/files/
# owner: root
# group: root
user::rwx
user:smbuser1:rwx
group::r-x
group:smbgrp:rwx
mask::rwx
other::r-x

      (2)、我们创建smbuser3和smbuser4并加入到smbgrp组中

[root@www /]# useradd -G smbgrp smbuser3
[root@www /]# useradd -G smbgrp smbuser4

      (3)、接下来我们定义其在samba级拥有写权限

[root@www /]# cat /etc/samba/smb.conf |grep -EA5 "[myfiles]"
[myfiles]
    comment = A test shared dir
    path = /data/samba/files
    public = yes
    browseable = yes
    write list = +smbgrp

      (4)、我们现在将smbuser3和smbuser4加入samba用户并且重启服务

[root@www /]# smbpasswd -a smbuser3
New SMB password:
Retype new SMB password:
Added user smbuser3.
[root@www /]# smbpasswd -a smbuser4
New SMB password:
Retype new SMB password:
Added user smbuser4.
[root@www /]# systemctl restart nmb.service smb.service

      (5)、我们现在尝试在192.168.10.14上通过smbuser3用户访问,可以看到能够上传了

[root@node2 ~]# smbclient -L 192.168.10.13 -U smbuser3
Enter SAMBAsmbuser3's password: 
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    myfiles         Disk      A test shared dir
    IPC$            IPC       IPC Service (Samba Server Version 4.6.2)
    smbuser3        Disk      Home Directories
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]

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

    Workgroup            Master
    ---------            -------
    MYGROUP              WWW
[root@node2 ~]# smbclient //192.168.10.13/myfiles -U smbuser3
Enter SAMBAsmbuser3's password: 
Domain=[WWW] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: > lcd /etc/
smb: > put group
putting file group as group (110.9 kb/s) (average 110.9 kb/s)
smb: >

  3、我们通过mount.cifs进行挂载

    a、我们将其挂载至/mnt目录下

[root@node2 ~]# mount -t cifs //192.168.10.13/myfiles /mnt -o username=smbuser3,password=123456
[root@node2 ~]# mount |grep 192.168.10.13
//192.168.10.13/myfiles on /mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=smbuser3,domain=WWW,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.10.13,unix,posixpaths,serverino,mapp
osix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)
[root@node2 ~]# cd /mnt/
[root@node2 mnt]# ls
fstab  group
[root@node2 mnt]# cp /etc/issue ./
[root@node2 mnt]# ll
total 12
-rwxr--r-- 1 5022 5023 465 May 28 16:49 fstab
-rwxr--r-- 1 5024 5026 795 May 28 17:14 group
-rw-r--r-- 1 5024 5026  23 May 28 17:22 issue
[root@node2 mnt]#

    b、我们可以看到,我们在本地通过root复制过去的文件的属主属组id为192.168.10.13上的smbuser3的相应的属主属组id。这是因为我们挂载时是通过smbuser3用户登陆的,我们创建文件时默认是将相应的用户映射至smbuser3上的。

      (1)、我们查看192.168.10.13上smbuser3相应的id对比上面就可以看出来

[root@www /]# id smbuser3
uid=5024(smbuser3) gid=5026(smbuser3) 组=5026(smbuser3),5025(smbgrp)

      (2)、如果我们使用非root用户,如果这个用户对当前目录没有写权限也是不能创建相应的文件的。

二、博客作业

原文地址:https://www.cnblogs.com/Presley-lpc/p/12982641.html