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 写保护,将以只读方式挂载
目录
相关文章
|
5天前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
53 34
|
23天前
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
262 7
|
24天前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
107 19
|
2月前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
161 6
|
2月前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
278 14
|
2月前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
432 6
|
2月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
91 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
54 5
|
9月前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
76 2
|
安全 Ubuntu 网络协议
Linux中的服务管理
Linux系统可以同时运行数百个任务。其中大多数都属于操作系统环境的组成部分,不过可能也会有那么一两个你不需要的**守护进程**。有3种可用于启动守护进程和服务的工具,Linux发行版支持其中任意一种。传统的SysV系统使用/etc/init.d中的脚本。较新的systemd守护进程除了使用/etc/init.d之外,还用到了systemctl调用。还有些发行版使用的是upstart,配置脚本保存在/etc/init中。systemd如今已经取代了SysVinit系统。upstart是由Ubuntu开发并采用的,但是在14.04版中,已经改成了systemd。
181 3