【操纵系统间文件共享_Samba】一、Samba 技能基础与焦点功能剖析​ ...

打印 上一主题 下一主题

主题 1507|帖子 1507|积分 4521

在当今多系统混合的网络环境中,实现差别操纵系统间的文件和资源共享至关重要。Samba 作为一款强大的开源软件,在 Linux 和 UNIX 系统上实现了 SMB(Server Message Block)协议,使得 Windows、Linux 和 macOS 等系统可以或许无缝地进行文件和打印机共享。

一、Samba 概述​

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的免费软件,它诞生于 1991 年,最初由澳大利亚的 Andrew Tridgell 开辟。SMB 协议是一种用于在计算机网络中共享文件、打印机和其他资源的通信协议,广泛应用于 Windows 操纵系统。Samba 的出现,打破了 Windows 与 Linux/UNIX 系统之间的隔阂,使得差别操纵系统的用户可以或许在同一网络环境中方便地共享资源。​
Samba 的主要功能包括文件共享、打印服务、身份验证和访问控制等。通过 Samba,用户可以在 Windows 系统中访问 Linux 服务器上的文件和目录,也可以在 Linux 系统中访问 Windows 共享的资源。别的,Samba 还支持跨平台的打印服务,使得多台计算机可以共享同一台打印机,无需安装额外的驱动步伐。
二、Samba 焦点进程剖析​

Samba 主要由两个焦点进程组成:smbd和nmbd,别的另有winbindd等辅助组件,它们协同工作,实现 Samba 的各项功能。​
2.1 smbd 进程​

smbd进程是 Samba 的焦点进程之一,主要负责处理惩罚来自客户端的网络哀求,包括用户身份认证、文件和目录的访问控制等。当客户端向 Samba 服务器发起毗连哀求时,smbd进程会验证用户的身份信息,并根据配置文件中设置的权限,决定用户是否有权访问哀求的资源。​
例如,当用户在 Windows 系统中访问 Samba 服务器上的共享目录时,smbd进程会检查用户输入的用户名和暗码是否与 Samba 服务器上的用户信息匹配。如果匹配乐成,smbd进程会根据共享目录的权限设置,为用户分配相应的访问权限,如只读、读写等。​
在 CentOS 7 中,可以使用以下下令查看smbd进程的运行状态:
  1. systemctl status smb
复制代码
执行上述下令后,如果smbd进程正常运行,会表现雷同以下信息:
  1. ● smb.service - Samba SMB/CIFS file and print server
  2.    Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
  3.    Active: active (running) since Mon 2024-01-15 10:00:00 CST; 1h 30min ago
  4. Main PID: 1234 (smbd)
  5.    Status: "smbd: ready to serve connections..."
  6.    CGroup: /system.slice/smb.service
  7.            ├─1234 /usr/sbin/smbd -D -s /etc/samba/smb.conf --foreground
  8.            ├─1235 /usr/sbin/smbd -D -s /etc/samba/smb.conf --foreground
  9.            └─1236 /usr/sbin/smbd -D -s /etc/samba/smb.conf --foreground
复制代码
2.2 nmbd 进程​

nmbd进程主要负责 NetBIOS 名称剖析和广播功能。在局域网中,计算机通常使用 NetBIOS 名称来标识本身,nmbd进程通过监听网络广播,网络并维护网络中计算机的 NetBIOS 名称与 IP 地址的对应关系。当客户端需要访问某个共享资源时,nmbd进程会帮助客户端将 NetBIOS 名称剖析为对应的 IP 地址,从而实现客户端与 Samba 服务器之间的毗连。​
例如,当用户在 Windows 系统的 “网络” 中查找 Samba 服务器时,nmbd进程会将 Samba 服务器的 NetBIOS 名称剖析为其 IP 地址,使得用户可以或许在 “网络” 中看到并访问 Samba 服务器。​
在 CentOS 7 中,可以使用以下下令查看nmbd进程的运行状态:
  1. systemctl status nmb
复制代码
如果nmbd进程正常运行,会表现雷同smbd进程状态的相关信息。
2.3 winbindd 组件​

winbindd组件主要用于与 Windows 域进行身份验证和用户登录。在企业网络环境中,通常会使用 Windows 域来管理用户和计算机。通过配置winbindd,Samba 服务器可以毗连到 Windows 域控制器,检索域用户和组的信息,并使用域的身份验证机制来验证用户的身份。​
例如,当企业员工使用域账户登录 Linux 系统并访问 Samba 服务器上的共享资源时,winbindd组件会将用户的登录哀求转发到 Windows 域控制器进行验证,验证通过后,用户即可访问相应的共享资源。​
在 CentOS 7 中,安装 Samba 时会默认安装winbindd组件,可以通过以下下令启动和管理winbindd服务:
  1. systemctl start winbind  # 启动winbind服务
  2. systemctl enable winbind  # 设置开机自启
  3. systemctl status winbind  # 查看服务状态
