Linux的cifs(samba)文件服务

简介:

一.samba提供cifs协议实现共享文件(主要用户Windows与Linux的网络文件系统)

1.SMB文件共享,通用Internal文件系统(CIFS)也称为服务器信息块(SMB),是适用于Microsoft Windows服务器和客户端的标准文件和打印机共享系统。

2.Samba服务器可用于将Linux文件系统作为CIFS / SMB网络文件共享进行共享,并将linux打印机作为CIFS / SMB打印机共享进行共享


二.安装环境

wKiom1mTAFnxefPIAABqx8s_bd4774.png

wKiom1mTAFrA83kxAAAn6rwFU_A470.png

wKioL1mTAFqzYdzHAAAtb_DG6d0441.png


Samba-common - Samba的支持文件

Samba-client - 客户端应用程序

Samba - 服务器应用程序


yum install samba samba-common samba-client -y

systemctl start smb  
systemctl enable smb  

三.添加smb用户

1.smb用户必须时本地用户
smbpasswd -a student
New SMB password:                    输入smb当前用户密码
Retype new SMB password:      确认密码

pdbedit -L                                      查看smb用户信息
pdbedit -x smb用户                      删除smb用户


wKiom1mTAQLw12U1AABTbF--tBQ025.png



2.以student登陆无法显示共享内容,主要是Selinux的开启无法正常访问

wKiom1mTAMHDw6UfAABWP5i3HxY195.png


在SElinux开启情况下,修改的sebool值,打开访问家目录权限,打开后可以访问

setsebool -P enable_samba_home_dirs  on     在selinux中设定smb用户可以访问自己的家目录


wKiom1mTAMLSHsjKAAGv4xorehY722.png



四.共享目录的基本设定


1.基本设置

编辑配置文件vim /etc/samba/smb.conf

workgroup = westos  工作组名称


[westos]  共享名称

comment =  对共享目录的描述
path = 共享目录的绝对路径

wKioL1mTAkfxLMk5AACQ2xgV1TU671.png


wKiom1mTAkjx3k_dAABdgqQaV7o593.png

smbclient -L //172.25.254.128 -U student                可看到所创建的共享目录

wKioL1mTAknwSDYCAADh6Fe3GpE494.png


2.当共享目录为用户自建立目录时,需要修改新建目录的上下文
semanage fcontext -a -t samba_share_t '目录名称(/.*)?'
restorecon -RvvF 目录名称


wKiom1mTA2ehbzomAAFs4M88K8c486.png

wKioL1mTA2jCf1xUAAC_53YkgpI012.png



3.当共享目录为系统建立目录,为了不影响修改上下文对别的服务影响,修改SElinux的sebool值
setsebool  -P samba_export_all_ro on     只读共享
setsebool  -P samba_export_all_rw on     读写共享


系统目录文CONFIG    /mnt

wKiom1mTA2iA4hFPAAAnmKVU5hU775.png

没有修改,无法看见文件

wKioL1mTA2mwfOk4AACzZWni6iA286.png


修改samba的读取权限后可以正常读取文件

wKioL1mTA2nRlGuAAADMgEYBn3I297.png


开启只读共享后:smbclient //172.25.254.128/CONFIG -U student

wKiom1mTBIOwGEQuAADKDU0TaPo715.png


五.samba的配置参数

1.匿名用户访问
guest ok = yes
map to guest = bad user    客户访问匿名

wKioL1mTBSHSF9ExAAAqljF9fYk922.png

wKiom1mTBSKzKe4dAAAw6XbYUAU109.png

wKiom1mTBSLRoBgKAAC5xHanhFA776.png


2.访问控制

hosts deny =      仅拒绝

拒绝128登陆

wKioL1mTBkXQ658IAAA_AtC1RtQ180.png

wKioL1mTBkSgR8Y5AABZP7HZtC8207.png


hosts allow =     仅允许

hosts allow =172.25.254.28,允许28登陆

wKiom1mTBkXhBKa6AAC9wYhDEDg223.png


valid users =                        当前共享的有效用户
valid users = student        当前共享的有效用户为student  

未添加共享的有效用户student ,无法访问

wKioL1mT_L2CcJznAAAqn74Pc6A205.png

wKiom1mTBkagU7gcAACLPNHnZv8585.png


