首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

samba

作者:  时间: 2011-05-05

samba


以下三种都可作服务器端的实现,都是作文件共享的
FTP 跨平台的,不关心操作系统,不关心广域网,局域网,只要数据可路由过去就可建立该服务
CIFS 通用因特网文件系统,以前叫smbfs,服务消息块文件系统,
特点:解决windows与类UNIX文件中的系统共享,当然linux和linux之间也是可以的,主要是在局域网上,实现该协议的服务是samba
NFS 网络文件系统,unix-like,局域网,性能好,NAS(网络附加存储,相当于共享存储)存储的标准协议


CIFS 端口多,137.138.139.445

common internet filesystem

windows <----> unix-like

137 udp
138 udp
139 tcp
445 tcp

139和445是用来传输数据的。137、138是用来进行NETBIOS名称解析的

1、通过cifs实现共享某系统用户的家目录
2、通过CIFS实现定义一个共享目录,共享给指定的用户
3、通过CIFS实现匿名共享
4、和windows系统相互共享


1、装包
[/mnt/Server]#rpm -ivh samba-common-3.0.33-3.28.el5.i386.rpm
[/mnt/Server]#rpm -ivh samba-3.0.33-3.28.el5.i386.rpm
[/mnt/Server]#rpm -ivh samba-client-3.0.33-3.28.el5.i386.rpm

2、配置文件是/etc/samba/smb.conf
以下行默认存在,表示共享用户家目录。
[/mnt/Server]#grep -n -A 5 homes /etc/samba/smb.conf
248:[homes] 共享名,名字可任意定义
249- comment = Home Directories 定义描述,任意定义
250- browseable = no 表示是否允许客户端浏览(smbclient)到此共享
251- writable = yes 表示是否允许写
253-; valid users = MYDOMAIN%S

3、直接启动服务
service smb start

4、制作 samba帐号
[/mnt/Server]#useradd -s /sbin/nologin smbuser1
[/mnt/Server]#smbpasswd -a smbuser1
New SMB password:
Retype new SMB password:
Added user smbuser1.
[/mnt/Server]#useradd -s /sbin/nologin smbuser2
[/mnt/Server]#smbpasswd -a smbuser2
New SMB password:
Retype new SMB password:
Added user smbuser2.

smbpasswd命令的常用方法

smbpasswd -a 增加用户(要增加的用户必须以是系统用户)
smbpasswd -d 冻结用户,就是这个用户不能在登录了
smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用
smbpasswd -n 把用户的密码设置成空.
smbpasswd -x 删除用户

/bin/false和/sbin/nologin的区别:
/bin/false是最严格的禁止login选项,一切服务都不能用。而/sbin/nologin只是不允许login系统,但可以使用其他ftp等服务。如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。


5、找一客户端主机,来使用samba共享
[/root]#smbclient -L //192.168.1.254 -U smbuser2
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
smbuser2 Disk Home Directories
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------

Workgroup Master
--------- -------
MYGROUP
[/root]#


[/root]#mount.cifs //192.168.1.254/homes /media/
Password:
mount error 13 = Permission denied
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
[/root]#mount.cifs //192.168.1.254/homes /media/ -o user=smbuser1,pass=123
[/root]#ls /media/
[/root]#df -T /media/
文件系统 类型 1K-块 已用 可用 已用% 挂载点
//192.168.1.254/homes
cifs 29753588 25104944 3112832 89% /media
[/root]#mkdir /media/smbdir
[/root]#umount /media/
[/root]#smbclient -L //192.168.1.254 -U smbuser2
[/root]#mount.cifs //192.168.1.254/smbuser2 /media/ -o user=smbuser2
Password:
[/root]#mkdir /media/smbuser2_dir


卸载挂载点
umount.cifs /mnt/smbMP/ -l

二、根据需求自定义配置文件
1、server端,定义共享位置 和共享权限
自定义共享
vim /etc/samba/smb.conf
[testsamba]
comment = test for samba
path = /testdir
browseable = yes
writable = yes
valid users = u1,u2,u3
[/mnt/Server]#ls -ld /testdir
drwxr-xr-x 2 root root 4096 04-23 10:50 /testdir
[/mnt/Server]#useradd u1
[/mnt/Server]#useradd u2
[/mnt/Server]#useradd u3
[/mnt/Server]#smbpasswd -a u1
New SMB password:
Retype new SMB password:


