如何配置samba客户端挂载?

Samba

1 前言

企业也环境中常常使用到Linux作为客户端挂载samba的共享(有时候共享由Windows服务器提供),本章对Linux作为客户端挂载进行一次总结。

2 最佳实践

2.1 环境信息

samba服务器端(windows)
ipaddress=10.168.0.49
hostname=sambaSer.cmdschool.org

samba客户端(linux)
ipaddress=10.168.0.8
hostname=sambaCli.cmdschool.org

2.2 配置samba服务器端

In sambaSer,

2.2.1 增加用户


由于Windows的配置所见即所得,这里不详述,请按如下要求配置,
– 增加名称为smbfs的用户
– 重点在于隶属于要全部清除(安全考量,拿到密码也登录不了系统)。
– 为smbfs增加密码(本文设置密码为“smbpwd”)

2.2.2 文件夹授权


如上图所示,
– 配置共享目录-名称为“web”存放应用程序
– 授予smbfs完全控制的权限(安全起见建议去掉完全控制的权限)

2.2.3 共享授权


如上图所示,
授予smbfs读写权限

2.3 配置samba客户端

In sambaCli,

2.3.1 安装客户端所需的软件包

yum -y install cifs-utils

2.3.2 手动测试挂载

mount -t cifs -o domain=sambaSer,username=smbfs,password=smbpwd //10.168.0.49/web /mnt/

如果是CentOS 6.x系统,请使用如下命令执行,

mount -t cifs -o username=smbfs%smbpwd //10.168.0.49/web /mnt/

测试普通用户的访问权限

useradd user1
su - user1
cd /mnt

如果是CentOS 6.x可能会被拒绝进入挂载的目录,我们来测试普通用户的写入权限,

cd /mnt
touch test1.txt

可见如下提示,

touch: cannot touch ‘test1.txt’: Permission denied

2.3.3 手动测试指定挂载权限

mount -t cifs -o domain=sambaSer,username=smbfs,password=smbpwd,dir_mode=0777,file_mode=0777 //10.168.0.49/web /mnt/

如果是CentOS 6.x系统,请使用如下命令执行,

mount -t cifs -o username=smbfs%smbpwd,dir_mode=0777,file_mode=0777 //10.168.0.49/web /mnt/

我们再来测试普通用户的写入权限,

su - user1
cd /mnt
touch test1.txt
ls -l test1.txt

可见如下显示,

total 0
-rwxrwxrwx 1 root root 0 Nov 27 11:02 test1.txt

以上方式从授权角度考虑觉得权限过大,不符合安全规范,记得清理测试文件,

rm test1.txt

2.3.4 手动测试指定UID和GID挂载

id user1

可见如下显示,

uid=1000(user1) gid=1000(user1) groups=1000(user1)

根据以上的UID和GID号码,我们制定UID和GID挂载,

mount -t cifs -o domain=sambaSer,username=smbfs,password=smbpwd,uid=1000,gid=1000 //10.168.0.49/web /mnt/

如果是CentOS 6.x系统,请使用如下命令执行,

mount -t cifs -o username=smbfs%smbpwd,uid=1000,gid=1000 //10.168.0.49/web /mnt/

我们测试授权用户的权限,

su - user1
cd /mnt
touch test1.txt

我们测试非授权用户的权限,

useradd user2
su - user2
cd /mnt
touch test2.txt

可见如下提示,

touch: cannot touch ‘test2.txt’: Permission denied

2.4 配置samba客户端的自动挂载

2.4.1 安装所需的软件包

yum -y install autofs

2.4.2 启动服务和配置服务开机启动

systemctl start autofs.service
systemctl enable autofs.service

如果是CentOS 6.x请使用如下命令,

/etc/init.d/autofs start
chkconfig autofs on

2.4.3 配置父挂载点

vim /etc/auto.master

加入如下配置,

/serWebRoot /etc/auto.web

注:/serWebRoot目录autofs会自动创建,请不要手动创建(注意后面不带”/”)

2.4.4 配置子挂载点

vim /etc/auto.web

加入如下配置,

www.cmdschool.org -fstype=cifs,rw,noperm,domain=sambaSer,username=smbfs,password=smbpwd,uid=1000,gid=1000 ://10.168.0.49/web/www.cmdschool.org

以上假设samba服务器端有个文件夹叫“www.cmdschool.org”,另外也可以选择把密码写到文件,

www.cmdschool.org -fstype=cifs,rw,noperm,credentials=/root/.cifsauth,uid=1000,gid=1000 ://10.168.0.49/web/www.cmdschool.org

可通过以下命令生成配置文件,

echo 'domain=sambaSer' > ~/.cifsauth
echo 'username=smbfs' >> ~/.cifsauth
echo 'password=smbpwd' >> ~/.cifsauth

前面的配置我们指定用户只能在samba客户端访问“www.cmdschool.org”文件夹,如果不想限制,可使用通配符的写法,

* -fstype=cifs,domain=sambaSer,username=smbfs,password=smbpwd,uid=1000,gid=1000 ://10.168.0.49/web/&

2.4.5 重启服务使配置生效

systemctl restart autofs.service

CentOS 6.x请使用如下命令重启,

/etc/init.d/autofs restart

2.4.6 手动测试自动挂载

su - user1
cd /serWebRoot/www.cmdschool.org

2.4.7 配置用户登录自动挂载

vim /home/user1/.bashrc

加入如下配置,

# auto mount
if [ -d /serWebRoot ]; then
        cd /serWebRoot/www.cmdschool.org
fi

测试用户登录自动挂载,

su - user1
ls /serWebRoot/

可见如下显示,

www.cmdschool.org

参阅文档
========================
https://blog.51cto.com/cmdschool/1717865
http://www.jinbuguo.com/man/mount.cifs.html

没有评论

发表回复

Samba
如何设置Samba的日志级别?

1 前言 一个问题,一篇文章,一出故事。 笔者遇到生产中的客户端连接服务器需要开启调试日志,于是整理 …

Samba
如何让Samba兼容XP系统?

1 前言 一个问题,一篇文章,一出故事。 笔者遇到生产的XP无法连接高版本samba服务事宜,于是整 …

Samba
如何无交互静默创建samba密码?

1 前言 一个问题,一篇文章,一出故事。 笔者需要无交互地设置samba的密码,于是整理此文。 2 …