samba服务
1.基于ubuntu16.04安装samba
apt-get install -y samba
2.编辑samba主配置文件
vim /etc/samba/smb.conf
3.注释信息行实在太多,不便于分析里面的重要参数,因此先把主配置文件改个名字,然后使用cat命令读入主配置文件,再在grep命令后面添加-v参数(反向选择),
分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,
最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
cat /etc/samba/smb.conf
这里采用的安全验证方式是user模式,只有建立账户信息数据库之后,才能使用用户口令认证模式。
另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
4.创建用于共享资源的账户
useradd test 创建用户
passwd test 重置用户密码
pdbedit
命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”
增加 samba 用户(该账户必须存在于/etc/passwd文件中)
pdbedit -a test(smbpasswd -a test)
然后输入两次密码
5.创建用于共享文件的目录
mkdir /home/share
将文件所有者设置为test
chown -Rf test /home/share
6.编辑samba主配置文件
vim /etc/samba/smb.conf
在末尾加入文件共享的相关参数
[share]
comment = Do not arbitrarily modify the database file
path = /home/share
public = no
writable = yes
7.重启smb服务
systemctl restart smbd
在Windows系统访问即可
添加多个用户或组
如果多个帐户更适合访问共享文件夹,请在/etc/samba/smb.conf文件中更改如下所示的有效用户。
valid users = user1, user2, user3
还可以使用smbpasswd为每个用户设置Samba密码。
sudo smbpasswd -a user1
sudo smbpasswd -a user2
sudo smbpasswd -a user3
要允许一组用户访问共享文件夹,请在/etc/samba/smb.conf中使用以下配置。
valid users = @sambashare
创建组。
sudo groupadd sambashare
然后将用户添加到此组
sudo gpasswd -a user1 sambashare
sudo gpasswd -a user2 sambashare
sudo gpasswd -a user3 sambashare
该组需要对共享文件夹具有写入权限,可以通过以下两个命令实现。
将sambashare设置为共享文件夹的组所有者:
sudo chgrp sambashare /path/to/shared/folder -R
授予组的写入权限。
sudo chmod g+w /path/to/shared/folder/ -R
另外,总结一下常见的samba配置及说明:
[share] # 该共享的共享名
comment = smb share test # 该共享的备注
path = /home/share # 共享路径
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Samba服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
browseable = yes|no # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写,也可以用readonly = no来设置可写
public = yes|no # 指明该共享资源是否能给游客帐号访问,guest ok = yes其实和public = yes是一样的
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid users = user, @group # 指定能够使用该共享资源的用户和组
invalid users = 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 # 指明对该共享资源进行写操作后是否进行同步操作
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可以写,那么guest就可以删除,如果我用force user= testuser强制建立文件的属主是testuser,
同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用
max connections = 100 # 设定最大同时连接数
delete readonly = yes|no # 指明能否删除共享资源里面已经被定义为只读的文件