Samba配置

1. Samba服务器

1.1 创建samba用户

1
2
3


$ sudo smbpasswd -a smbuser

1.2. 重启samba服务

1
2
$ sudo systemctl restart smbd # 提供文件和打印服务、授权与被授权服务
$ sudo systemctl restart nmbd # 提供名字解析、浏览服务

1.3. 客户端访问测试

1
$ smbclient -L //localhose/share

1.4 远程挂载共享目录

1
2
3
4
$ sudo mount.cifs //server-ip/sharename ./mnt/filename -o username=XXX,password=XXX,vers=1.0

$ sudo umount /mnt/filename # 取消挂载
$ sudo tail -f /var/log/kern.log # 查看错误日志

2. ‘smb.conf’配置文件

2.1 共享文件夹举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[home] # 这个使用者资源共享部分:也就是用户家目录

[share]
path=/home/share # 共享路径
browseable = yes # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写,也可以用readonly=no来设置可写
comment = smb share test # 该共享的备注
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Sambe服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
public = yes|no # 指明该共享资源是否能给游客账号访问, guest ok = yes其实和public = yes是一样的
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid user = user, @group # 指定能够使用该共享资源的用户和组
invalid user = user, @group # 指定不能够使用该共享资源的用户和组
read list = user, @group # 指定只能读取该共享资源的用户和组
write list = user, @group # 指定能读取和写该共享资源的用户和组
admin list = user, @group # 指定能管理该共享资源(包括读写和权限赋予等)的用户和组
hide dot files = yes|no # 指明是否像UNIX那样隐藏以“.”号开头的文件
create mode = 0755 # 指明新建立的文件属性,一般是0755
directory mode = 0755 # 指明新建立目录的属性,一般是0755
sync always = yes|no # 指明对该共享资源进行写操作后是否进行同步操作,Samba默认为异步写入。smbd写入内存缓冲区,稍后将缓冲区刷新到磁盘。
short preserve case = yes|no # 指明是否区分文件名大小写
preserve case = yes|no # 指明是否保持大小写
case sensitive = yes|no # 指明是否对大小写敏感,一般选no,不然可能引起错误
mangle case = yes|no # 指明混合大小写
default case = upper|lower # 指明缺省文件名是全部大写还是小写
force user = testuser # 强制把建立文件的属主是谁。如果我有一个目录,让guest可以写那么它就可以删除,如果我用force user=testuser强制建立文件的属主是testuser,同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接
max connections = 100 # 设定最大同时连接数
delete readonly # 指明能否删除共享资源里面已经被定义为只读的文件

%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 = 当前日期和时间
hosts allow = 网络或者主机

3. 针对指定有权限的可用可见目录

引用子配置文件,在引用子配置文件有二种方法:

  • 在[global]标签下加入参数:config file=/etc/samba/smb.conf.%U
  • 在[include]标签下加入参数:include=/etc/samba/smb.conf.%U

他们的区别是:使用config file时,当以aa身份访问samba服务器,只能看到aa,其他在smb.conf中定义的共享资源都无法看到;使用include时,当以aa身份访问samba服务器,除了可以看到aa,其它在sam.conf中定义的共享也可以看到。