当前位置:首页 >> 信息与通信 >>

linux


Ubuntu 下 Samba 服务器的搭建, 在 Linux 下可以通过 Samba 客户端访问局域网内的 Windows 主机,也可以通过 Samba 服务器给 Windows 主机提供文件、打印机等服 务。 Samba 服务在 Ubuntu 服务器版本中默认并没有安装。 1.Samba 软件包的安装 在 Ubuntu 的终端中输入一下命令: #sudo apt-get install samba #sudo apt-get install smbclient 2.Samba 服务器的启动与关闭 启动 Samba 服务器只需执行如下命令: #sudo /etc/init.d/samba start 或者: #sudo service smbd start 启动 Samba 服务器后,可以使用 ps 命令查看进程: #ps -aux 可以看到 Samba 服务会同时启动两个服务,其中 smbd 主要用来管理共享出来的目录,nmbd 主要用来解析 NetBIOS 名。在 Windows 系统中,主机可以被加入一个组中,这样每个主机 都必须有一个名字,这个名字是用于在网上被标志的名,并非机器的主机名,将其称为 NetBIOS 名。其中 nmbd 进程是随着 smbd 进程启动而启动。 关闭 Samba 服务,使用命令: #/etc/init.d/samba stop 或者: #smbcontrol smbd shutdown 或者: #sudo service smbd stop

-----------此命令只关闭 smbd

重新启动 Samba 服务器: #/etc/init.d/samba restart 或者: #sudo service smbd restart 3.配置 3.配置 Samba 服务 Samba 服务器主要配置文件为/etc/samba/smb.conf,并且可以将 NetBIOS 名与主机的对应 关系写在/etc/samba/lmhosts 文件中。 需要注意的是在 smb.conf 文件中“#”和“; ”都是注释 其中配置文件 smb.conf 主要可以分为两部分:前一部分为 Global Settings(全局部 分),全局部分能够对主机的相关信息进行配置,而且能够配置访问时是否需要密码。常用 选项有: workgroup = WORKGROUP-NAME ##############设置加入工作组名称 server string = %h server(Samba,Ubuntu) ##############此选项是可选的,这个选项 是显示在 Windows 上的信息,可以自定义,其中%h 为 Samba 配置文件中的变量,代表了

主机名,即使用 hostname 命令得到的主机名。 %S = 当前服务名(如果有的话) %P = 当前服务的根目录(如果有的话) %u = 当前服务的用户名(如果有的话) %g = 当前用户说在的主工作组 %U = 当前对话的用户名 %G = 当前对话的用户的主工作组 %H = 当前服务的用户的 Home 目录 %v = Samba 服务的版本号。 %h = 运行 Samba 服务机器的主机名 %m = 客户机的 NETBIOS 名称 %L = 服务器的 NETBIOS 名称 %M = 客户机的主机名 %N = NIS 服务器名 %p = NIS 服务的 Home 目录 %R = 说采用的协议等级(值可以是 CORE, COREPLUS, LANMAN1, LANMAN2,NT1) %d = 当前服务进程的 ID %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95) %I = 客户机的 IP %T = 当前日期和时间 host allow = 192.168.1. 192.168.2. 127. 127.0.0.1##############此项对安全性非常 重要。它严格限制了可访问 Samba 的范围。 (网络注意后面加”.”号,各个项目间用空 格隔开,记得把本机也加进去)默认是允许所有 IP 访问…… printcap name = /etc/printcap ############设置打印机配置文件路径 load printers = yes #########是否将打印机共享 printing = cups #################打印机的类型。若用的打印机的是 linux 标准类型的 则不要更改 guest account = pcguest ##################如果想让用户`pcguest`以匿名用户身份登 陆……;就去掉前面的注释。并确保在/etc/passwd 中有此 用户。这里的 pcguest 可以根 据需要改成用户自己设置的本地用户。 login file = /var/log/samba/%m.log ####################log 会在此目录中为每个登 陆用户(Samba 用户)建立不同的日志文件。这里指定了 Samba 服务的日志文件所在位置, 其中%m 也是 samb.conf 文件的变量, 代表了登录主机的 NetBIOS 名。 Windows 主机的 NetBIOS 命令可以通过鼠标右键打开“我的电脑/属性/计算机明/更改/其他“来查看。 security = user 这行设置了 Samba 的安全等级,Samba 一共可以设置四个安全登记,由底到高分别为: share:这个选项表示任何人都可以不需要输入密码登录。 user:这个是 Samba 的默认级别,要求每个用户必须输入密码才能登录。 server:user 级别的密码都是保存在本机上,而 server 级别的密码和用户名都保存在 另一台主机上。 domain:这个级别要求网络里必须有一台 Windows 的域控制器,验证工作由域控制器来 完成。

