从 Windows 访问 Linux 共享
要从 Windows 访问 Linux Samba 服务器上的共享,请打开我的电脑或者资源管理器并按以下格式输入 Samba 服务器的主机名和共享名:
\servername\sharename
如果输入 \servername ,Windows 将显示 Linux 系统正在共享的目录。
我们还可以使用相同的语法将网络驱动器映射到共享名称。
smbusers File
对于 Windows 用户访问 Linux 系统上的 Samba 共享,用户必须提供 Windows 用户名和 Samba 密码。
Windows 用户名必须与 Linux 用户名相同或者必须映射到 Linux 用户名。
Samba 将这些用户名映射存储在 /etc/samba/smbusers 文件中。
在 Linux 和 Windows 上具有相同用户名的用户不需要此文件中的条目,但他们仍然需要 Samba 密码。
/etc/samba/smbusers 文件有两个默认条目:
root = administrator admin nobody = guest pcguest smbguest
第一个条目将 Linux 根用户映射到 Windows 中的管理员和管理员用户。
第二个条目将 Linux 用户nobody 映射到三个Windows 用户名guest、pcguest、smbguest。
要将 john 的 Windows 用户名映射到 user01 的 Linux 用户名,请将以下条目添加到 /etc/samba/smbusers:
# vi /etc/samba/smbusers user01 = john
Samba 使用 Samba 密码而不是 Linux 密码来验证用户。
使用以下命令为 user01 用户添加密码:
# smbpasswd –a user01 New SMB password: Retype new SMB password: Added user oracle.
从 Linux 访问 Windows 共享
有 2 个实用程序可以查询 Samba 服务器:
- findsmb
- smbtree
使用 findsmb 命令查询 Samba 服务器的子网。
该命令显示找到的每个服务器的 IP 地址、NetBIOS 名称、工作组、操作系统和版本。
我们还可以使用 smbtree 命令,它是一个基于文本的 SMB 网络浏览器。
它显示包含所有已知域、这些域中的服务器以及服务器上的共享的层次结构图。
GNOME 和 KDE 桌面提供基于浏览器的文件管理器来查看网络上的 Windows 共享。
在文件管理器的位置列中输入 smb: 以浏览共享。
使用 smbclient 实用程序从命令行连接到 Windows 共享。
格式如下:
smbclient //[servername]/[sharename] [-U [username]]
成功登录后将显示 smb:> 提示符。
键入 help 以显示命令列表。
键入 exit 退出 smbclient。
要挂载 Samba 共享,请安装 cifs-utils 包:
# yum install cifs-utils
使用以下格式的 mount.cifs 命令挂载 Samba 共享:
# mount.cifs //[servername]/[sharename] /mount-point -o username=[username],password=[password]
Samba 服务器类型
服务器类型在 /etc/samba/smb.conf 文件的 [global] 部分配置。
独立服务器可以是工作组服务器或者工作组的成员。
域成员服务器登录到域控制器并受域的安全规则约束。
Samba 服务器可以是 Windows NT 域中的域控制器,但不能是 Active Directory 域中的域控制器。
Samba 服务器配置
Samba 的主要配置文件是 /etc/samba/smb.conf 。
此配置文件分为多个部分,每个部分都以方括号括起来的文本开头。
除了 [global] 部分,每个部分都描述了一个共享资源,称为“共享”。
典型的部分是:
部分 | 说明 |
---|---|
[global] | 定义全局参数 |
[homes] | 在home目录中定义的共享 |
[printers] | 定义打印机 |
[share name] | 定义共享 |
该部分中的参数定义共享属性。
假设正确配置了全局参数,以下示例定义了一个共享,该共享授予任何 Windows 用户对本地 /tmp 目录的读写权限:
# vi /etc/samba/smb.conf [tmp] comment = Insert a comment here path = /tmp writable = yes guest ok = yes
有关可以在配置文件中设置的所有参数的说明,请参阅 smb.conf 手册页。
# man smb.conf
有全局参数、安全参数、日志参数、浏览器参数、通讯参数、共享参数。
还有几个图形用户界面来配置和管理 Samba。
这些列表可以在 http://www.samba.org/samba/GUI/ 上找到。
Samba 守护进程和服务
samba 服务器包包括以下守护进程和相关服务:
- smbd :服务器守护进程,为 Windows 客户端提供文件共享和打印服务。它还负责通过 SMB 协议进行用户认证、资源锁定和数据共享。
- nmbd :NetBIOS 名称服务器守护进程响应由基于 Windows 的系统中的 SMB/CIFS 产生的名称服务请求。它还在 Windows 网上邻居视图中提供浏览支持。
这些守护进程由它们的关联服务 smb 和 nmb 控制,例如:
# systemctl start smb # systemctl start nmb
samba-winbind 包包括 winbindd 守护进程和相关服务:
- winbindd :解析运行 Windows 的服务器上的用户和组信息,并使 Linux 可以理解这些信息。
这个守护进程由 winbind 服务控制:
# systemctl start winbind
[homes] 共享
Samba 提供此共享使用户可以轻松地与 Windows 系统共享其 Linux 主目录。
下面是一个例子:
# vi /etc/samba/smb.conf [homes] comment = Insert a comment here browsable = no writable = yes
这些设置可防止所有者以外的用户浏览主目录,同时允许登录所有者完全访问。
启动 Samba 服务器
要启动 Samba 服务器,请执行如下所示的命令。
# systemctl start smb
对 /etc/samba/smb.conf 文件进行配置更改时,发出重新启动或者重新加载:
# systemctl restart smb # systemctl reload smb
reload 参数不会停止和启动 smb 服务;它只重新加载配置文件。
使用 systemctl 命令将服务配置为在引导时启动。
例子:
# systemctl enable smb
什么是Samba?
Samba 是服务器消息块 (SMB) 协议的开源实现。
它允许 Linux 作为服务器和客户端与 Windows 操作系统一起工作。
Samba 与 Windows 系统共享 Linux 文件和打印机,还允许 Linux 用户访问 Windows 系统上的文件。
Samba 使用 NetBIOS over TCP/IP (NetBT) 协议,不需要 NetBEUI(Microsoft Raw NetBIOS 框架)协议。
大多数 Linux 发行版都包含几个 Samba 包:
- samba : 提供一个 SMB/Common Internet File System (CIFS) 服务器,可用于为 SMB/CIFS 客户端提供网络服务
- samba-client :提供一些 SMB/CIFS 客户端来补充 Linux 中内置的 SMB/CIFS 文件系统。这些客户端允许访问 SMB/CIFS 共享和打印到 SMB/CIFS 打印机。
- samba-common :提供服务器和客户端 Samba 包所需的文件
- samba-winbind :提供 winbind 守护进程和客户端工具。 winbind 支持 Windows 域中的 Linux 成员身份以及 Windows 用户和组帐户的使用
- samba-winbind-clients :提供与 winbind 通信所需的网络安全服务 (NSS) 库和可插拔身份验证模块 (PAM)
使用“yum install [package_name]”来安装软件包。
# yum install [package_name]