建立独立的配置文件
1.copy smb.conf > user.smb.conf
2.在[global]中加入
include = /etc/samba/%U.smb.conf
include = /etc/samba/%G.smb.conf
关于用户控制:
public = no 不允许匿名用户访问(网上邻居看到不能访问)
browseable = no 隐藏目录(知道目录也可以访问)
valid users = 用户或列表或@用户组
writable = yes 可写(目录本身要可写)
writle list = 用户或列表或@用户组
readonly = yes 只读设置
create mask = 0744 控制客户机创建文件的权限
directory mask = 0744 控制客户机创建目录的权限
访问控制:
max connections = 最大连接数目
deadtime = 断掉连接时间(分钟)0为不限制
hosts deny = ip 地址,域名,EXECEPT
hosts allow = ip 地址,域名,EXECEPT
允许优先
smbclient命令格式:
smbclient -L //主机名或IP地址 -U 登录用户名 //列出目标主机共享资料列表
smbclient //主机名或IP地址/共享目录名 -U 登录用户名%密码 //使用共享资源
mount //目标IP或主机名/共享目录名称 挂载点 -o username=用户名
例:挂载WINDOW下的共享目录:(test也是window用户)
mount //192.168.31.138/programfiles /mnt -o username=test%test
df -h 查看挂载进来的目录
----
umount 加载点
smbtar -s server -u user -p passwd -x shareneam -t output.tar
例:smbtar -s 192.168.31.138 -u test -p test -x programfiles -t back.tar
把远程的内容备份到本地
tar tvf *.tar 查看TAR文件包里面的内容
put 登录前的目录下的文件名 //上传文件
ls
cd
rm
rmdir
get
q
企业实战与应用
实例1:员工可以在公司内流动办公,无论在任何一台机器上工作,都能把自己的文件放到服务器里,同时不能使用服务器上的SHELL
实例2:建立共享目录student,它的本机路径为“/home/student”,只有teacher组的用户可以读写该目录,student用户只能读取
实例3:公司有二个部门(sales market ),销售部和市场部都有自己单独的共享目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录
首先启动防火墙,关闭selinux --命令:setup->frie...->自定义中选中samba
然后重启reboot
cp smb.conf smb.conf.back
man smb.conf
vi smb.conf
[global]目录下
取消注销如下:
workgroup = MYGROUP (这里要和WIN电脑的用户组名一样)
server string = samba host(自己定义)
security = share
添加项:
[share]
comment = share
path = /home/share --注意目录的存在否:mkdir /home/share
public = yes
:wq(保存退出)
再执行:service smb restart (smb 重启)
smbclient -L 192.168.31.132 (直接回车表示匿名登入)
以上是使用SHARE方式共享
================
下面使用USER方式
vi smb.conf
[global]目录下
取消注释如下:
workgroup = MYGROUP (这里要和WIN电脑的用户组名一样)
server string = samba host(自己定义)
security = user
还有上面的注释(有关日志方面的设置)
log file = /var/log/samba/%m.log
max log size = 50
添加项:
[user]
comment = user
path = /home/user --注意目录的存在否:mkdir /home/user(注意目录权限问题,改用户和组为test1,linux要有test1用户,同时test1也应注册到smb用户下.查看可用:pdbedit -L.加用户test1到smb:smbpasswd -a test1)
#public = yes --注释此项,不允许匿名访问
valid users = test1
writable = yes
#write list = test1 --同一项相似,可只写入一项
最后重启服务:service smb restart
测试:
smbpasswd -a test1
smbclient -L 192.168.31.132
smbclient 19+2.168.31.132/user -U test1%test1
实例1:员工可以在公司内流动办公,无论在任何一台机器上工作,都能把自己的文件放到服务器里,同时不能使用服务器上的SHELL
[home]
注释这行:valid users = %S
security = user --user级别
再把[public]下的都清掉(注释掉)
新建用户:useradd tom -s /dev/null
smbpasswd -a tom
smbclient -L 192.168.31.132 (匿名)
smbclient -L 192.168.31.132 -U tom%tom(列出)
smbclient 192.168.31.132 -U tom%tom(登入目录)
再加用户:useradd jack -s /dev/null ---新建用户无SHELL
smbpasswd -a jack
net use * /delete ---断开网上邻居连接
实例2:建立共享目录student,它的本机路径为“/home/student”,只有teacher组的用户可以读写该目录,student用户只能读取
groupadd teachers
groupadd students
usermod -g students tom
usermod -g students jack
useradd -g teachers wang
useradd -g teachers zhang
smbpasswd -a zhang
smbpasswd -a wang
mkdir /home/student
chgrp students /home/students
chmod 757 /home/student/
chmod g+s /home/students
vi smb.conf
security = user --user级别
在[public]下加入:
[student]
comment = student
path = /home/student
valid users = @students @teachers
write list = @teachers
service smb restart
实例3:公司有二个部门(sales market ),销售部和市场部都有自己单独的共享目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录
groupadd sales
groupadd markets
===
userdel -r zhang
userdel -r wang
userdel -r tom
userdel -r jack
pdbedit -x zhang
pdbedit -x wang
pdbedit -x jack
pdbedit -x tom
groupdel teachers
groupdel student
---上面是删除前面的用户和相关数据,确保如下的测试
===
cd /home
rm students
mkdir sales
mkdir markets
使用脚本:
销售部:
for user in tom jack
>do
>useradd -g sales $user
>smbpasswd -a $user
>done
NEW SMB PASSWORD:(输入密码)
pdbedit -L 查看SMB用户是否加入成功,如果不成功可单独去创建.如:smbpasswd -a tom
市场部:
for user in zhang wang
do
useradd -g markets $user
smbpasswd -a $user
done
NEW SMB PASSWORD:(输入密码)
pdbedit -L 查看SMB用户是否加入成功,如果不成功可单独去创建.如:smbpasswd -a tom
总经理:
useradd ceo
smbpasswd -a ceo
mkdir /home/sales
mkdir /home/markets
chgrp sales /home/sales
chgrp markets /home/markets
chmod g+s /home/sales/
chmod g+s /home/markets/
ls -ld /home/markets/ /home/sales
chown ceo /home/sales/
chown ceo /home/markets/
ls -ld /home/markets/ /home/sales
chmod 770 /home/markets/
chmod 770 /home/sales/
ls -ld /home/markets/ /home/sales
设置smb.conf
vi smb.conf
security = user --user级别
注销;[homes] --使用户的家目录不起作用
不需打印时也可注销掉:;[printers] ---这里可使用冒号;来注销
在[public]下加入:
[sales]
comment = sales
path = /home/sales
valid users = @sales ceo ---用户组在组名前加上@
write list = @sales ceo
create mask = 770
directory mask = 770
[markets]
comment = markets
path = /home/markets
valid users = @markets ceo ---用户组在组名前加上@
write list = @markets ceo
create mask = 770
directory mask = 770
service smb restart --重启服务
Samba服务搭建的注意事项:
1。防火墙和SELinux
防火墙对Samba对应的端口打开,且SELinux应该关闭(否则会出现很多错误)。
2。主机名
主机名应该指定一个主机名
3。建立Samba用户
为安全起见不创建Samba用户的系统密码,只创建Samba用户密码。
如何防止SAMBA用户来猜测系统用户---创建Samba镜像用户
4。用户的权限
5。目录的权限
6。其他事项
有网络的问题,可以尝试多登录几次,特别是在虚拟机上。
创建Samba镜像用户:
1.vi /etc/samba/smbusers
添加要创建镜像用户的samba用户
格式:tom = 123 mot ---为tom创建了两个镜像用户123和mot
2.vi /etc/samba/smb.conf
在security = user下
添加配置文件路径:
username map = /etc/samba/smbusers
3.service smb restart ---重启samba服务
(win下cmd->net use * /delete)
--------------------
Samba排错
(1)错误信息
(2)配置文件
(3)日志文件
测试命令testparm:
testparm
testparm /etc/samba/smb.conf 主机名 IP
测试具体机器能否访问及访问的范围
netstat -tlunp | grep service(服务名)
查看服务对应的端口