Samba有图形化界面和命令行模式下配置.

 

添加samba用户

简洁版
先添加系统用户

useradd name -s /sbin/nologin

再转入samba用户

smbpasswd -a name

 

17.2. 配置 Samba 服务器

默认的配置文件(/etc/samba/smb.conf)允许用户作为 Samba 共享来查看他们的 Red Hat Linux 主目录。它还把为 Red Hat Linux 配置的打印机作为 Samba 共享打印机来共享。换一句话说,你可以在你的 Red Hat Linux 系统上连接打印机,然后从网络上的 Windows 机器来打印。

17.2.1. 图形化配置

要使用图形化界面来配置 Samba,使用 Samba 服务器配置工具。要使用命令行来配置,请跳到第 17.2.2 节

Samba 服务器配置工具是用来管理 Samba 共享、用户、以及基本服务器设置的图形化界面。它修改 /etc/samba/ 目录中的配置文件。没有使用该程序进行的改变都会被保留。

要使用该程序,你必须在运行 X 窗口系统,具备根特权,并且安装了 redhat-config-samba RPM 软件包。要从桌面启动 Samba 服务器配置工具,点击面板上的「主菜单」 => 「系统设置」 => 「服务器设置」 => 「Samba 服务器」,或在 shell 提示(如 XTerm 或 GNOME 终端)下键入 redhat-config-samba 命令。

图 17-1. Samba 服务器配置工具

注记注记
 

Samba 服务器配置工具不显示允许用户在 Samba 服务器上查看他们自己的主目录的共享打印机或默认文件段。

17.2.1.1. 配置服务器设置

配置 Samba 服务器的第一步是配置服务器的基本设置和几个安全选项。启动了应用程序后,选择 「首选项」 => 「服务器设置」「基本」活页标签如 图 17-2所示。

图 17-2. 配置基本服务器设置

「基本」标签上,指定计算机应在的工作组以及对计算机的简短描述。它们与 smb.conf 中的 workgroupserver string 选项相对应。

图 17-3. 配置安全服务器设置

「安全」标签包含以下选项:

 

  • 「验证模式」 — 它和 security 选项相对应。选择以下验证模式中的一种。

     

    • 「域」 — Samba 服务器依赖于 Windows NT 主要或备份域控制器来校验用户。服务器把用户名和口令传递给控制器,然后等待它们被返回。在「验证服务器」字段中指定主要或备份域控制器的 NetBIOS 名称。

      「加密口令」选项如果被选,它必须被设置为「是」

    • 「服务器」 — Samba 服务器试图通过把用户名和口令组合传递给另一个 Samba 服务器来校验它们。如果它无法校验,服务器会试图使用用户验证模式来校验它们。在「验证服务器」字段中指定另一个 Samba 服务器的 NetBIOS 名称。

    • 「共享」 — Samba 用户不必为每个 Samba 服务器都输入用户名和口令组合。它们在试图连接 Samba 服务器上的指定共享时才会被提示输入用户名和口令。

    • 「用户」 — (默认)Samba 用户必须为每个 Samba 服务器提供一个有效的用户名和口令。如果你想让「Windows 用户名」选项生效,选择这个选项。详情请参阅第 17.2.1.2 节

  • 「加密口令」 — (默认值为「是」)如果用户从 Windows 98、带有服务包的 Windows NT 4.0、或其它最近版本的 Microsoft Windows 中连接,该选项必须被启用。口令在服务器和客户间使用加密格式而非可被截取的纯文本格式传输。它和 encrypted passwords 选项相对应。关于加密 Samba 口令的详情,请参阅第 17.2.3 节

  • 「来宾账号」 — 当用户或来宾用户要登录入 Samba 服务器时,他们必须被映射到服务器上的有效用户。选择系统上的现存用户名之一作为来宾 Samba 账号。当用户使用来宾账号登录入 Samba 服务器,他们拥有和这个用户相同的特权。该选项和 guest account 选项相对应。

点击了「确定」后,所做改变会被写入配置文件,守护进程会被重新启动;因此改变会立即生效。

17.2.1.2. 管理 Samba 用户