需要注意:只要输入用户名和密码的级别,其用户名一定首先也是 Linux 系统内的用户。 passwd server = ##################密码验证服务器。当用户从 Windows 通过 Samba 使 用 linux 时。 全自动传送登陆 windows 时的用户名 与密码给 Samba.然后 Samba 向 windows server 验证这两项信息是否正确。若不正确,则会出现对话框要用户重新输入用户名与密 码。而这个密码服务器可以是 NT SERVER(通常是主域控制器)或是另一个 Samba Server. 因此若 Security = share,则要删除关于密码服务器的那一行。 password Level = 8 ############这是设定针对一些 SMB 客户像 OS/2 之类而设的,这样 的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和 samba 的密码不一 致,这个参数可以设定密码里允许的大写字母个数,这样 samba 就根据这个数目对接收到 的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n 越大,组合的次数就 越多,验证时间就越长,安全性也会因此变得越低。例如 n=2,用户的密码是 abcd,但发 送出去其实是 ABCD, samba 就会把这个 ABCD 进行大小写重组, 组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。所以如果没有必要,就把 n 定为是零。这样的话 samba 只尝试两次,一个是接收到的密码,另一个尝试的是这个密 码都是小写的情况。 username level = n 这个是对于用户名的情况,说明和上面一项类似。 encrypt password = yes ##############用户密码要加密。由于现在 98/NT 皆用加密的 密码。因此要有这一项,当然也可以要求使用不加密的密码。 smb passwd file = /etc/samba/smbpasswd ############将密码验证服务器,设置为 Samba server 时,需要用此行来指定要验证的密码文件,这最重要的是密码文件设置的路径。 uin passwd sync = yes passwd program = /usr/bin/passwd %u passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* ##############接下 来的上面三项设置用来容许 WIN 密码改变后可更新 linux 系统的密码,确定`encrypt passwords`和`smb passwd file `项被启用。 pam password change = yes ##############当用户要求更改密码时,使用 PAM.不用本地 口令程序/user/bin/passwd。 username map = /etc/samba/smbusers ######## 指 定 用 户 映 射 文 件 ( 一 般 是 /etc/samba/smbusers) ,当我们在这个文件里面指定一行 root = administrator admin 的 时候,客户机的用户是 admin 或者 administrator 连接时会被当作用户 root 看待。 include = /etc/samba/smb.conf %m ##############此行允许用户自定义每台计算机的基 本配置文件,%M 代表 NETBIOS 正在连接的计算机的称。 passdb backend = tdbsam ##############passdb backend 就是用户后台的意思。 目前有三种后台:smbpasswd、tdbsam 和 ldapsam。sam 应该是 security account manager (安全账户管理)的简写。 1.smbpasswd:该方式是使用 smb 自己的工具 smbpasswd 来给系统用户(真实 用户或者虚拟用户)设置一个 Samba 密码,客户端就用这个密码来访问 Samba 的资源。 smbpasswd 文件默认在/etc/samba 目录下,不过有时候要手工建立该文件。

