搭建Samba文件服务器实例,书接博文搭建Samba文件服务器(一)
sudo vim /etc/samba/smb.conf
末尾添加:
[技术部]
comment = 技术部
path = /dataIT/技术部
writable = yes
create mask = 3640
directory mask = 0770
browseable = no
public = no
注:”[ ]”中括号里的内容是共享的名字,所以这里我打上中文比较好辩识。
comment 共享的说明,也就是英文单词注释的意思。
browseable = no 指定该目录不可以被列出,(默认被列出,其它部门用户会看到)必须输入完全路径才可以访问。
public = no 表示该目录对所有samba用户都是不可见的。
writable = yes 则表示该目录可写(方便上传)。
目录改成0770是为了方便对属组起作用。
create mask = 3640 安全起见让用户创建和上传的文件没有执行权限,同一属组的用户只有读取的权限不能对其进行编辑,其它用户就更加不能复制了(单纯设置只读也可以复制,所以干脆设成0,不过目录其他不同属组的已经进不来,这倒是没有多大影响。)
另外权限第一个数字3表示粘滞位权限1+sgid统一属组权限,粘滞可以让用户不能删除目录下的其他用户的文件,而统一属组则可以让用户创建的文件都属于和目录相同的同一个组。这里主要的是粘滞位权限,因为后面创建用户的时候指定加入了同一个组,其实同一属组的权限设置不设置效果都是一样。
规划:
创建jishubu组,创建 /data/技术部 目录;
创建kaifa_01、yunwei_01用户,都属jishubu组;
/data/技术部 属主为root,属组为jishubu,权限为3770;
这样kaifa01和yunwei_wwz都可以对“技术部”目录下的文件(即使属主不是自己,而是对方的)有读取写入删除的权限。
因为linux用户对文件的写权限,不是取决于用户对文件写的权限,而是取决于对目录的写权限。
为了权限的最小化和防止误删除,所以还得设置粘滞位权限。
而为了统一属组,美观和以后设置权限方便,建议对“技术部”目录的sgid权限也设置上。
这样无论是kaifa_01还是yunwei_01用户创建的文件,属组都会变成jishubu。
———————————————-
粘滞位权限(sticky)
作用:设置粘滞位权限后,即便用户和对目录有写入权限,也不能删除该目录中其他用户的文件
应用场景:对于公共可写目录,用户可创建删除自己的文件,但是不能删除其他用户的文件
表现形式:sticky表示为文件其它用户执行权限位上的t或T:
x: t -: T
若之前在其它用户执行位已有执行权限,则显示为t,否则显示为T
使用,如chmod o+t filename …
chmod o-t filename …
数字1表示增加粘滞位权限;数字0表示取消粘滞位权限;
使用,如:chmod 1755 filename …
————————————————-
————————————————-
sgid:对新建文件设置统一属组
具有sgid的目录,用户在此目录下创建文件时,新建文件的属组不再是用户所属的基本组,而是目录的属组;
————————————————–
实际操作命令:
sudo mkdir /dataIT/技术部 #创建共享文件夹
sudo groupadd jishubu #创建jishubu组,以便之后创建用户直接加入此组
sudo chown :jishubu /dataIT/技术部 #技术部目录属组改成jishubu组。
sudo chmod 3770 /dataIT/技术部 #权限改成3770
sudo useradd -d /dataIT/技术部 -M -s /sbin/nologin -g jishubu kaifa_01
sudo useradd -d /dataIT/技术部 -M -s /sbin/nologin -g jishubu yunwei_01 #分别创建好两个用户,当然如果以后要批量创建的话可以使用shell脚本
验证:
[yunwei@localhost ~]$ id kaifa_01
uid=1002(kaifa_01) gid=1002(jishubu) 组=1002(jishubu)
[yunwei@localhost ~]$ id yunwei_01
uid=1003(yunwei_01) gid=1002(jishubu) 组=1002(jishubu)
[yunwei@localhost ~]$ tail -2 /etc/passwd
kaifa_01:x:1002:1002::/dataIT/技术部:/sbin/nologin
yunwei_01:x:1003:1002::/dataIT/技术部:/sbin/nologin
授权用户访问Samba:
sudo smbpasswd -a kaifa_01
sudo smbpasswd -a yunwei_01 #添加用户到Samba用户数据库中,这条命令输入完后,会提示为新建的用户设置访问密码。
sudo systemctl restart smb 重启一下smb服务生效。
这样一来测试的时候就做到了最初想规划的效果:
一是共享路径访问的时候要打全路径,且对于别的用户来说是不可见,隐藏的,哪怕别的用户打全路径,也会因为权限不够而访问不了。
二是在同一共享目录下,不会误删其它用户的文件。
设置开机smb服务自动启动:
[yunwei@localhost ~]$ sudo systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.