2、找一个客户端查看并使用共享!!!!!
[/root]#smbclient -L //192.168.1.254
Password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
testsamba Disk test for samba
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------
LOCALHOST Samba Server Version 3.0.33-3.28.el5

Workgroup Master
--------- -------
MYGROUP
[/root]#


[/root]#smbclient -L //192.168.1.254
[/root]#mount.cifs //192.168.1.254/testsamba /media/
Password:
mount error 13 = Permission denied
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
[/root]#mount.cifs //192.168.1.254/testsamba /media/ -o user=u1
Password:


三、共享指定目录,匿名共享
vim /etc/samba/smb.conf
security = user 改为 security = share
只要在共享定义段中 加上 : public = yes或者guest ok = yes
就可以匿名访问共享,否则,如果没有加此字段,则还是需要非匿名访问。


四、配置一个共享!
要求:
u1,u2,u3 这三个samba帐号的附加组是g1组。


配置一个/dir1目录共享给三用户u1,u2,u3
且要求三用户可读可以共享目录/dir1
并且可以相互读写对方上传的文件

[/testdir]#chmod o+w /dir1
[/testdir]#ls -ld /dir1
drwxr-xrwx 2 root root 4096 04-23 12:17 /dir1
[/testdir]#vim /etc/samba/smb.conf
[/testdir]#tail -n 6 /etc/samba/smb.conf
[aa]
comment = aaaaaa
path = /dir1
writable = yes
valid users = u1,u2,u3
browseable = yes

找客户端用三用户分别 挂载共享:
[/root]#mkdir /u1 /u2 /u3
[/root]#mount -t cifs //192.168.1.254/aa /u1 -o user=u1,pass=u1
[/root]#mount -t cifs //192.168.1.254/aa /u2 -o user=u2,pass=u2
[/root]#mount -t cifs //192.168.1.254/aa /u3 -o user=u3,pass=u3
[/root]#mkdir /u1/u1_dir
[/root]#mkdir /u2/u2_dir
[/root]#mkdir /u3/u3_dir
[/root]#ls -l /u1/
总计 0
drwxr-xr-x 2 1002 1003 0 2011-04-23 u1_dir
drwxr-xr-x 2 1042 1043 0 2011-04-23 u2_dir
drwxr-xr-x 2 1043 1044 0 2011-04-23 u3_dir
[/root]# 确实三用户都可读可写共享!!!


为了解决: 三用户可以相互读写对方上传的文件
[/dir1]#ls -ld /dir1/
drwxr-xrwx 2 root root 4096 04-23 12:27 /dir1/
[/dir1]#groupadd g1
[/dir1]#usermod -g g1 u1
[/dir1]#usermod -g g1 u2
[/dir1]#usermod -g g1 u3
[/dir1]#chgrp g1 /dir1
[/dir1]#chmod 2770 /dir1
[/dir1]#ls -ld /dir1/
drwxrws--- 2 root g1 4096 04-23 12:27 /dir1/

300 [aa]
301 comment = aaaaaa
302 path = /dir1
303 writable = yes
304 valid users = u1,u2,u3
305 browseable = yes
306 directory mask = 0770
307 directory security mask = 0770
308 force directory mode = 0770
309 create mask = 660
310 security mask = 660
311 force create mode = 660


create mode – 这个配置定义新创建文件的属性。Samba在新建文件时,会把dos文件的权限映射成对应的unix权限,在映射后所得的权限,会与这个参数所定义的值进行与操作。然后再和下面的force create mode进行或操作,这样就得到最终linux下的文件权限。
force create mode – 见上面的描述。相当于此参数所设置的权限位一定会出现在文件属性中。
directory mode – 这个配置与create mode参数类似,只是它是应用在新创建的目录上。Samba在新建目录时,会把dos–>linux映射后的文件属性,与此参数所定义的值相与,再和force directory mode相或,然后按这个值去设置目录属性。
force directory mode – 见上面的描述。相当于此参数中所设置的权限位一定会出现在目录的属性中。
说明一点,上面的create mode和create mask参数是同义词,用哪个都可以;而directory mode和directory mask参数是相同的。

当你发现Samba中新建的目录/文件权限不正确,例如无法访问某个目录、无法更改文件,就需要检查上面几个值的设置。

另外需要说明的是,上面几个配置项,会和security mask、force security mode、directory security mask、force directory security mode这几个配置项相互作用。这几个带”security”的配置项会影响Windows NT/2000的ACL功能,一般我们不需要设置。