2.tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。 数据库文件叫 passdb.tdb, 默认在/etc/samba 目录下。 passdb.tdb 用户数据库可以使用 smbpasswd –a 来建立 Samba 用户,不过要建立的 Samba 用户必须先是系统用户。我们也可以使用 pdbedit 命令来建立 Samba 账户。pdbedit 命令的 参数很多,我们列出几个主要的。 pdbedit –a username:新建 Samba 账户。 pdbedit –x username:删除 Samba 账户。 pdbedit –L:列出 Samba 用户列表,读取 passdb.tdb 数据库文件。 pdbedit –Lv:列出 Samba 用户列表的详细信息。 pdbedit –c “[D]” –u username:暂停该 Samba 用户的账号。 pdbedit –c “[]” –u username:恢复该 Samba 用户的账号。 3.ldapsam:该方式则是基于 LDAP 的账户管理方式来验证用户。首先要建立 LDAP 服务,然 后设置“passdb backend = ldapsam:ldap://LDAP Server” obey pam restrictions = yew ##############当用户认证时,服从 PAM 的管理限制。 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 ##############设置服 务器和客户之间会话的 Socket 选项,此项设置将优化传输速度。 interfaces = 192.168.12.2/24 192.168.13.2/24 ##############如果有多个网络接口, 就必须在这里指定。如 interface = 192.168.12.2/24 192.168.13.2/24 remote browse sync = 192.168.3.25 192.168.2.255 ##############本行和下一行是远 程浏览设置

[homes] #########用户访问自己的宿主目录 comment = Home Directories valid users = %S ###其中%S 为一个变量,它代表了登录用户的用户名,即认证的用 户登录后就能进入自己的宿主目录。Ubuntu10.04 中如何设置会出现在 windows 登陆时一 直提示密码错误的现象,将其改为具体的用户名则可以登陆。 browseable = no ##############用户私人目录,不需要给别人浏览;browseable 参数控 制一项服务是否能够出现在网络资源浏览表中。这里是一些非直觉的东西, browseable = no 意味着这个目录将在浏览时显示为要验证的用户名称。 writeable = yes ##############用户写入自己目录的权限

[public]

####公共共享目录, 直接对匿名登陆有只读的权限。

x [share] ####在 Windows 主机中看到的共享文件名, 不一定与 Linux 中共享的文件名一致, comment = this is Linux share directory ####对此目录的说明 path = /home/share ####Linux 系统真实的共享目录,必须为绝对路径 public = yes ####public 指明该共享资源是否能给游客帐号访问,这个开关有时候也 叫 guest ok,所以有的配置文件中出现 guest ok = yes 其实和 public = yes 是一样的。 writable = yes ####是否允许用户在此目录下可写,no 为不可些,如果可写,还需要目 录具有 w 权限

read only = yes ####设置用户是否只读 create mode = 0700 ####如果有可写权限,建立的文件默认的权限掩码 directory mode = 0755 ####如果有可写权限,建立的目录默认的权限掩码 valid users = user ####指定能够使用该共享资源的用户和组。 invalid users = user ####指定不能够使用该共享资源的用户和组。 read list = user ####指定只能读取该共享资源的用户和组。 write list = user ####指定能读取和写该共享资源的用户和组。 admin list = user ####指定能管理该共享资源(包括读写和权限赋予等)的用户和组。 [netlogon] guest ok = yes ####等同于 public = yes share modes = no [profiles] [printer] ##############打印机设置 path = /var/spool/samba ##############打印机池(spool)用户须自创建目录 browseable = no ##############此行存放打印机的临时文件 public = yes ##############如果设置,则允许 guest 用户使用打印机 printable = yes ##############用户是否可以打印 (1)配置 (1)配置 share 级别的服务器 workgroup = linux hosts allow = 192.168.1. printcap = /etc/printcap load printers = yes printers = lprng guest account = abc logfiles = /var/log/samba/%m.log maxlog size = 50 security = share socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF =8192 ##注:其它可能以按 smb.conf 默认设置 ##重启服务 测试 samba 命令 testparm ====================================================================== (2)配置 (2)配置 USER 级别的服务器 在 share 级的基础配置上修改: security = user 添加: guest account = zjz encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd #######当配置文件/etc/smb.conf 进 行 user 级的设置后需要设置 samba 密码文件。建立 smbpasswd 帐号和口 令。使其与 /etc/passwd 的帐号和口令相同。 建立 smbpasswd 密码文件的方法有两种,如下: 1: 用一个叫 mksmbpasswd.sh 的工具从 linux 用户密码文件/etc/passwd 中产生 samba 密码文件/etc/samba/smbpasswd。

