Samba服务器简单配置步骤
1.挂载iso光盘
[root@localhost ~]# mount -o loop /dev/cdrom /mnt/cdrom
2.安装samba软件
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh samba-3.0.33-3.14.el5.i386.rpm samba-client-3.0.33-3.14.el5.i386.rpm samba-common-3.0.33-3.14.el5.i386.rpm
如果不能安装,提示缺少依赖包的话,看提示安装相应软件,我的需要安装
[root@localhost Server]# rpm -ivh perl-Convert-ASN1-0.20-1.1.noarch.rpm
3.安装成功之后,就可以进行相应的配置的,先进入配置文件目录,并打开配置文件
[root@localhost Server]# cd /etc/samba/
[root@localhost samba]# vim smb.conf
4.本实验可以通过一个小实例来进行讲解实例要求如下
匿名用户可以访问目录/var/smb/public,共享名为public,权限只可读,user1可以访问/var/smb/user,共享名为smbuser,权限可读可写。
实验所用服务器版本是:redhat5.4(192.168.2.10),测试机windows 2003(192.168.2.12)
实验步骤:
1> 打开配置文件,如上文所做步骤,再进行如下修改
[global]
workgroup = MYGROUP //用户组组名
server string = Samba Server //登录服务器时显示的信息
log file = /var/log/samba/%m.log //打开日志信息
security = share //安全级别为匿名(如果为user的话,那么,匿名登录就不可以了,所以应该使用share级别)
passdb backend = tdbsam
下面是共享的目录及其说明
[public] //共享目录显示的名字
comment = Public'share //说明信息
path = /var/smb/public //共享的目录
public = yes //可匿名登录
writable = no //不可写
[smbuser]
comment = user'share
path = /var/smb/user
public = no //不允许匿名用户登录
writable = yes //可写
Valid users=user //只允许user登录
2> 启动smb服务器
[root@localhost samba]# service smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
3> 创建smb用户及密码
[root@localhost samba]# smbpasswd -a user
New SMB password:
Retype new SMB password:
Added user user.
[root@localhost samba]#
创建目录,并修改/var/smb/user为可写权限
[root@localhost samba]# mkdir /var/smb
[root@localhost samba]# mkdir /var/smb/public
[root@localhost samba]# mkdir /var/smb/user
[root@localhost samba]# ll /var/smb
total 8
drwxr-xr-x 2 root root 4096 Dec 18 20:51 public
drwxr-xr-x 2 root root 4096 Dec 18 20:51 user
[root@localhost samba]# chmod o+w /var/smb/user
4> 在windows xp上进行测试,登录共享
我们看到如下几个目录
可以测试下,我们不可以在public目录下创建目录与文件,但是如果点击smbuser目录,会出现登录框,让我们输入user的密码,输入密码后我们才能够进入这个目录,并且可以创建,删除文件。
5. 在linux下的smb服务器中还有一个客户端软件:samba-client-3.0.33-3.14.el5.i386.rpm
安装这个文件之后就可以正常的访问共享的文件,包括windows下的共享文件
下面也来做一个小实验
条件和上面的的要求相同,只是是在windows 2003下进行共享设置,在Linux下来获取共享文件
1》共享目录c:/public为匿名登录,配置如下
在系统中新建一个用户user,密码为123,对user目录进行配置,配置如下
现在可以在linux下对这两个共享目录进行访问
2》对于远程的共享目录,我们可以先使用命令查看一下有什么目录是共享的
[code@localhost samba]$ smbclient -L //192.168.2.12
Password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
Sharename Type Comment
--------- ---- -------
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc to machine 192.168.2.12. Error was NT_STATUS_ACCESS_DENIED
Error returning browse list: NT_STATUS_ACCESS_DENIED
Error connecting to 192.168.2.12 (Connection refused)
Connection to 192.168.2.12 failed (Error NT_STATUS_CONNECTION_REFUSED)
NetBIOS over TCP disabled -- no workgroup available
从上面可以看出,我们是没有查看成功的,因为在windows 2003中,系统默认的是不能够以匿名用户查看及登录的,我们需要把windows2003中的guest用户开启,才可以允许匿名登录。
开启guest用户之后(不要为guest用户设置密码)再次查看
[code@localhost samba]$ smbclient -L //192.168.2.12
Password:
Domain=[ADMIN-GESFOVR50] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
Sharename Type Comment
--------- ---- -------
C$ Disk 默认共享
IPC$ IPC 远程 IPC
ADMIN$ Disk 远程管理
public Disk
user Disk
Error connecting to 192.168.2.12 (Connection refused)
Connection to 192.168.2.12 failed (Error NT_STATUS_CONNECTION_REFUSED)
NetBIOS over TCP disabled -- no workgroup available
也可以查看时后面加上用户名,如smbclient -L //192.168.2.12 -U user
3》在查看到共享的目录之后,我们就可以进行这个共享目录进行操作了,进入目录的方式
(1) 进入需要用户与密码的共享文件目录方法
[root@localhost ~]# smbclient //192.168.2.12/user
Password:
Domain=[ADMIN-GESFOVR50] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
smb: \> dir
NT_STATUS_ACCESS_DENIED listing \*
40943 blocks of size 524288. 35153 blocks available
smb: \> quit
[root@localhost ~]# smbclient //192.168.2.12/user -U user
Password:
Domain=[ADMIN-GESFOVR50] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
smb: \> dir
. D 0 Wed Dec 19 00:21:19 2012
.. D 0 Wed Dec 19 00:21:19 2012
user A 0 Tue Dec 18 21:24:51 2012
我们还可以在其中创建目录及文件等操作
(2)匿名用户进入共享目录
在匿名用户进入共享目录的时候,我使用window2003做的共享,可以进入目录,但是使用dir命令查看的时候,去不能查看到任何的文件,不知道怎么回事,我尝试用windows xp做共享目录,是可以实现的,下面的是在windows xp上实现的步骤
[root@localhost ~]# smbclient //192.168.2.2/aa
Password:
Domain=[name] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> dir
. D 0 Wed Dec 19 00:25:16 2012
.. D 0 Wed Dec 19 00:25:16 2012
public A 0 Wed Dec 19 00:25:11 2012
61454 blocks of size 524288. 35391 blocks available
匿名用户是不能进行创建删除操作的。
4》 在linux上我们不但能够直接使用远程的windows共享资源,还可以直接把远程共享资源使用mount命令挂载到本机的一个目录上,这样的话,就更便于实现了,现在我们以远程共享目录user来做这个实验,这个共享目录挂载到本机的/mnt/public目录上。
[root@localhost ~]# umount /mnt/public/
[root@localhost ~]# mount.cifs //192.168.2.12/user /mnt/public -o username=user
Password:
[root@localhost ~]# ll /mnt/public/
total 0
drwxrwxrwx 1 root root 0 Dec 19 00:28 a
-rwxrwSrwx 1 root root 0 Dec 18 21:24 user
现在就挂载成功了,但是如果有一个固定的共享文件的服务器,我们每次开机时不可能都要重复这一个动作,所以我们可以通过使用开机启动的方式来挂载这个远程共享。
[root@localhost ~]# umount /mnt/public/
[root@localhost ~]# vim /etc/fstab 添加如下内容
//192.168.2.12/user /mnt/public cifs defaults,username=user,password=123 0 0
现在再重新让系统挂载一次:[root@localhost ~]# mount -a
现在用mount命令就可以看到又重新挂载上了。
5》但是这样虽说是挂载上了,但是我们知道/etc/fstab文件是一个其它用户可读的文件,这样的话,那么我们直接在这个文件中写入了密码,是极其不安全的,因此我们可以采用另一种更好的方法来实现开机的挂载。
[root@localhost ~]# vim /etc/fstab
//192.168.2.12/user /mnt/public cifs defaults,credentials=/etc/pwd.conf 0 0
[root@localhost ~]# vim /etc/pwd.conf 添加如下内容
username=user
password=123
[root@localhost ~]# chmod 400 /etc/pwd.conf //为其它用户不分配查看的权限
[root@localhost ~]# mount -a
现在就可以看到远程共享就重新挂载上了,并且达到了安全的目的。