最近公司在组织一次linux的考试,做上层软件的我也报名参加了,对于没接触过linux的我也开始了学习之路,然而我并没有师傅可以带,就只好在网上学习了,看了各种博客各种贴吧,可感觉每个都不一样,结果越配越乱了。还好,最后和大神们交流一下,原来配置可以如此简单。
注:此配置为linux的基础,并无具体项目要求
Samba服务的用途:为了实现Window主机与Linux服务器之间的资源共享,Linux操作系统提供了 Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使 Linux 系统和Window系统之间能够实现互相通信。
本文所用虚拟机为VMware 12和Centos 7的Minimal版本;随后进行傻瓜式安装即可,由虚拟机进行磁盘分区等操作,待安装完成后重启虚拟机即可。下面为具体步骤:
由于我的是最新安装的虚拟机需要重新配置静态IP地址以连接Windows主机的网络(用NAT方式共享主机ip);
一、给Centos7配置网络连接
配置详情请见:
配置完网络后查看能不能连接网络,ping www.baidu.com,如果显示已连接就说明网络已通。
二、下载安装Samba服务器
如果忘记有没有安装过,可以先查询是否安装:
rpm -qa | grep samba
如果没有则直接进行安装:
yum -y install samba
看到complete!则说明安装成功;此时将samba服务放入开机启动:
systemctl enable samba
三、创建Samba服务器中用于共享的文件夹
在本机的根目录下创建名为develop的目录,并在目录下创建dell和lkk的目录;
1.要求dll用户(密码123456),可以对dell目录下的文件进行读、写、执行等操作。
2.要求lkk用户(密码345678),可以对lkk目录下的文件进行读、写、执行等操作。
3.dll用户不能访问lkk目录,lkk用户不能访问dell目录。
4.要求psy用户(密码456789)对dell目录和lkk目录只能是只读操作。
- 首先在根目录创建develop目录;
mkdir /develop
2.在develop下创建dell目录和lkk目录;
mkdir dell lkk
四、将dell目录和lkk目录配置到Samba的服务器中
在/etc/samba中会有Samba的配置文件,先进行备份;
cd /etc/samba #进入到samba目录中
cp smb.conf smb.conf~bak #将smb服务的配置文件进行拷贝,以免丢失信息
编辑smb.conf文件
vi smb.conf
按i对文件进行编辑
因为我们是要输入用户名密码才能访问文件,所以在 [global]中的security必须要是user(需要用户名密码才能访问),而share模式是匿名就可以访问。
而后配置共享文件夹:
[dell]
comment=dell Share #comment是对该共享的描述,可以是任意字符串。
path=/develop/dell #path用来指定共享目录的路径。
browseable=yes #browseable用来指定该共享是否可以浏览。
admin users=dll #admin users用来指定该共享的管理员(对该共享具有完全控制权限)。
valid users=dll,psy #valid users用来指定允许访问该共享资源的用户。
write list=dll #write list用来指定可以在该共享下写入文件的用户。
writeable=yes #writeable=yes是允许这个目录可写,是首要条件。
create mask=0755 #create mask 定义新创建的文件将允许哪些权限。(0代表八进制)
directory mask=0755 #directory mask 定义新创建的目录所允许的权限。
#755 权限代表本用户可读、写、执行;同用户组可读、可执行;其他用户可读、可执行。
[lkk] (此共享文件的配置同上)
comment=wwe Share
path=/develop/lkk
browseable=yes
admin users=lkk
valid users=lkk,psy
write list=lkk
writeable=yes
create mask=0755
directory mask=0755
按下:wq 便可以将此配置文件保存。此步骤便是将两个共享文件放在了Samba服务器端,接下来就是让Windows直接访问了。
首先,关闭系统的防火墙:
systemctl stop firewalld
禁止开机启动防火墙:
systemctl disable firewalld
关闭SELinux:(详情请看https://baike.baidu.com/item/SELinux/8865268?fr=aladdin)
setenforce 0
重启smb服务(每次改完配置文件一定要重启smb服务才可以的)
systemctl restart smb
到此步就可以去Windows下访问了,当然也可以在同一网段的其它电脑上登录,但会需要用户名密码。所以我们来创建在Centos7上创建Samba服务的用户名密码。
五、创建用户名密码,并给develop下的两个共享文件修改权限
1.先创建系统用户(根据上题创建)
useradd dll
useradd lkk
useradd psy
2.将这些用户加入到Samba用户组
smbpasswd -a dll #(接下来他会让你输入两次密码,看到Added user zhang就是添加成功了!)
smbpasswd -a lkk
smbpasswd -a psy
然后就可以去修改刚刚创建的两个共享文件夹的权限了;
据题分析:dll用户可以对dell共享文件进行读、写、执行操作;而psy(为其他用户)用户是对它只读操作。
由于我是用root用户登录的系统,所以在develop创建的文件都属于root用户,所以将dell共享文件夹的所属用户改为dll,同时修改权限为755;
chown -R dell/
同时也将此目录及以下的文件的权限改为755(也可以是o+rwx,g+rx,u+rx)
chmod -R 755 dell/
此时,上题中的1、2题已经解决了,dll用户和lkk用户分别可以访问dell目录和lkk目录。
而第3题也已经解决,因为在配置文件中的各自的【共享文件配置】的valid users就是各自可以访问文件夹的用户。dell文件夹没有配置lkk用户,而lkk【共享文件配置】中的valid users也没有配置dll用户,所以各自用户只能访问对应的共享文件。
而第4题也以解决,因为我们已将develop目录下的共享文件夹dell和lkk及目录下的文件权限设置为755,也就是其他用户访问文件夹只可以进行读和执行的操作,不能编辑及进行写的操作。
注:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
六、在自己的Windows上进行测试(也可在同段ip地址的电脑上进行测试)
方法一:
1.打开电脑的运行(可用快捷键win+r),输入//+centos设置的静态IP地址(例://192.168.5.166)
会弹出一个登录框,此时输入我们创建的samba服务的用户(dll和lkk、psy都可)尽可以进入到我们的Samba服务端里了,可以看到有两个共享文件夹。测试权限就可以了,如下图:
如果说想要切换用户登录,需要接映射连接清除
2.Windows下<<运行(win+r)<<cmd<<输入net use * /delete<<y(确认) 就可以清空连接了
可能会清的比较慢,需要等待。如下图:
然后重复第一步重新换个用户就可以了,挨个用户测试就好;
方法二:
右键我的电脑<<选择映射网络驱动器<<在文件夹的输入框里输入地址+访问的文件夹名称就可以(例:\\192.168.5.166\dell)<<输入用户名密码就可以进入目录了
此方法的好处不用使用cmd命令来清空映射连接,不用担心有延时。如下图:
输入用户名密码,就可以进入到对应目录里了,里面就是要共享的文件了。如下图:
到现在我们linux下创建的Samba服务器已经可以使用,可以使用它来联系我们的Windows和虚拟机下的linux进行传输文件等操作。
自己创作的第一篇博客,有什么错误,恳请大家指正。