建 立 本 地 帐 号 , 生 成 口 令 文 件 夹 /etc/passwd , 把 /etc/passwd 里 的 用 户 都 加 到 /etc/samba/smppassword 文件中 注意:该过程是先在本地建立帐号和密码,然后再把口令文件传给 /etc/samba/smbpasswd,顺序不能相反。因本地帐号的口令和 samba 服务器中的帐号的口 令是不相同的。 #adduser zjz #passwd zjz #cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd 这里的/etc/samba/smbpasswd 和 smbpassspwd 和 smbpasswd file = /etc/samba/smbpasswd 的路径要相同。 2:利用 smbpasswd 命令来为刚才建立的帐号设立 samba server 口令。 注意:使用 smbpasswd 命令修改用户口令时。被修改的 samba 帐号的本地系统用户帐 号须已经存在。 #smbpasswd –a zjz 重启 samba 服务。USER 级服务器配置完毕。 注意:如果不能实现 WIN 计算机和 Samba 资源互访。可以在各自的主机中添加对方的 主机名和 IP 地址,然后再测试:方法如下: 在 linux 系统/etc/hosts 中添加:win-IP Win hostname (192.168.0.11 mywinpc) 在 windows 系统 c:\windows\hosts 中添加:win-IP Win—hostname

(3)配置 (3)配置 Server 级服务器 server 级的安全性比 USER 级更高。在 suer 级配置的基础上修改: security = server 添加: password server = libtserver ##############密码服务器,这里是用 win2k 主域控 制器 libserver“来做密码服务器。当然也可以用另一个 samba server 来做密码服务器。 注释掉 smbpasswd file = /etc/samba/smbpasswd 设置完后,用 testparm 和 smbclient 命令进行调试。这样当一台 win NT/98 计算机登 陆 libserver 域服务器时,同时也登陆了 Samba Server 上。不过这时的用户帐号和密码 在 libserver 和 Samba server 上应该是相同的。如果是已经加入的 libserver 主域控制 器的计算机就可以输入用户帐号和密码来打开 Samba Server 的共享文件。其它计算机虽 然也和 samba server 在同一个网段上,但如果不用 libtserver 和 samba server 共有的 用户帐户和密码登陆。就不能访问 samba. 4.在 4.在 Linux 中访问 Windows 的共享目录 在 Linux 中,可以直接将 Windows 中的共享目录挂在到本机中,然后就像操作自己主机上 的文件一样进行操作。我们可以使用 smbclient 命令查看指定主机的共享目录信息。 # smbclient -L //[目标主机 IP 地址] smbclient –L //192.168.0.1/ -U yourname 输入 smb 的密码后,将看到共享目录列表。 假设进入共享目录 share,命令如下:

smbclient //192.168.0.1/share -U yourname 之后将看到一个 smb:> 已经进入了 smb 模式,有些像 ftp,敲 help 可以查看相关命令,get,put 可以下载和上传 文件。 系统中的共享目录后: 当查看到 Windows 系统中的共享目录后: a.可以使用 命令来进行挂载共享的目录,smbmount 命令的格式为: a.可以使用 smbmount 命令来进行挂载共享的目录 # smbmount //IP 地 址 / 共 享 文 件 夹 名 /Linux 中 的 载 接 点 iocharset=utf8,user=windows 用户名,pass=密码

-o

b.可以使用 命令来进行挂载共享的目录,mount 命令的格式为: b.可以使用 mount 命令来进行挂载共享的目录 # mount -t cifs -o iocharset=utf8,user=windows 用户名,pass=密码 //IP 地址/共享文 件夹名 /Linux 中的挂载点 c.可以使用 命令来进行挂载共享的目录,mount 命令的格式为: c.可以使用 mount.cifs 命令来进行挂载共享的目录 # mount -t cifs //IP 地 址 / 共 享 文 件 夹 名 /Linux 中 的 挂 载 点 iocharset=utf8,user=windows 用户名,pass=密码 mount.cifs 等效于 mount -t cifs