Samba 服务器配置工具要求在添加 Samba 用户之前,在充当 Samba 服务器的 Red Hat Linux 系统上必须存在一个活跃的现存用户账号。Samba 用户和这个现存的 Red Hat Linux 用户账号相关联。

图 17-4. 管理 Samba 用户

要添加 Samba 用户,选择「首选项」 => 「Samba 用户」,然后点击「添加用户」按钮。在 「创建新 Samba 用户」窗口中的本地系统上的现存用户列表中选择「Unix 用户名」

如果用户在 Windows 机器上有一个不同的用户名,并将从 Windows 机器上登录入 Samba 服务器,请在「Windows 用户名」字段中指定 Windows 用户名。「服务器设置」首选项的「安全」活页上的「验证模式」 必须被设置为「用户」才能是这个选项生效。

你还需要为 Samba 用户配置一个「Samba 口令」,并再键入一次来确认这个口令。即便你选择了为 Samba 使用加密口令,仍建议你为所有用户设置的 Samba 口令不同于他们的 Red Hat Linux 系统口令。

要编辑某个现存用户,从列表中选择它,然后点击「编辑用户」。要删除某个现存的 Samba 用户,选择这个用户,然后点击「删除用户」按钮。删除 Samba 用户不会删除相关的 Red Hat Linux 用户账号。

点击了「确定」按钮后,用户就会被立即修改。

17.2.1.3. 添加共享

图 17-5. 添加共享

要添加共享,点击「添加」按钮。「基本」活页标签配置以下选项:

 

  • 「目录」 — 通过 Samba 共享的目录。这个目录必须存在。

  • 「描述」 — 对共享的简短描述。

  • 「基本权限」 — 用户应该只能够读取共享目录中的文件还是应该能够读写共享目录中的文件。

「访问」活页标签上,选择是否要只允许指定的用户来访问共享还是允许所有 Samba 用户来访问共享。如果你选择了要允许指定用户访问,从可用的 Samba 用户列表中选择这些用户。

点击了「确定」按钮后,共享就会立即被添加。

17.2.2. 命令行配置

Samba 使用 /etc/samba/smb.conf 作为它的配置文件。如果你改变了这个配置文件,这个改变直到你使用 service smb restart 命令重启 Samba 守护进程后才会生效。

要指定 Windows 工作组和对它的简短描述,编辑 smb.conf 文件中的以下几行:

workgroup = WORKGROUPNAME
server string = BRIEF COMMENT ABOUT SERVER

WORKGROUPNAME 换成你的机器所属的 Windows 工作组名。BRIEF COMMENT ABOUT SERVER 是可选的,它被用作关于 Samba 系统的 Windows 注释。

要在你的 Linux 系统上创建 Samba 共享目录,在 smb.conf 文件中添加以下几行(根据你和你的系统需要修改了该文件之后):

[sharename]
comment = Insert a comment here
path = /home/share/
valid users = tfox carole
public = no
writable = yes
printable = no
create mask = 0765

上面的例子允许用户 tfox 和 carole 从 Samba 客户中读写 Samba 服务器上的目录 /home/share

17.2.3. 加密口令

在 Red Hat Linux 9 中,加密口令被默认启用,因为它更安全。如果加密口令没有被使用,纯文本口令就会被使用,它能够被别人使用 网络分组嗅探器来截取。建议你使用加密口令。

Microsoft SMB 协议最初使用纯文本口令。然而,带有服务包 3 或更高的 Windows NT 4.0、Windows 98、Windows 2000、Windows ME、以及 Windows XP 要求加密的 Samba 口令。要在 Red Hat Linux 系统和运行以上 Windows 操作系统的系统间使用 Samba,你可以编辑 Windows 注册器来使用纯文本口令过配置你的 Linux 系统的 Samba 来使用加密口令。如果你选择要修改你的注册器,你必须为你的全部 Windows 机器这么做 — 这很冒险,有可能导致进一步的冲突。为了更高的安全性,推荐你使用加密口令。