复制代码
三、Samba 安装与基础配置​

3.1 安装 Samba​

在 CentOS 7 中,可以使用yum包管理器来安装 Samba。执行以下下令:
  1. yum install samba samba-client samba-common -y
复制代码
上述下令会安装 Samba 服务器、客户端和通用组件。安装完成后,可以使用以下下令检查 Samba 版本:
  1. samba -V
复制代码
3.2 配置文件布局与基础配置​

Samba 的主要配置文件是/etc/samba/smb.conf,该文件包罗了 Samba 服务器的所有配置信息,其布局主要分为全局设置和共享定义两大部分。​
        1、全局设置:全局设置部分用于配置 Samba 服务器的整体行为和参数,如安全模式、工作组名称、日志文件路径等。以下是一个简朴的全局设置示例:
  1. [global]
  2.     workgroup = WORKGROUP
  3.     server string = Samba Server %v
  4.     security = user
  5.     map to guest = bad user
  6.     log file = /var/log/samba/log.%m
  7.     max log size = 50
  8.     syslog = 0
  9.     panic action = /usr/share/samba/panic-action %d
  10.     encrypt passwords = true
  11.     passdb backend = tdbsam
  12.     obey pam restrictions = yes
  13.     pam password change = yes
  14.     passwd program = /usr/bin/passwd %u
  15.     passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  16.     unix password sync = yes
  17.     socket options = TCP_NODELAY IPTOS_LOWDELAY
复制代码
  注释阐明:​
  

  • workgroup:指定 Samba 服务器所在的工作组名称,默认值为WORKGROUP,可根据现实网络环境进行修改。​
  

  • server string:Samba 服务器的形貌信息,%v表现 Samba 版本号。​
  

  • security:设置安全模式,user模式表现用户需要使用用户名和暗码进行身份验证。​
  

  • map to guest:将非法用户映射为来宾用户,bad user表现所有非法用户都将被映射为来宾用户。​
  

  • log file:指定 Samba 日志文件的路径,%m表现客户端的 NetBIOS 名称,每个客户端会生成独立的日志文件。​
  

  • max log size:设置日志文件的最大巨细,单元为 KB,超过此巨细会主动进行日志切割。​
  

  • encrypt passwords:启用暗码加密功能,确保用户暗码在网络传输过程中的安全性。​
  

  • passdb backend:指定用户数据库的后端范例,tdbsam是默认的轻型数据库,适用于小型网络。
          2、共享定义:共享定义部分用于配置具体的共享资源,如共享目录、共享打印机等。以下是一个共享目录的配置示例:
  1. [share]
  2.     comment = Shared Directory
  3.     path = /home/share
  4.     browseable = yes
  5.     writable = yes
  6.     guest ok = no
  7.     read only = no
复制代码
  注释阐明:​
  

  • comment:共享资源的形貌信息,用于在客户端表现共享资源的阐明。​
  

  • path:指定共享资源的现实路径,即服务器上需要共享的目录路径。​
  

  • browseable:设置共享资源是否在网络中可见,yes表现可见,客户端可以在 “网络” 中看到该共享资源。​
  

  • writable:设置共享资源是否可写,yes表现用户可以对共享目录进行写入操纵。​
  

  • guest ok:设置是否答应来宾用户访问共享资源,no表现只有经过身份验证的用户才气访问。​
  

  • read only:设置共享资源是否为只读,no表现用户具有读写权限,与writable参数共同使用。
  3.3 配置文件修改与收效​

在修改smb.conf配置文件后,需要重新加载配置或重启 Samba 服务,使配置收效。可以使用以下下令:
  1. systemctl restart smb  # 重启Samba服务
  2. systemctl restart nmb  # 重启nmbd进程
复制代码
 也可以使用testparm下令检查配置文件是否存在语法错误:
  1. testparm
复制代码
如果配置文件没有错误,会表现雷同以下信息:
  1. Load smb config files from /etc/samba/smb.conf
  2. Loaded services file OK.
  3. Weak crypto is allowed
  4. Server role: ROLE_STANDALONE
复制代码
四、Samba 焦点功能详解

4.1 文件共享功能​

文件共享是 Samba 最焦点的功能之一,通过 Samba,用户可以在差别操纵系统间实现文件的无缝共享。下面以在 CentOS 7 上创建一个共享目录,并在 Windows 系统中访问为例进行具体阐明。​
        1、创建共享目录:在 CentOS 7 系统中,首先创建一个用于共享的目录,例如:
  1. mkdir -p /home/share
  2. echo "This is a shared file" > /home/share/test.txt
  3. chmod -R 777 /home/share  # 设置目录权限为所有人可读写执行