-o

其中 user 也可为 username;pass 也可为 password. 如果没有 smbmount,可输入:sudo apt-get install smbfs 下载更新 取消挂载用:sudo umount / Linux 中的挂载点 同时,在挂载及 umount 时,当前目录不能在 Linux 挂载点文件夹内,否则挂载后不能显示 挂载的内容,当 umount 时也会出错。 ubuntu 里面 mount -t smbfs 不成功,原因: Kernel 使用 Common Internet File Systemcifs(cifs)代替 smbfs。 ====================================== Samaba 常见的故障排除 testparm 是 Samba 提供的一个十分有用的测试工具,它除显示 Samba 所有配置参数默认值 外,还能检测参数的实际取值,并与 Samba 管理员所设置的取值进行对比,检测 smb.conf 文件有没有包含任何无效参数。

1.解决中文乱码问题 在 Windows 中看到 Linux 的共享文件和目录中文都显示乱码。 要解决这个问题,首先执行命令 locale 查看一下系统的字符集: #locale LANG=zh_CN.GB18030 LC_CTYPE="zh_CN.GB18030" LC_NUMERIC="zh_CN.GB18030" LC_TIME="zh_CN.GB18030" .........

然后根据 locale 查到的字符集设置,修改配置文件 smb.conf 中的"[Global]"全局参数设 置段: (1)如果 locale 是 zh_CN.UTF-8,添加如下三行设置: display charset=UTF-8 unix charset=UTF-8 dos charset=UTF-8 (2)如果 locale 是 zh_CN.GBK、zh_CN.gb2312 或 zh_CN.GB18030,添加如下三行设置: display charset=cp936 unix charset=cp936 dos charset=cp936 重新启动 Samba 服务,则无论从 Windows 网上邻居还是直接用 DOS 命令查询,均可显示正 常中文。 2.如何不显示隐藏文件 如果访问宿主目录,那些以"."开头的隐藏文件都显示得一清二楚,那么就有可能一个误操 作把重要的配置文件删除了,这是很危险的。 要让隐藏文件不显示,需要在 Samba 配置文件的[homes]段添加如下设置: veto files=/.*/ "veto files"参数为设定禁止文件,指定了既看不见又不能访问的文件和目录列表,列表 中每个条目必须用斜杠(/)分开,星号(*)和问号(?)通配符能够用于指定多个文件 和目录。所以"/.*/"就表示禁止所有以"."开头的文件。 同时还可以做其他一些限定,如 Samba 所有共享目录中都禁止显示包含词 Windows 的任何 文件, 以".exe"结尾的任何文件和包含词 bill 的任何目录, 可以在[Global]段添加如下行: veto files=/*Windows*/*.exe/*bill/ 需要注意的是: (1)如果要禁止显示隐藏文件和包含词 newfile 的文件,不能用如下的书写方式: veto files=/.*/ veto files=/*newfile*/ 这样设置,第一行的禁止显示隐藏文件将不能生效,必须写成: veto files=/.*/*newfile*/ (2)设置"veto files"参数会影响 Samba 的性能,因为在列出文件和查询期间,扫描文件 和目录时,为了匹配,Samba 将被迫搜寻检查所有的文件和目录。 有关诊断 Samba 和 Windows 客户之间故障的工具: smbclient:检验可以访问的 Samba 服务器以及要求的共享已被定义。 smbstatus:检查水正对 Samba 服务器打开连接,在访问什么共享。 nmblookup:检测网络上的注册名称。 DOS net view 命令:从 Windows 系统检查服务器上都提供哪些共享。 DOS netstat:检查 NetBIOS 名称、适配器状态信息等。 tcpdump:捕获网络文件信息包,检查 Windows 客户端和服务器的对话。 Ethereal:详细分析信息包,检查 Windows 客户端和 Samba 之间出现的故障。