要在你的 Red Hat Linux 系统上配置 Samba 使用加密口令,遵循以下步骤:

 

  1. 为 Samba 创建一个单独的口令文件。要根据你的现存 /etc/passwd 文件来创建,在 shell 提示下键入以下命令:

    cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    如果系统使用 NIS,键入以下命令:

    ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    mksmbpasswd.sh 脚本和 samba 软件包一起被安装在你的 /usr/bin 目录上。

  2. 改变 Samba 口令文件的权限许可,因此只有根用户才有读写权限:

    chmod 600 /etc/samba/smbpasswd
  3. 这个脚本不会把用户口令复制到新文件,Samba 用户账号在没有设置口令之前不会被激活。为了更高的安全性,建议你把用户的 Samba 口令设置为不同于用户的 Red Hat Linux 口令的口令。要设置每个 Samba 用户的口令,使用以下命令(把 username 替换为每个用户的用户名):

    smbpasswd username 
  4. 加密口令必须在 Samba 配置文件中被启用。在 smb.conf 文件中,请确定以下行没有被注释掉:

    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
  5. 在 shell 提示下键入 service smb restart 来确定 smb 服务被启动。

  6. 如果你想让 smb 服务被自动启动,使用 ntsysvchkconfig、或 服务配置工具来在运行时间启用它。详情请参阅第14章

窍门窍门
 

阅读 /usr/share/doc/samba-<version>/docs/htmldocs/ENCRYPTION.html 来进一步了解有关加密口令的信息。(把 <version> 替换为你安装了的 Samba 版本号码)。

当使用了 passwd 命令后,pam_smbpass PAM 模块能够被用来同步用户的 Samba 口令和他们的系统口令。如果用户启用了 passwd 命令,他用来登录到 Red Hat Linux 系统的口令以及他要连接 Samba 共享所必须提供的口令就会被改变。

要启动这个功能,把以下行添加到 /etc/pam.d/system-auth 的启动 pam_cracklib.so 之下:

password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass

17.2.4. 启动和停止服务器

在通过 Samba 共享目录的服务器上必须运行 smb 服务。

使用以下命令来查看 Samba 守护进程的状态:

/sbin/service smb status

使用以下命令来启动守护进程:

/sbin/service smb start

使用以下命令来停止守护进程:

/sbin/service smb stop

要在引导时启动 smb 服务,使用以下命令:

/sbin/chkconfig --level 345 smb on

你还可以使用 chkconfigntsysv服务配置工具来配置要在引导时启动的服务。详情请参阅第14章

 

其它参考:

samba

samba的作用是提供Unix/Linux与Windows之间的通讯,并使她们之间实现文件/打印机/设备共享.在Windows网络中,设置好samba的Linux机器可以做服务器也可以做客户端.

安装以下几个rpm包:
samba
samba-common
samba-client
samba-swat
redhat-config-samba
其中samba-swat是以web页面方式配置samba的前端,redhat-config-samba是Xwindow下的图形化配置程式,她们的作用都是设定/etc/samba/smb.conf这个配置文件,此文件也可以手动编辑.

chkconfig --level 35 smb on
运行级3,5下,samba服务开机自动加载

service smb start
开启samba服务.参数包括start/restart/stop/reload等

samba的一些重要组成文件:
/usr/sbin/smbd SMB服务守护程式
/usr/sbin/nmbd NetBIOS服务守护程式
/etc/samba/smb.conf samba主配置文件
/usr/bin/smbclient 连接到SMB共享的客户端程式
/usr/bin/testparm 检验smb.conf有效性的脚本
/usr/bin/smbprint 此脚本可以将打印任务送至SMB主机的打印机
/usr/bin/smbstatus 列出本地主机的SMB连接
smbfs smbfs文件系统,可以将共享文件夹用mount命令挂载至本地

samba主配置文件/etc/samba/smb.conf中的主要参数设定:
该文件中#为信息注释符 ;为参数注释符

#======================= Global Settings =====================================
[global]

workgroup = MYGROUP
工作组名称

server string = Samba Server
主机说明

netbios name = SMBServer
在网络中的netbios名称,如果没有设定,预设值为HOSTNAME

hosts allow = 192.168.1. 192.168.2. 127.
设定哪些ip地址可访问主机

