CentOS 8中Smaba服务的匿名访问以及权限控制

开心一刻

       高考前:保护动物
       高考时:国家重点保护动物
       高考后:四害!

写在前面

       上一篇博文已经介绍了samba服务的安装与配置以及使用账户密码访问文件共享服务,这一篇博文主要介绍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安全上下文策略

这一步我在实际测试的时候发现不是必须的,因为我的共享目录是在家目录下的,我已经将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配置文件设置好即可。_

文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

上一篇:为什么建立自己的交易系统?看明白kinmall归纳的这四点你就懂了


下一篇:内网服务器通过单台外网服务器实现外网访问,iptables NAT