############## 其他问题 1 .看一下 smbd 监听的端口,如果有显示相应的端口就代表启动了 netstat -tlnp |grep smb 2. 关闭 SELinux 的方法: 修改/etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。 如果不想重启系统,使用命令 setenforce 0 注: setenforce 1 设置 SELinux 成为 enforcing 模式 setenforce 0 设置 SELinux 成为 permissive 模式 在 lilo 或者 grub 的启动参数中增加:selinux=0,也可以关闭 selinux 3. 配置好 smb.conf,结果在/etc/samba/下找不到 smbpasswd 文件。 原因:samba 启用了 tdbsam 验证。 解决:SMB.conf 文件中注释掉 passdb backend = tdbsam 一行, 加上 smb passwd file = /etec/samba/smbpasswd 这样再建立用户就产生了 smbpasswd 文件了。 (ubuntu10.04LTS 版中,在建立 samba 用户时:sudo smbpasswd –a test 提示 Unable to modify TDB passwd: NT_STATUS_UNSUNCCESSFUL!),在 SMB.conf 文件中注释掉的 passdb backend = tdbsam 取消注释,并改成 passdb backend = smbpasswd 即可。 4.Vista/win7 中登陆一直提示用密码错误,无法进入! samba 支持的 NTLM 版本低,nt6 系统要求支持 NTLMv2,运行里输入 secpol.msc,进入-本 地策略-安全选项里,选中:网络安全:LAN 管理器身份验证级别,选择:发送 LM 和 NTLM, 如果已协商,使用 ntlmv2 回话,立即生效 5.xp 中登陆一直提示用密码错误,无法进入! 将/etc/samba/smb.conf 中的 valid users = %S 改为 valid users = user (user 为 linux 中的 samba 用户名)即可。 ///////////////////////////////////////////////////////


相关文章:
操作系统课程设计实验报告(以Linux为例)
4 操作系统课程设计实验报告 (如不够,可另附页) 实验报告 5 操作系统课程设计实验报告 6 操作系统课程设计实验报告 实验二实验时间 6 小时 观察 Linux 行为 ...
Linux常用命令详解
Linux常用命令详解_IT/计算机_专业资料。个人整理了Linux常用命令合集。su su 命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要 切换为 ...
Linux基础期末考试试题
Linux 系统中,以_文件的_方式访问设备 。 27. Linux 内核引导时,从文件 _/etc/fstad___中读取要加载的文件系统。 28. Linux 文件系统中每个文件用__i...
Linux如何加载和卸载U盘
Linux如何加载和卸载U盘_电脑基础知识_IT/计算机_专业资料。Linux 如何加载和卸载 U 盘 1. 以管理员身份登录 Linux 桌面下按鼠标右键,新建终端 输入 su 后输入密...
linux vi保存退出命令
linux vi 保存退出命令 (如何退出 vi) Ren 于 2012-06-14 15:55 发表 linux vi 保存退出命令 (如何退出 vi) 新客网 XKER.COM 时间:2012-01-14 评论:0...
linux 面试题answer
write C. read-write 14.确定 myfile 的文件类型的命令是什么(C) A type myfile B type -q myfile C file myfile D whatismyfile 15.在 Linux 系统中...
Redhat Enterprise Linux6介绍
Redhat Enterprise Linux6介绍_计算机软件及应用_IT/计算机_专业资料。Redhat Enterprise Linux6介绍Redhat Enterprise Linux 6.0简介 IT 环境提供了巨大的价值。作为全球...
Linux课后选择题
( )命令可以查看文件的属性 A.ll B.ls C.ls -a D.cat 答案:A 题型:单选题 在 Linux 中可执行文件用( A 红色 B 蓝色 C 绿色 D 黑色 答案:C 题型:...
RedHat_Linux__常用命令
RedHat_Linux__常用命令_计算机软件及应用_IT/计算机_专业资料。RedHat Linux 命令 前言 RedHat Linux 命令有 1800 多个,每个命令 20 或者 30 个参数,最少的也有...
linux
linux_计算机软件及应用_IT/计算机_专业资料。shiyan 实验二 linux 操作系统初识一、实验目的 1.理解操作系统及相关的概念 2.熟悉 linux 操作系统的图形界面化操作...
更多相关标签: