Samba 服务的搭建
什么是samba?
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
Samba,是种自由软件,用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无
Samba的安装
安装samba:sudo apt-get install samba
安装smbclient:sudo apt-get install smb-client
安装smbfs:sudo apt-get install smbfs
samba -----samba服务器程序的所有文件
samba-common -----提供了Samba服务器和客户机中都必须使用的公共文件
samba-client -----提供了Samba客户机的所有文件
samba-swat -----以Web界面的形式提供了对Samba服务器的管理功能
创建samba用户
首先需要添加相应的系统账号,所以会提示Failed to add entry for user的错误,只需增加相应的系统账号test就可以了:
[root@ubuntu ~]# groupadd test -g 6000
[root@ubuntu ~]# useradd test -u 6000 -g 6000 -s /sbin/nologin -d /dev/null
这时就可以用smbpasswd -a test增加test这个samba账号了!为了增加系统的安全性,所以加的系统账号不要给shell它,也不给它指定目录,到时在/home目录给test账号建个文件夹,该文件夹只有test有读写权限即可!
如:
[root@ubuntu ~]# mkdir /home/test
[root@ubuntu ~]# chown -R test:test /home/test
若不想让另人访问,只让test用户可以访问,只需执行命令:
[root@ubuntu ~]# chmod u+rwx,g+rwx,o-rwx /home/test
[root@localhost ~]#smbpasswd -a user1
(“-a”是创建samba用户,“-x”是删除samba用户,“-d”是禁用samba用户帐号,“-e”是启用samba用户帐号)
重新启动samba,sudo /etc/init.d/samba restart
samba配置文件
在较早期的版本中, SAMBA 的设定档都直接放置在 /etc 底下,后来的版本则将设定档通通放置到/etc/samba 底下去了 ( 有的 distribution 放在 /etc/smb 有的则是 /etc/samba.d,请使用 locate 搜寻! )。在 /etc/samba 底下的几个重要的设定档有: /etc/samba/smb.conf:这个就是SAMBA 最主要的设定档了!在较为简单的设定当中,这也是唯一的一个设定档!此外,这个档案本身就含有相当丰富的说明,所以,在设定之前,请使用vi 好好的详细的观看一下这个档案吧!这个设定档主要的设定分为两部份,分别是[global] 这个设定主机功能的项目,以及接下来的每个分享出去的目录的属性设定。
Samba服务器的安全级别分为5种,分别是user、share、server、domain和ads。在设置不同的级别时,samba服务器还会使用口令服务器和加密口令。
1、user -----客户端访问服务器时需要输入用户名和密码,通过验证后,才能使用服务器的共享资源。此级别使用加密的方式传送密码。
2、share -----客户端连接服务器时不需要输入用户名和密码
3、server -----客户端在访问时同样需要输入用户名和密码,但是,密码验证需要密码验证服务器来负责。
4、domain -----采用域控制器对用户进行身份验证
5、ads -----若samba服务器加入到Windows活动目录中,则使用ads安全级别,ads安全级别也必须指定口令服务器
[homes] -----samba用户的宿主目录
comment = Home Directories -----设置共享的说明信息
browseable = no -----目录浏览权限
writable = yes -----用户对共享目录可写
这个共享目录只有用户本身可以使用,默认情况下,用户主目录位于/home目录下,每个Linux用户有一个以用户名命名的子目录。
以下是共享打印机的设置:
[printers] -----共享打印机
comment = All Printers -----设置共享的说明信息
path = /var/spool/samba -----指定共享目录的路径
browseable = no -----目录浏览权限
guest ok = no -----允许来宾访问
writable = no -----用户对共享目录可写
printable = yes -----可以打印
以上是系统默认设置
添加自定义的共享目录:( user1对/ASUS有所有权,user2拥有只读权限,其他用户不能访问;public共享目录允许所有用户访问及上传文件)
[ASUS]
comment = user1 Directories -----设置共享的说明信息
browseable = yes -----所有samba用户都可以看到该目录
writable = yes -----用户对共享目录可写
path = /ASUS -----指定共享目录的路径
[public]
comment = all user Directories -----设置共享的说明信息
browseable = yes -----所有samba用户都可以看到该目录
writable = yes -----用户对共享目录可写
path = /public -----指定共享目录的路径
guest ok = yes -----允许来宾访问
[public]
comment = all user Directories
browseable = yes
writable = yes
path = /home/huddy/sharework/samba
public = yes
create mask = 0777
directory mask = 0777
设置共享目录权限为777
Samba的测试
测试从Windows到Linux的连接
最快捷的测试激活Samba功能的Linux系统方法是:在同一个网络中寻找一个安装了Windows系统的机器。点击Windows系统中的"开始"菜单中的"运行",在"运行"窗口中,输入两个反斜杠,后面紧跟你的装有Samba服务器的IP地址。使用IP地址的目的在于消除你的网络中可能存在的域名解析方面的问题。如果你愿意的话,你可以使用机器的名字来测试,但是要注意的是这种使用名字的方法可能会无法实现你的测试目的。
此时系统应该会提示你输入用户名与密码。输入你在前面已经输入的根用户的名字和密码就可以了。此时你应该可以看到一个文件夹,该文件夹中包含一个名字为"root"的文件夹和一个名字为"Printers"的文件夹。即使在你的Samba服务器上没有安装打印机,也会出现"Printers"文件夹。
如果没有出现输入用户名和密码的提示,这可能意味着你的Linux机器上的Samba服务器还没有运行起来。你可以检查一下,以确认smbd进程确实已经启动,检查的方法是在命令行中输入"ps -ea | grep smbd"就可以知道该进程是否启动。如果没有返回任何信息,说明Samba进程可能会由于某种原因没有启动。你可以到"/var/log/samba" 目录下查看一下日志文件,通过这些文件你可能可以找到导致进程没有启动的原因。
测试从Linux到Windows的连接
同样,从Linux系统中建立一个到Windows机器的连接也是非常简单的事情。第一步要确保你已经创建了一个挂载点来安装网络共享。例如,我用 "/mnt/smb"来进行测试。在你以根用户登录时,你可以在根驱动器下通过使用"mkdir /mnt/smb"命令来创建这个目录。
一旦完成了目录的创建,你就可以使用"mount"命令来加载网络共享。在这里,对于"mount"命令和Samba系统来说,有三个关键因素需要你注意。首先,文件系统类型是smbfs。这意味着你在"mount"命令行中必须指定"-t smbfs"。其次,在远程机器上的用户名最好不要和本地机器上的用户名相同,所以必须指定一个用户名。你可以使用一下的命令来实现:
-o username=domain\\user
需要注意的是,在"username(用户名)"中使用的是两个反斜杠来分离域名和用户名。之所以要这样,是因为命令行解释器将这两个反斜杠只解释为一个反斜杠。
最后,在用于共享的UNC路径中,Windows一般都是使用反斜杠。在UNIX命令解释器中,由于存在反斜杠的翻译问题,所以在"mount"命令中使用前向反斜杠。所以,最后的命令应该如下:
mount /mnt/smb //server/share -t smbfs -o username=MYDOMAIN\\Administrator
系统会提示输入你的密码,并且一旦你成功的输入了你的密码,你就可以通过你已经定义的挂载点来访问远程共享文件夹中的文件,在本文中该文件夹就是"/mnt/smb"。