1.Samba 服务程序的主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。
创建共享资源的方法很简单,只要将表中的参数写入到Samba 服务程序的主配置文件中,然后重启该服务即可。
1)第 1 步:创建用于访问共享资源的账户信息。在centos 7 系统中,Samba 服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。
不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit 命令用于管理SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。
在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。pdbedit 命令中使用的参数以及作用如表所示
[root@localhost ~]# id centos uid=1000(centos) gid=1000(centos) groups=1000(centos) [root@localhost ~]# pdbedit -a -u centos new password: retype new password: Unix username: centos NT username: Account Flags: [U ] User SID: S-1-5-21-1589240372-1312249903-1894174146-1000 Primary Group SID: S-1-5-21-1589240372-1312249903-1894174146-513 Full Name: centos Home Directory: \\localhost\centos HomeDir Drive: Logon Script: Profile Path: \\localhost\centos\profile Domain: LOCALHOST Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Sat, 05 Sep 2020 10:36:44 CST Password can change: Sat, 05 Sep 2020 10:36:44 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2)第 2 步:创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,而且由于/home 目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux 安全上下文所带来的限制。
在前面对Samba 服务程序配置文件中的注释信息进行过滤时,这些过滤的信息中就有关于SELinux 安全上下文策略的说明,我们只需按照过滤信息中有关SELinux安全上下文策略中的说明中给的值进行修改即可。
修改完毕后执行restorecon 命令,让应用于目录的新SELinux 安全上下文立即生效。
[root@localhost ~]# mkdir /home/database [root@localhost ~]# chown -Rf centos:centos /home/database [root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database [root@localhost ~]# restorecon -Rv /home/database restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
3)第 3 步:设置SELinux 服务与策略,使其允许通过Samba 服务程序访问普通用户家目录。执行getsebool 命令,筛选出所有与Samba 服务程序相关的SELinux 域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可:
[root@localhost ~]# getsebool -a |grep samba samba_create_home_dirs --> off samba_domain_controller --> off samba_enable_home_dirs --> off samba_export_all_ro --> off samba_export_all_rw --> off samba_load_libgfapi --> off samba_portmapper --> off samba_run_unconfined --> off samba_share_fusefs --> off samba_share_nfs --> off sanlock_use_samba --> off tmpreaper_use_samba --> off use_samba_home_dirs --> off virt_use_samba --> off [root@localhost ~]# setsebool -P samba_enable_home_dirs on
4)在Samba 服务程序的主配置文件中,根据上表 所提到的格式写入共享信息。在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备。
这两项如果在今后的工作中不需要,可以手动删除,这没有任何问题。
[root@localhost ~]# vim /etc/samba/smb.conf 1 [global] 2 workgroup = SAMBA 3 security = user 4 passdb backend = tdbsam 5 printing = cups 6 printcap name = cups 7 load printers = yes 8 cups options = raw 9 [homes] 10 comment = Home Directories 11 valid users = %S, %D%w%S 12 browseable = No 13 read only = No 14 inherit acls = Yes 15 [printers] 16 comment = All Printers 17 path = /var/tmp 18 printable = Yes 19 create mask = 0600 20 browseable = No 21 [print$] 22 comment = Printer Drivers 23 path = /var/lib/samba/drivers 24 write list = @printadmin root 25 force group = @printadmin 26 create mask = 0664 27 directory mask = 0775
5)Samba 服务程序的配置工作基本完毕。接下来重启smb 服务(Samba 服务程序在Linux 系统中的名字为smb)并清空iptables 防火墙,然后就可以检验配置效果了。
[root@localhost ~]# systemctl restart smb [root@localhost ~]# systemctl enable smb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. [root@localhost ~]# iptables -F [root@localhost ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
2.在Windows中访问samba共享
3.