所需软件:
samba:提供了smbd和nmbd程序
1)smbd:这个 daemon 的主要功能就是用来管理 SAMBA 主机分享的目录、档案与打印机等等。主要利用可靠的 TCP 协议来传输数据,开放的端口为 139 及 445(不一定存在)
2)这个 daemon 是用来管理工作组啦、NetBIOS name 啦等等的解析。主要利用 UDP 协议开启 port 137, 138 来负责名称解析的任务
samba-client:这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、取得类似网芳相关树形图的 smbtree 等等
samba-common:这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm)等等
cifs-utils:CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务
/etc/samba/smb.conf中的可用变量
- %m:代表 Client 端的 NetBIOS 主机名喔!
- %M:代表 Client 端的 Internet 主机名喔!就是 HOSTNAME。
- %L:代表 SAMBA 主机的 NetBIOS 主机名。
- %H:代表用户的家目录。
- %U:代表目前登入的使用者的使用者名称
- %g:代表登入的使用者的组名。
- %h:代表目前这部 SAMBA 主机的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
- %I:代表 Client 的 IP 咯。
- %T:代表目前的日期与时间
/etc/samba/smb.conf
#security字段
#share:来访主机无需验证口令
#user:由SMB服务器来验证主机提供的口令
#domain:使用PDC来完整验证
#server:用独立的远程主机验证
#passdb backend 字段
#smbpasswd:用smb服务的smbpasswd命令给系统用户设置smb密码
#ldapsam:基于LDAP服务进行账户验证
#tdbsam:创建数据库文件并使用pdbedit建立独立的用户
[global]
#工作组名称
workgroup = LwGROUP
netbios name = lwserver
#samba服务器信息介绍
server string = This is lw' samba server:%v
#%m为来访的主机名
log file = /var/log/samba/log.%m
#日志文件最大为50kb
max log size = 50
security = user
#samba4中加入这一行就能免口令进入了,smb4没有share
#map to guest = Bad User
#定义用户后台的类型
passdb backend = tdbsam
#是否当samba服务启动时共享打印机设备
load printers = no
[homes]
#描述信息
comment = my home hahah
#yes为图标可见,no为图标不可见,但是可以直接访问这个目录
browseable = no
#是否可以写入
writable = yes
#建立文件后文件的权限
create mode = 0664
#建立目录的后目录的权限
directory mode = 0775
guest ok = yes
[temp]
comment = temp directory haha
path = /tmp
#yes为图标可见,no为图标不可见,但是可以直接访问这个目录
browseable = yes
#不允许写入
writable = no
#是否有权限进入,guest ok和public是一样的,如果browseable=yes
#guest ok=no,则用户可以看到图标而双击不进去
guest ok = yes
[project]
comment = project directory haha
path = /home/project
browseable = yes
writable = yes
#允许这个组写入
write list = @users
chown .users /home/project
chmod 2770 /home/project
#检查配置文件语法知否正确
testparm
systemctl start smb && systemctl start nmb
samba需要linux下的用户名和组但是密码是通过pdbedit 这个密令设定的
选项与参数:
-L :列出目前在数据库当中的账号与 UID 等相关信息;
-v :需要搭配 -L 来执行,可列出更多的讯息,包括家目录等数据;
-w :需要搭配 -L 来执行,使用旧版的 smbpasswd 格式来显示数据;
-a :新增一个可使用 Samba 的账号,后面的账号需要在 /etc/passwd 内存在者;
-r :修改一个账号的相关信息,需搭配很多特殊参数,请 man pdbedit;
-x :删除一个可使用 Samba 的账号,可先用 -L 找到账号后再删除;
-m :后面接的是机器的代码 (machine account),与 domain model 有关!
[root@www ~]# useradd -G users smb1 [root@www ~]# useradd -G users smb2 [root@www ~]# useradd -G users smb3 [root@www ~]# echo 1234 | passwd --stdin smb1 [root@www ~]# echo 1234 | passwd --stdin smb2 [root@www ~]# echo 1234 | passwd --stdin smb3
#设置密码
pdbedit -a -u smb1
pdbedit -a -u smb2
pdbedit -a -u smb3pdbedit -Lpdbedit -a -u root
smb1:1001:
smb3:1003:
smb2:1002:
root:0:root
#通过smbpassword修改密码
smbpasswd smb1
linux下挂载samba服务器提供的共享文件夹 :
mount -t cifs //192.168.200.157/smb1 /mnt -o username=smb1 #必须加上-o 不然报错.
开机自动挂在vi /etc/fstab
//127.0.0.1/smb1 /media cifs auto,username=smb1,password=haha 0 0 #auto可以去掉,然后mount -a
window下挂载samba服务器提供的共享文件夹:
在我的电脑里输入\\192.168.200.157 输入 用户名:smb1 密码 4321就ok了
删除缓冲的用户名和密码 net use \\192.168.200.157 /del
防火墙:
iptables -A INPUT -p tcp -m multiport --dport 139,445 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 137,138 -j ACCEPT
smbtree 显示samba提供的目录结构
选项与参数:
-b :以广播的方式取代主要浏览器的查询
-D :仅列出工作组,不包括分享的资源
-S :列出工作组与该工作组下的计算机名称 (NetBIOS) 不包括各项资源目录
[root@www ~]# smbstatus [-pS] [-u username] 选项与参数: -p :列出已经使用 SAMBA 联机的程序 PID ; -S :列出已经被使用的资源共享状态; -u :只列出某个用户相关的分享数据 # 范例一:列出目前主机完整的 Samba 状态 [root@www ~]# smbstatus Samba version 3.5.4-68.el6_0.2 PID Username Group Machine ------------------------------------------------------------------- 5993 smb1 smb1 __ffff_192.168.100.10 (::ffff:192.168.100.10) 5930 smb1 smb1 win7-pc (::ffff:192.168.100.30) # 上半部主要在列出目前联机的状态中,主要来自那个客户端机器与登入的用户名 Service pid machine Connected at ------------------------------------------------------- IPC$ 5930 win7-pc Fri Jul 29 15:56:03 2011 project 5930 win7-pc Fri Jul 29 15:59:25 2011 smb1 5993 __ffff_192.168.100.10 Fri Jul 29 16:32:45 2011 # 这部分则显示出,目前有几个目录被使用了?那个 smb1 代表 //IP/smb1/ 喔!