Linux-Samba文件共享服务

简介: Linux-Samba文件共享服务

了解samba:

       Samba是著名的开源软件项目之一,它在Linux/UNIX操作系统中实现了微软公司的SMB/CIFS网络协议,从而使平台的文件共享变得更加容易,选用Samba可以很好地解决不同操作系统之间的文件互访问题。

一,Samba软件的组成

1.Samba软件包的构成:

   Samba大部分软件包已经在CentOS系统中安装好了,用户可以通过以下操作查询系统中samba相关软件包的安装情况。

[root@localhost ~]# rpm -qa | grep "^samba"
samba-common-4.4.4-9.el7.noarch
samba-common-libs-4.4.4-9.el7.x86_64
samba-libs-4.4.4-9.el7.x86_64
samba-client-libs-4.4.4-9.el7.x86_64
samba-common-tools-4.4.4-9.el7.x86_64
samba-4.4.4-9.el7.x86_64

2.Samba服务的程序组件

Samba服务器提供smbd,nmbd两个程序,分别完成不同的功能。其中,smbd负责为客户端提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便windows网络中的主机提供查询服务。

       安装完samba软件包后,管理员可以通过systemctl工具来控制samba服务器的启动,中止,开机自启。

[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl start nmb
[root@localhost ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@localhost ~]# systemctl enable nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

二,主配置文件smb.conf

1.smb.conf配置文件

       Samba服务的配置文件位于/etc/samba/目录中,其中smb.conf是主配置文件。

[root@localhost ~]# grep -v "#" /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 = root
        create mask = 0664
        directory mask = 0775

在smb.conf文件中存在三个特殊的配置段。

[global]全局设置:这部分配置项的内容对整个Samba服务器都有效。

[homes]宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件夹中。

[printers]打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置。image.png 2.testparm工具

       Samba服务器提供了一个配置文件检查工具——testparm工具可以对smb.conf配置文件的正确性进行检查,如果发现错误将会进行提醒。

[root@localhost ~]# 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 "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
        workgroup = SAMBA
        printcap name = cups
        security = USER
        idmap config * : backend = tdb
        cups options = raw

默认安装的主配置文件中内容较少,关于smb.conf文件中的更多配置项,可以执行“man smb.cnf”命令查阅帮助或参考“/etc/samba/smb.conf.example”。

三,构建文件共享服务器

一,需要用户验证的共享

    1.建立Samba用户数据库 :执行pdbedit -a -u vina命令可以添加一个名为vina的Samba共享用户,其中的-a选项表示添加,-u选项用于指定用户名

1. [root@localhost ~]# useradd vina
2. [root@localhost ~]# pdbedit -a -u vina

执行pdbedit -L 命令可以列出所有的Samba共享用户,结合-v选项可以输出更详细的内容。

1. [root@localhost ~]# pdbedit -L
2. vina:1000:

当指定的Samba用户不在使用时,结合-x选项并指定samba用户名称,删除指定的samba账号。

[root@localhost ~]# pdbedit -x -u vina
[root@localhost ~]# pdbedit -L vina
Username not found!

2.设置用户访问权限

       创建共享用户vanko,hunter,确认共享目录:

[root@localhost ~]# useradd vanko    #创建系统用户
[root@localhost ~]# useradd hunter
[root@localhost ~]# pdbedit -a -u vanko    #创建Samba共享用户
[root@localhost ~]# pdbedit -a -u hunter
[root@localhost ~]# mkdir /opt/mytools    #新建本地测试目录
[root@localhost ~]# touch /opt/mytools/test.txt    #新建测试文件

修改smb.conf配置文件,添加名为tools的共享目录配置段:

[root@localhost ~]# vi /etc/samba/smb.conf
[tools]
        comment = you can get software tools from here
        path = /opt/mytools
        read only = yes
        valid users = vanko,hunter
        write list = hunter

 重载加载smb.conf文件中的配置,或重启smb服务器:

1. [root@localhost ~]# systemctl reload smb
2.

四,用户映射及访问地址限制

        进一步提供Samba共享服务的安全性,除了可以对指定的共享目录设置用户授权以外,还可以采取用户映射,访问地址限制等措施。

1.共享账号映射(别名)

1. [root@localhost ~]# vi /etc/samba/smbusers
2. vanko = sunboy player

  设置完成共享用户的别名以后,若要正常启用账号映射功能,需要修改主配置文件/etc/samba/smb.conf,添加全局配置项“ username map = /etc/samba/smbusers ”,然后重新加载配置即可生效。

[root@localhost ~]# vi /etc/samba/smb.conf
[global]
        username map = /etc/smbusers
.......
[root@localhost ~]# systemctl reload smb

2.访问地址限制

 [root@localhost ~]# vi /etc/samba/smb.conf
[global]
       hosts allow = 192.168.2.
........
[root@localhost ~]# systemctl reload smb

注:当通过共享目录上传文件,创建子目录的默认权限,分别使用配置项directory mask和create mask进行指定。

[tools]
        .........
        directory mask = 0755    #上传的目录的默认权限为755
        create mask - 0644        #文件默认权限为644

五,Linux系统如何访问共享文件夹

       1.安装samba客户端工具

[root@localhost ~]# yum -y install samba-client        #安装samba客户端

  2.查询目标主机的共享资源列表

[root@localhost ~]# smbclient -L 192.168.2.1 -U hunter
Enter hunter's password:
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        IPC$            IPC       IPC Service (Samba 4.4.4)
        tools           Disk      you can get software tools from here
        hunter          Disk      Home Directories
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
        Server               Comment
        ---------            -------
        LOCALHOST            Samba 4.4.4
        Workgroup            Master
        ---------            -------
        SAMBA                LOCALHOST

  3.登录并访问共享文件夹

       选项:-U:指定经过授权的共享用户名称(或映射的别名),并输入正常密码。需要通过“ //主机名/共享名 ”的形式指定共享文件夹的位置。

[root@localhost ~]# smbclient -U sunboy //192.168.2.1/tools -U hunter
Enter hunter's password:
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \>

  在smb:\>环境中,使用特定的命令可以对共享目录进行列表,上传,下载,例:ls用于列表目录,pwd命令查看当前路径,get命令和mget命令用于下载文件,put命令和mput命令用于上传文件。?和 help命令在线帮助。

六,使用mount挂载共享文件夹

1.挂载samba服务器中的tools共享目录挂载到本地

[root@localhost ~]# mount -o username=hunter //192.168.2.1/tools /smbdir
mount: //192.168.2.1/tools 写保护,将以只读方式挂载
目录
相关文章
|
1天前
|
算法 Linux Windows
Linux|如何查找和删除重复文件
Linux|如何查找和删除重复文件
8 1
|
1天前
|
Linux
linux不同场景下修改文件名的五种方法
linux不同场景下修改文件名的五种方法
6 1
|
3天前
|
存储 Linux 程序员
tar命令详解:linux文件打包神器
tar命令详解:linux文件打包神器
|
5天前
|
存储 Linux 数据安全/隐私保护
linux解压zip文件命令
linux解压zip文件命令
|
1天前
|
Linux 数据处理 vr&ar
Linux下的ranlib命令:静态库文件的索引生成器
`ranlib`是Linux用于加速静态库(.a文件)链接的工具,它生成索引以优化查找目标文件。当链接器处理静态库时,索引能快速定位目标,提升效率。命令如`ranlib libexample.a`创建索引。注意,新工具链可能已自动包含此功能,使用前应确保库文件未含索引,避免重复生成。
|
1天前
|
关系型数据库 MySQL Shell
深入了解Linux /etc/passwd文件
深入了解Linux /etc/passwd文件
7 0
|
1天前
|
存储 Linux
深入了解Linux设备管理:字符、块和网络设备文件
深入了解Linux设备管理:字符、块和网络设备文件
9 0
|
2天前
|
监控 网络协议 Linux
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储
|
2天前
|
存储 Linux 程序员
Linux解压Zip文件命令详解
Linux解压Zip文件命令详解
|
3天前
|
监控 Linux
Linux修改fs.inotify.max_user_watches(“外部文件更改同步可能很慢”和“当前的 inotify(7) 监视限制太低”)
Linux修改fs.inotify.max_user_watches(“外部文件更改同步可能很慢”和“当前的 inotify(7) 监视限制太低”)
6 0