复制代码
        2、配置共享目录:编辑/etc/samba/smb.conf配置文件,在文件末尾添加以下共享定义:
  1. [share]
  2.     comment = Shared Directory
  3.     path = /home/share
  4.     browseable = yes
  5.     writable = yes
  6.     guest ok = no
  7.     read only = no
复制代码
        3、添加 Samba 用户:Samba 使用本身的用户数据库来管理用户,需要将系统用户添加到 Samba 用户数据库中。首先创建一个系统用户(如果已有系统用户可跳过此步骤):
  1. useradd testuser
复制代码
然后将系统用户添加到 Samba 用户数据库,并设置暗码:
  1. smbpasswd -a testuser
复制代码
执行上述下令后,会提示输入 Samba 用户的暗码,输入暗码并确认后,用户即添加乐成。​
        4、在 Windows 系统中访问共享目录:在 Windows 系统中,打开 “文件资源管理器”,在地址栏中输入\\Samba服务器IP地址(例如\\192.168.1.100),按回车键后会弹出身份验证窗口,输入在 Samba 中添加的用户名和暗码,点击 “确定” 即可访问共享目录。此时可以看到共享目录中的test.txt文件,并可以进行读写操纵。
4.2 共享打印服务​

Samba 还支持共享打印服务,使得多台计算机可以共享同一台打印机。在 CentOS 7 中配置共享打印机,需要先安装打印机驱动,并确保打印机可以或许正常工作。​
        1、安装打印机驱动:根据打印机型号,安装相应的驱动步伐。以常见的 HP 打印机为例,可以使用yum安装hplip驱动包:
  1. yum install hplip -y
复制代码
        2、 配置打印机:使用system-config-printer下令打开打印机配置工具,按照向导添加打印机,并进行相关配置。​
        3、配置 Samba 共享打印机:编辑/etc/samba/smb.conf配置文件,在文件末尾添加以下共享定义:
  1. [printers]
  2.     comment = All Printers
  3.     path = /var/spool/samba
  4.     browseable = yes
  5.     guest ok = no
  6.     writable = no
  7.     printable = yes
复制代码
上述配置中,path指定了打印机队列的路径,printable = yes表现该共享资源为打印机,答应打印操纵。​
        4、在 Windows 系统中添加共享打印机:在 Windows 系统中,打开 “控制面板”,选择 “设备和打印机”,点击 “添加打印机”,选择 “添加网络、无线或 Bluetooth 打印机”,系统会主动搜索网络中的共享打印机,找到 Samba 服务器上的共享打印机后,按照提示完成安装。​
4.3 身份验证与访问控制​

Samba 支持多种身份验证机制,包括基于用户、域和 Kerberos 的身份验证。在基础配置中,我们使用的是基于用户的身份验证方式。通过配置文件,可以设置精致的访问权限,确保只有授权用户可以或许访问相应的共享资源。
        1、用户权限设置:在smb.conf配置文件的共享定义部分,可以通过valid users参数指定答应访问共享资源的用户。例如:
  1. [share]
  2.     comment = Shared Directory
  3.     path = /home/share
  4.     browseable = yes
  5.     writable = yes
  6.     guest ok = no
  7.     read only = no    valid users = testuser, anotheruser
复制代码
上述配置表现只有testuser和anotheruser这两个用户可以访问该共享目录。​
        2、组权限设置:除了设置用户权限,还可以设置组权限。首先创建一个用户组,并将用户添加到组中:
  1. groupadd testgroup
  2. usermod -aG testgroup testuser
  3. usermod -aG testgroup anotheruser
复制代码
然后在smb.conf配置文件中,通过valid users参数指定组权限:
  1. [share]
  2.     comment = Shared Directory
  3.     path = /home/share
  4.     browseable = yes
  5.     writable = yes
  6.     guest ok = no
  7.     read only = no    valid users = @testgroup
复制代码
上述配置表现testgroup组中的所有用户都可以访问该共享目录。​
        3、访问控制列表(ACL):Samba 还支持使用访问控制列表(ACL)来进一步细化访问权限。通过 ACL,可以针对差别用户或组设置差别的读、写、执行等权限。在 CentOS 7 中,可以使用setfacl下令来设置 ACL 权限。例如,为testuser用户设置对/home/share目录的只读权限:
  1. setfacl -m u:testuser:r-x /home/share
复制代码
设置完成后,testuser用户只能读取和执行/home/share目录下的文件,无法进行写入操纵。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表