security = user
samba的安全级别,从低到高有四级:share/user/server/domain
share: 任何用户都可以访问服务器上的资源,无须帐号
user: 需要用户名和密码进行验证
server: 帐号验证交给另外一个服务器,如交给另一台NT服务器.
如果递交失败,就退到user安全级.
domain: 这个安全级别要求网络上存在一台Windows的主域控制器,samba将帐号递交
给该服务器验证.
    user/server/domain要求用户在本地linux机器上也有系统帐户,否则不能访问.
这里只简单介绍一下share/user的用法,详悉设定请参看附录

encrypt passwords = yes
使用加密密码

smb passwd file = /etc/samba/smbpasswd
存放samba帐户密码的文件

local master = yes
samba服务器可以成为本地主浏览器

os level = 33
samba服务器的管理等级

domain master = yes
该服务器成为域浏览器

preferred master = yes
该服务器成为工作组中的首要主浏览器

#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用户家目录的设置

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
打印机设定

[do*****ent]
comment = daweicheng's do*****ent
path = /tmp/do*****ent
read only = yes
public = yes

[samba user guest]
comment = guest
path = /tmp/samba
read only = no
guest account = guest


简单介绍一下这里的几个参数:

comment=xxx
共享注释,即共享时对方主机能够看到的文件夹名称

path=/xxx/.../xxx/
共享的目录

read only= yes
只读属性设定

public = yes
公开属性,任何人可以看见该资源,无须帐号

guest account = xxx
访问者的帐户名

这里的参数很容易理解,所以不一一列举了,详细请看附录

如果你希望任何人都可访问共享资源,需要将Global Settings的安全级设定为:
security = share
共享目录参数需要:
public = yes
如果希望某些目录只有特定的用户访问,则要将Global Settings的安全级应设定为:
security = user
共享目录参数需要:
guest account = xxx
这个xxx用户(下例中是NewUser)是用useradd和smbpasswd创建的:

添加samba用户:
useradd NewUser
设定NewUser的samba密码:
smbpasswd -a NewUser
使NewUser可以使用samba服务:
smbpasswd -e NewUser

testparm可以验证/etc/samba/smb.conf的有效性,回车后会显示samba的参数设定

设定无误后,重启smb服务,并打开iptables中的tcp 139端口:
在/etc/sysconfig/iptables中加入:

#smb(samba)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT

(加入的位置在REJECT规则之前)
然后service iptables restart
重启iptables服务

查看其他主机的共享资源:
smbclient -L WindowsHostName
此处WindowsHostName就是对方的windows主机名

smbclient //WindowsHostName/ShareName
可以访问对方主机上的ShareName共享文件夹
也可以是:
smbclient //xxx.xxx.xxx.xxx/D$
xxx.xxx.xxx.xxx表示对方的ip,D$是对方主机D盘的默认共享名称
如果访问的资源需要用户名和密码,可以加入-U参数,如:
smbclient //xxx.xxx.xxx.xxx/D$ -U UserName
然后按提示输入密码,登录后会得到一个提示符,有些类似于命令行方式的ftp登录.

挂载共享驱动器:
可以用smbmount或者mount命令
smbmount的例子:
smbmount //WindowsHostName/ShareName /mnt
这样就将ShareName下的内容挂载在/mnt下了
也可以用mount命令,例子:
mount -t smbfs -o username=xxx //xxx.xxx.xxx.xxx/D$ /mnt/
如果不正确显示中文,可以在-o参数后加入codepage=936,iocharset=cp936
即:
mount -t smbfs -o username=xxx,codepage=936,iocharset=cp936 //xxx.xxx.xxx.xxx/D$ /mnt/
卸载共享目录的命令是umount

在windows中访问samba服务器,可以用网上邻居
或者在"运行"中直接输入xxx.xxx.xxx.xxx即可

配置samba也可用redhat-config-samba或SWAT
使用SWAT需要先设置一下:
将/etc/xinetd.d/swat中的disable = yes设定为disable = no
service xinetd restart
重启xinetd服务
/sbin/chkconfig swat --level 35 on
在运行级3,5下让swat服务开机自动加载
最后,执行chkconfig --list | grep swat
swat : on表示swat服务已经开启了
在web浏览器中输入http://localhost:901
以root身份进入配置界面,就可以对smb.conf进行设置了.

Logo

更多推荐