编辑配置文件vim /etc/samba/smb.conf,添加共享有效用户后可以访问

wKioL1mTBkbyNM3LAAA8Y4X0xkw965.png

wKioL1mTB9DxCnTdAADxmWuyfcI273.png



valid users = @student    当前共享的有效用户为student组
valid users = +student      当前共享的有效用户为student 组

新建用户lee,属于student组,属于有效访问组的用户

wKiom1mTCD-wMpPYAAASQ4L64yU994.png

wKiom1mTCE2zU1_vAABep8iGaLQ843.png

编辑配置文件vim /etc/samba/smb.conf为+student后,lee用户可以访问

wKiom1mTB9Hzj6O2AAA_184TSJQ688.png

wKioL1mTB9HQGUkYAADu_SH57EQ976.png


3.读写控制
所有用户均可写
chmod o+w /mnt
setsebool -P samba_export_all_rw on
vim /etc/samba/smb.conf
writable = yes

服务端

wKioL1mUAK3TvIoIAAAq36Z0N5M485.png

wKioL1mUA2_yOry3AADHF8hg_vo869.png

wKioL1mTCh-hzNmFAAAXcN4nMgg088.png


mount -o username=student,password=123 //172.25.254.128/CONFIG /mnt/              

在客户端上以student身份将172.25.254.128/CONFIG挂载到/mnt上,测试可以写入

wKioL1mTwLmS0AlxAAE67TTTv_E099.png


4.设定指定用户可写
write list = student         可写用户

wKioL1mUASCQUCxTAAA14lZOQMA147.png

用student用户挂载进入到服务机可以有写权限

wKioL1mTzaHChNTPAAA4rK-a3Ss084.png

但用lee用户挂载进入到服务机可以没有写权限

wKioL1mT0byT_BHPAABkfYCZHN4311.png



write list = +student         可写用户组
write list = @student

修改配置文件为write list =+student 表示student的这个组的用户都可以有写权限

wKioL1mUAaiSoVEtAAA2L7MF7zE488.png

wKioL1mTzq6y6IkKAABQg5pCF2Y680.png

在客户机用lee用户挂载,lee用户属于student组的用户

wKioL1mTzxqyGCfUAABdAfq1qiM116.png


admin users = westos         共享的超级用户指定

在配置文件里设置共享的超级用户为lee

wKioL1mUAeiT9JfwAABCyGV5T3M138.png

在客户端用lee挂载

wKioL1mT1I7Ta1SnAADhULOK5R4716.png

之前创建文件所属人为lee,修改后为root

六.smb多用户挂载

1.在客户机上  yum install cifs-utils -y

wKioL1mT1dOBHrL3AAAuftPIRQw988.png


2.创建访问时所需的用户名密码

vim /root/westos
username=student
password=123

chmod 600 /root/westos   只有root能读

wKioL1mT1xLhI0cOAAAoID7-V2c764.png

wKioL1mT1uCAPOYbAAAh92X6XTI517.png


3.多用户挂载
mount -o credentials=/root/westos,multiuser,sec=ntlmssp //172.25.254.100/CONFIG /mnt/

credentials=/root/westos    指定挂载时所用到的用户文件
multiuser                               支持多用户认证
sec=ntlmssp                         认证方式为标准smb认证方式


wKioL1mT2bCBSZu_AAD66qhURM4504.png

4.测试

su -student
ls /mnt
ls: cannot access /mnt: Permission denied    因为没有作smb的认证所以无法访问smb共享
cifscreds add -u lee 172.25.254.128
Password:    smb用户lee的密码
ls /mnt 可以看到目录下的文件


cifscreds clear -u lee 172.25.254.128  清除认证后,用户lee无法访问


cifscreds add -u student 172.25.254.128  student认证后可以访问

 

wKioL1mT43qwttoLAAEFjqETgRk344.png




      本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1956589,如需转载请自行联系原作者







相关文章
|
16天前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
63 2
|
17天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
24 1
Linux 服务器下载百度网盘文件
|
10天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
10天前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
|
19天前
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
65 2
|
20天前
|
JSON Linux 网络安全
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
|
16天前
|
JavaScript Linux
Linux中和文件相关的操作
Linux中和文件相关的操作
24 0
|
19天前
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
27 0
|
20天前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
20天前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败