**************************************************************
1.初步说明
我有一个全新安装的CentOS7服务器,我将在其上安装samba服务。当然,需要有一台Windows机器来检查必须可以通过CentOS7服务器访问的samba服务。我的CentOS7服务器的主机名为10.191.142.16
注意:
- Windows计算机必须位于同一工作组中。要检查Windows机器中的值,请在cmd提示符下运行命令
net config workstation
它会是这样的:
您的Windows机器必须与CentOS 7.0服务器中的工作站域相同,即在我的情况下是WORKGROUP。
- 要使Windows机器在Windows中可访问,请按以下步骤操作。在运行终端中,添加服务器IP地址的条目:
notepad C:\Windows\System32\drivers\etc\hosts
就我而言,就像这样,只需保存值。
10.191.142.16 SambaShare SambaShare
2.匿名Samba共享
首先,我将解释使用匿名共享安装Samba的方法。要安装Samba软件,请运行:
[root@VMWare ~]# yum install samba samba-client.x86_64 samba-common-tools.x86_64
它将从CentOS软件库安装当前的Samba版本。
现在进行配置samba,编辑文件/etc/samba/smb.conf。 在更改配置文件之前,我们先将原来的文件备份成 /etc/samba/smb.conf.bak
[root@VMWare ~]# cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
因为我想从一个空文件开始,我将使用cat命令清空smb.conf。这比删除vi中的所有行更快。
[root@VMWare ~]# cat /dev/null > /etc/samba/smb.conf
然后用vim命令进行编辑smb.conf配置文件
[root@VMWare ~]# vim /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = CentOS
security = user
map to guest = bad user
dns proxy = no
#================ Share Definitions================
[Public]
path = /mnt/Samba.Share/01.Public
browsable =yes
writable = yes
guest ok = yes
read only = no
以上编辑完成后保存退出并将服务加入开机启动项及重启服务:
[root@VMWare ~]# systemctl enable smb.service nmb.service && \
systemctl restart smb.service nmb.service
看一下服务器的防火墙服务是否开启:
[root@SoftBase samba]# systemctl status firewalld.service
可以看到Firewall是关闭的状态,如果是开启的话是显示如此:
如果防火墙是启动状态,CentOS7的FireWall防火墙将会阻止samba的访问,为了能让samba程序正常运行,我们运行以下命令
firewall-cmd --permanent --zone=public --add-service=samba
[root@SoftBase samba]# firewall-cmd --permanent --zone=public --add-service=samba
Finally, reload the firewall to apply the changes./最后,重新加载防火墙以应用更改。
[root@SoftBase samba]# firewall-cmd --reload
Now you can access the Centos 7 share in Windows as follows. Go to the Run prompt and type \\SambaShare,或者直接用IP替代
\\10.191.142.16
从Windows机器上,在尝试打开文件夹时,却提示没有权限
下面我们来检查一下文件夹的共享权限:
[root@VMWare /]# cd /mnt && ll
total 96
drwxr-xr-x 2 root root 10 Apr 22 06:44 Samba.Share
可以看到文件夹的权限没有问题,但是所属用户及用户组却都是root,我们需要修改一下相应权限及所属用户信息:
[root@VMWare mnt]# chown -Rf nobody:nobody Samba.Share/
并且,我们需要允许SELinux的samba配置如下:
[root@VMWare mnt]# chcon -t samba_share_t Samba.Share/
然后再通过Windows访问试一下,如下图,是可以正常打开并且有相应权限的。
**************************************************************
3.安全的samba服务器
我将创建一个组GKFZ和用户admin来访问具有适当身份验证的samba服务器,共享的文件夹为:/mnt/Samba.Share/002.Private
[root@VMWare Samba.Share]# groupadd GKFZ && useradd admin -G GKFZ
创建完用户后进行密码设置:
[root@VMWare Samba.Share]# smbpasswd -a admin
New SMB password:
Retype new SMB password:
Added user admin.
[root@VMWare Samba.Share]#
然后对想要共享的文件夹进行相应权限及SELinux设置:
由于我挂载的是NTFS类型的分区,所以在用chmod 及chown修改相应权限时不起作用。只能通过修改/etc/fstab文件里增加相应参数进行修改。(具体可以参考:https://bbs.archlinuxcn.org/viewtopic.php?id=2806 及 https://blog.csdn.net/shendl/article/details/6291239 在此不多赘述)
我的fstab文件配置为:
/dev/sdb1 /mnt/sdb1 ntfs defaults,gid=keer,uid=kejianerbu,umask=000 0 0
1、查看用户的权限掩码
命令: umask
目录:最大权限是777,减去umask的后三位(022),该用户创建的目录权限即默认是755
文件:文件的权限必须为偶数。如果是奇数,则需-1变成偶数。777-022=755,每一位都-1变成偶数,即为644。
2、修改用户权限掩码
命令:umask *** ---临时生效
***可以是1-3位数,每一位的数值必须<= 7
3、修改默认umask
修改 .bash_profile 文件 ---永久生效
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
alias ls='ls -CF'
PS1='SZDATA_suheadof:$PWD> '; export PS1
umask 022 ###就是这个问题
SELinux设置如下:
可能还是跟我的Ntfs类型分区有关,暂时先不管他,继续往下走。
继续编辑samba的配置文件:
[root@VMWare Samba.Share]# vim /etc/samba/smb.conf
#新增以下内容
[Private]
path = /mnt/Samba.Share/02.Private
valid users = @admin
guest ok = no
writable = yes
browsable = yes
最后进行重启服务器测试配置文件:
[root@VMWare Samba.Share]# systemctl restart smb.service nmb.service
通过Windows系统访问试一下,可以看到游客是没有权限的,需要我们进行登录,输入帐号与密码:admin nerc登录成功。
在新建目录与文件时还是报错了。。
对两个目录进行权限配置:
[root@VMWare Samba.Share]# chmod -Rf 777 01.Public/
[root@VMWare Samba.Share]# chmod -Rf 777 02.Private/
再次尝试建立文件及目录测试正常
查看一下SELinux状态:
[root@VMWare Samba.Share]# cat /etc/selinux/config
因为我这是内网服务器,暂时先把SELinux给关掉了,如果是互联网服务器的话还是建议开启。。
[root@VMWare Samba.Share]# vim /etc/selinux/config
可以看到已经可以正常访问了。。。关于权限的设置,目前好像只能通过fstab文件挂载进行修改。。
暂时先到这里吧。。
评论区