Server Comment --------- ------- WOLF Samba 4.4.4 //WOLF是主机名NETBIOS的主机名 Workgroup Master --------- ------- MYGROUP MT SAMBA WOLF
三、smb.conf详解
[pzk] # 自定义共享名 comment = Home Directories # 描述符,是给系统管理员看的 path = /tmp # 共享的路径 public = yes # 是否公开,也就是是否能在网上邻居看到该共享 browseable = yes # 共享的目录是否让所有人可见 writable = yes # 是否可写 guest ok = no # 是否拒绝匿名访问,仅当安全级别为 share 时才生效 workgroup = WORKGROUP # 工作组,要设置成跟 Windows 的工作组一致 server string = Samba Server Version %v # 其他 Linux 主机查看共享时的提示符 netbios name = MYSERVER # 用于在 Windows 网上邻居上显示的主机名 hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13 # 指定允许访问 samba 服务器的主机 security = share # 定义安全级别;取值为{share,user,domain} share:匿名共享 user:使用samba服务自我管理的账号和密码进行用户认证;用户必须是OS用户,但密码为samab密码 domain:使用DC进行用户认证;后面的--Domain Controler Options--将会生效 log file = /var/log/samba/log.%m # 定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名 max log size = 50 # 定义单个日志的最大容量(KB) passdb backend = tdbsam # Samba 用户的存储方式,smbpasswd 表示明文存储,tdbsam 表示密文存储 deadtime = 10 # 客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置可以提高服务器性能 display charset = UTF8 # 设置显示的字符集 max connections = 0 # 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接 guest account = nobody # 设置匿名账户为nobody load printers = yes # 是否在启动 Samba 时就共享打印机 cups options = raw # 设置打印机使用的方式 valid users = user1 user2 user3 # 指定哪些用户可以访问,如果不指定则所有用户都可访问 invalid users = user1 user2 # 指定哪些用户不可以访问 create mask = 0775 # 客户端上传文件的默认权限 directory mask = 0775 # 客户端创建目录的默认权限 write list = user1 user2 user3 # 设置可对文件进行写操作的用户 admin users = user1 # 设置共享目录的管理员,具有完全权限 unix charset = UTF8 #当前Linux主机所用的字符集 dos charset = #windows端的字符集;gbk,gb2312等 passdb backend = tdbsam //密码文件,tdbsam是一种非常安全的文件格式 cups options = raw //cups:通用unix打印机选项
共享配置:
[共享名称]:此即为共享的服务名 comment:注释信息 path:此共享对应本地fs路径 browseable:是否可浏览,是否可被所有用户看到 writable:是否可写// read only: //谁在后面,谁最终生效 writelist //可写用户列表或组列表 用户名 @组名 +组名 guest ok //是否允许来宾账号访问 public //是否是公开的服务 //public = no 或者guest ok = no就关闭了来宾账号
可用的宏列表:
%m :客户端主机的NetBIOS名称 %M :客户端的internet主机名,即HOSTNAME %H :当前用户的家目录 %U:当前用户的用户名 %g:当前用户所属的组名 %h:当前SAMBA主机的hostname %I:client端的ip %T:当前的日期时间
四、实验
基于用户做认证
[home] //定义了用户是否能够访问自己的家目录
browseable = no //每一个用户的家目录,不能被别人浏览
密码生成工具:smbpasswd,pdbedit
man smbpasswd
-a //添加os用户为samba用户
-e-d //enable/disable该用户
-n //set-no-password,不设置密码
-x //删除该用户
smbpasswd -a wolf //添加该用户
smbclient //192.168.4.118/samba -U wolf //
smbclient -L 192.168.4.118 -U wolf //browseable = no 在这里是看不到的
pdbedit命令:
类似于smbpasswd,管理本地用户成为samba用户
-L //列出samba用
-a //添加samba用户
-u //指定用户名
-x :删除该用户
-r 修改用户的相关信息
pdbedit -a -u wolf //添加wolf为samba用户
smbstatus:显示连接状态信息
-b 简要信息
-v 详细信息
实验一:权限测试
[tt] comment = Test for test path = /tmp/test browseable = Yes guest ok = Yes writable = Yes //定义所有用户可写,和write list只需一项就可以了 write list = @test //定义哪些用户可写 注意:writable和write list不应该同时写
groupadd test
testparm
usermod -a -G test wolf //添加该用户到test组
client:
smbclinet //192.168.4.118/tt -U wolf //测试
get //可以下载文件,但是不能上传
put //提示:NT_STATUS_ACCESS_DENIED opening remote file \resolv.conf
server:
setfacl -m g:test:rwx /tmp/test/
客户端再次put就可以实现了
windows访问:
\\192.168.4.118\tt //即可实现连接
mount -t cifs //192.168.4.118/tt -o username=wolf /usr/tt
mount -t cifs -o username=wolf,password=testwolf //192.168.4.118/tt /usr/smb/
实验二:权限测试
创建一个共享data,路径为/ftp/data
要求仅centos和fedora能上传文件
此路径队其他用户不可见
s:
mkdir -pv /ftp/data
vim /etc/samba/smb.conf
[data] comment = DaTA path = /ftp/data browseable = Yes write list = centos,gento public = no //禁止来宾账户访问 smbclient //192.168.4.118/data不输入账户名和密码将不能登录
testparm
useradd centos
echo centos | passwd --stdin centos
useradd fedora
echo fedora | passwd --stdin fedora
setfacl -m u:centos:rwx /ftp/data/
setfacl -m u:fedora:rwx /ftp/data/
systemctl restart smb
C:
smbclient -L 192.16 8.4.118
smbclient //192.168.4.118/data -U fedora //可以上传
问题1:挂载mount 失败
mount: block device //192.168.4.118/tt is write-protected, mounting r
mount: cannot mount block device //192.168.4.118/tt read-only
mount -t cifs -o username=wolf,password=testwolf //192.168.4.118/tt /usr/smb/
实验三:windows的共享设置
右键该目录:共享-->共享[添加用户--读取/写入]
smbclient -L 192.168.4.107
mount -t cifs -o username=wolf,passwd=wolf //192.168.4.107/test /usr/win/
注意:NT_STATUS_LOGON_FAILURE
原因:没有敲回车,使用匿名登录
或者:samba和系统中同时有该用户,没有把该用户加入到smaba账户
最终权限取决于:共享权限+fs权限
五、其他
winbind:在办公环境中一般windows AD域占据霸主地位,针对生产环境的linux集群机器才会选择LDAP,不过有时候在办公环境中也混杂了linux机器,为了规范管理,需要把linux机器加入window是 AD中的。
linux加入windows AD中方便操作的有两种方案(分为centos/ubuntu两种情况)。
1 likewise-open
在debian/ubuntu中使用,可以使用apt安装,配置方便,但是由于likewise的公司被收购,likewise的相关产品不再是开源产品,更杯具的是网上连以前的源码包都找不到,还好ubuntu中目前还是可以通过apt安装的。
2 winbind+samba
在centos上采用winbind+samba方案。
针对其他的命令请自行了解
[root@wolf ~]# rpm -ql samba-client /usr/bin/findsmb /usr/bin/nmblookup /usr/bin/rpcclient /usr/bin/sharesec /usr/bin/smbcacls /usr/bin/smbclient /usr/bin/smbget /usr/bin/smbprint /usr/bin/smbspool /usr/bin/smbta-util /usr/bin/smbtar /usr/bin/smbtree [root@wolf html]# rpm -ql samba-common |egrep -v "share|lib|log" /etc/samba/lmhosts /etc/samba/smb.conf /etc/sysconfig/samba /usr/bin/net /usr/bin/pdbedit /usr/bin/profiles /usr/bin/smbcontrol /usr/bin/smbcquotas /usr/bin/smbpasswd /usr/bin/testparm [root@wolf html]# rpm -ql samba |egrep -v "share|log|.so" /etc/openldap/schema/samba.schema /etc/pam.d/samba /etc/samba/smbusers /usr/bin/mksmbpasswd.sh /usr/bin/smbstatus /usr/sbin/nmbd /usr/sbin/smbd
原文:http://blog.51cto.com/hmtk520/2065710