开心一刻
高考前:保护动物
高考时:国家重点保护动物
高考后:四害!
上一篇博文已经介绍了samba服务的安装与配置以及使用账户密码访问文件共享服务,这一篇博文主要介绍samba服务的匿名访问以及权限设置,这里我主要实现类似学生交实验作业的场景,即只能上传文件,不能下载删除、修改、查看已经上传的文件,所有的权限只能由samba真实账户操作。
这里是我自己的配置文件内容,我在修改的时候先用cp命令做了一下备份。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
这里是我的配置文件信息:
[global] workgroup = SAMBA security = user map to guest = bad user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [home] comment = Do not arbitrarily modify the file path = /home/share public = yes inherit owner = yes create mask = 0600 directory mask = 0777 writable = yes
匿名访问必须要有的参数:map to guest = bad user、public = yes
权限控制必须要有的参数:inherit owner = yes、create mask = 0600、directory mask = 0777、writable = yes
几个重要的参数说明:
参数 | 作用 |
---|---|
map to guest = bad user | 匿名用户最主要就是添加这行,可以实现匿名访问,而且匿名访问时默认会被映射为nobody用户 |
guest account = nobody | 如果匿名用户不想映射为nobody,可以在这里修改,不过必须是系统已存在的用户 |
security = user | 安全验证的方式,就使用默认的user即可,较新的samba服务将share和server弃用了,具体可以查看/etc/samba/smb.conf.example的说明 |
public = yes | 是否公开(指明该共享资源是否能给游客帐号访问) |
guest ok = yes | 与public意思相同 |
inherit owner = yes | 上传的文件继承父目录的所有者, 而不是使用登录的账号名。 |
create mask = 0600 | 创建或上传文件时文件的权限 |
directory mask = 0777 | 创建或上传目录时目录将被赋予的权限 |
writable = yes | 是否可上传文件 |
几个重要参数解释:
inherit owner = yes
,以我设置的为例,用户上传文件时会自动继承/home/share目录的所属主,而不是nobody
修改好后重启samba服务,可以使用testparm
命令检查samba配置文件内容是否正确。
create mask = 0600
,远程访问时,创建的文件权限为0600,即只有文件所属主才能读取、更改文件内容,而文件所属主为share的所属主,所以nobody用户无法查看和修改文件内容
directory mask = 0777
,远程访问时,创建的目录权限为0777,因为目录要有rwx权限才能查看目录中的文件以及创建文件删除文件,所以这里设置的权限是777,其实保证最后一个是7就可以,这样nobody用户就是可以查看文件夹中的内容的。
sudo systemctl restart smb sudo systemctl enable smb #第一次使用可以将其加入到开机启动项,让其开机自动启动。
防火墙开放samba服务和修改Selinux域策略可参考上一篇博文
这一步我在实际测试的时候发现不是必须的,因为我的共享目录是在家目录下的,我已经将Selinux域策略开启,samba已经能够访问家目录下的文件了。但还是把修改Selinux安全上下文策略的方法写出来。
在root用户下执行,否则在命令前面加上sudo mkdir /home/share chmod 777 /home/share chmod g+s /home/share semanage fcontext -at samba_share_t /home/share restorecon -Rv /home/share
chmod 777 /home/share
这条命令是为了让nobody用户可以读取share目录的内容以及在share目录中上传或创建文件。
chmod g+s /home/share
这条命令是为了在share目录中创建的文件都自动继承share的所属组,而不是nobody。这些内容涉及linux中文件的一般权限、特殊权限和隐藏权限,不过我这里没有用到隐藏权限。
成功设置后,可以找一台同一个局域网中的电脑,然后使用win+R组合键,在运行框中输入\\samba服务器ip地址
,然后回车,如果设置没有问题,就会弹出一个要求输入账号密码的对话框,但是对话框中需要随便输入一些字符,但是不能为空。
这篇博文介绍在CentOS8中配置samba服务程序,实现samba的匿名访问以及权限控制,实现远程访问samba服务程序是,只能上传文件,而不能下载、修改和删除。其他linux发行版大同小异,若是嫌麻烦,甚至可以直接关掉防火前和Selinux,只需要将samba配置文件设置好即可。_
文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步