Linux-samba服务总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lm236236/article/details/84435960

     CIFS是实现文件共享服务的一种文件系统,主要用于实现windows系统中的文件共 享,linux系统中用的比较少linux系统中利用CIFS文件系统实现文件共享,需要安装samba服务。它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由 Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行 在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。

SMB文件共享
用Internet 文件系统(CIFS)也称为服务器信是适用于MicrosoftWindows服务器和客户端的标准文件和打印机共享系统息块(SMB)
Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享
以支付宝为例,用户在注册帐号的时候其实是在很多台服务器随机注册的,但是这样的话不仅不稳定(数据一旦丢失,将永久丢失),而且不安全(与外网连接,容易被攻击),所以其实是一个安全的服务器共享到其他很多台与外网连接的服务器。这就用到了文件共享。

一、配置samba服务:

环境:
1.reset server
2.配置主机名为shareserver.westos.com  共享服务端
3.配置IP为真机IP加100
4.init 3  关闭图形界面,节省内存
5.配置yum
6.reset desktop
7.配置desktop的IP为真机IP加200
8.更改主机名为client.westos.com    客户端
9.配置yum
10.init 3   关闭图形界面,节省内存

共享服务端:
1.yum install samba samba-common samba-client -y   安装samba服务,samba-common是共享服务端安装,client在客户测试端安装,此时是为了方便测试,所以在共享服务端也安装了samba-client,这不是必要的


2.火墙设置:
  systemctl stop firewalld
  systemctl disable firewalld


3.selinux设置
  setenforce 0 将内核级火墙改为警告


4.创建用户用于登陆,注意:用户必须在共享服务端本机。
  useradd liming
5.将liming用户添加到smb服务中
  smbpasswd -a  liming
6.如果想查看是否成功添加:
   pdbedit -L

删除用户:pdbedit -x username
6.开启smb服务
  systemctl start smb

Linux客户测试端:
1.给客户端安装smb服务:yum install samba-client.x86_64 -y


2.匿名登陆测试:   smbclient -L //172.25.75.100


3.用户登陆测试:     smbclient -L //172.25.75.100 -U liming,可以发现,多出来一个共享目录liming


4.用户登陆后进入共享目录测试:smbclient //172.25.75.100/liming -U liming     liming是共享目录
  登陆目录后可以ls查看,也可删除文件,但是不能创建文件。


5.以挂载的方式操作共享目录:mount -o username=liming,password=redhat //172.25.75.100/liming /mnt
  对/mnt操作也就是间接对服务端共享目录/home/liming操作,例如:在客户测试端的/mnt中创建文件,在共享服务端进入/home/liming可以查看创建的文件。

Windows客户端测试:
在Windows搜索栏输入:\\172.25.254.116  此时,会弹出界面,需要输入smb服务添加的用户名和密码,这样就可以看见共享文件了,如果想要在Windows下清除samba用户的登陆状态:在Windows搜索栏输入cmd --> 输入net use * /del /y  命令就可以注销了。

这个测试做起来有点小麻烦,因为我的linux系统下没有windows的虚拟机,所以我借了室友的电脑,用双绞线连起来,然后查看了他的IP(windows下查看IP命令为ipconfig,他的IP为192.168.1.10),然后再把我的真机IP改为和他的IP在同一网段(192.168.1.20),共享服务器端IP当然也需要改(192.168.1.120),然后在windows电脑上按win+r键进入运行,在运行窗口输入 \\192.168.1.120就可以进入了。如果不能登陆,首先,查看是否可以ping通,其次,查看共享服务器端的服务是否开启,最后,查看防火墙是否关闭,selinux是否为警告模式

 

 

二、selinux为强制状态时,如何查看samba共享服务文件

1.getsebool -a | grep samba  查看所有有关samba的selinux服务允许的状态
2.如果没有允许:setsebool -P samba_enable_home_dirs on 使samba访问家目录被允许


测试:
1.在samba_enable_home_dirs为off的情况下测试
  smbclient  //192.168.1.120/liming -U liming


2.在samba_enable_home_dirs为on的情况下测试
  smbclient  //192.168.1.120/liming -U liming

 

三、samba域名更改

默认的域名为MYGROUP   Domain=[MYGROUP],如果需要更改,可以进入/etc/samba/smb.conf配置文件修改89行为自己想要的域名。例如:workgroup = WESTOS
测试:
smbclient -L //172.25.254.116 -U westos  查看域名

四、samba访问控制

白名单(允许共享):
例如:在配置文件/etc/samba/smb.conf任意一行的位置写:
hosts allow = 192.168.1.220   只允许192.168.1.220主机访问共享文件
测试:分别在120和220客户端测试能否登陆

客户端120:

客户端220:

黑名单(不允许共享)
例如:在配置文件/etc/samba/smb.conf任意一行的位置写:
hosts deny = 192.168.1.220     不允许220客户端访问共享文件

注意黑名单与白名单的冲突问题,如果黑名单与白名单都存在一个IP,那么参考白名单的作用,忽略黑名单的作用,白名单大于黑名单

五、共享目录:

共享系统目录:例如/mnt
1.vim /etc/samba/smb.conf进入配置文件,在最后一行写入:
   [mnt]  共享名称,用于登陆,可以任意
   comment = mnt directory  说明,可以任意
   path = /mnt   真正的需要共享的目录,不可以任意。


2.重启服务 systemctl restart smb
3.重启服务后,在selinux为强制状态下,有的系统目录可以共享,有的系统目录不能被共享,例如/mnt/目录就不能共享,因此,还需要打开selinux的服务允许
  samba_export_all_ro   只读允许,  samba_export_all_rw  读写允许。
 setsebool -P samba_export_all_ro on   只读开启允许


4.smbclient //172.25.254.116/mnt -U liming  登陆测试,此时的mnt与共享名称相同

没开启只读允许的测试:

开启只读允许后的测试:


六、共享自己创建的目录:

1.创建目录,例如:mkdir /westos
2.vim /etc/samba/smb.conf进入配置文件,在最后一行写入:
  [westos]  共享名称,用于登陆,可以任意
  comment = westos's directory  说明,可以任意
  path = /westos   真正的需要共享的目录,不可以任意。


3.重启服务  systemctl restart smb
4.如果selinux在强制状态下,且没有打开服务允许,则不能打开共享目录
  如果selinux在强制状态下,且打开服务允许,则可以打开共享目录,但是系统安全级别会降低
  因此,我们只需更改创建的目录的安全上下文即可打开共享目录,这样不会使系统安全级别降低
  semanage fcontext -a -t samba_share_t '/westos(/.*)?'
  restorecon -RvvF /westos/
或者   chcon -t samba_share_t /westos/ 也可更改上下文。


5.smbclient //192.168.1.120/westos -U liming  登陆测试,此时的linux与共享名称相同

 

七、常规配置/etc/samba/smb.conf

对于自己创建的目录共享:
为了实验能够顺利进行,给/westos满权限(系统可写) chmod 777 /westos

下面的命令都是需要写在配置文件的共享文件名[westos]下。
writable = yes    允许可写(服务可写),服务可写不等于系统可写。

没有writable = yes时,默认服务不可写,测试如下:

有writable = yes时,默认服务可写,测试如下:


write list = @liming  只允许liming组的用户可写   +和@表示组    没有这一句的话表示所有人都可写

测试:用非liming组的用户登陆,然后再将该用户的所有组改为liming登陆

更改所有组前:

更改所有组后:


valid users = +student   只允许student组的用户登陆   +和@表示组

测试:

更改前:

更改后:


browseable = yes  是否可以发现共享文件,默认不写表示可以发现。

测试:

当browseable = no时,不可以发现共享目录westos:

当不写入这条命令或者browseable = yes时,可以发现共享目录westos:


admin users = student student用户上传的文件,文件所有人为root  上传文件只能上传当前路径下的文件, !ls可以看到当前路径的文件

测试:

当不写此命令时客户端向共享目录上传文件:

当写入此命令后,客户端向共享目录上传文件:


guest ok =yes   匿名用户可以登陆,默认不写表示不可以登陆
map to guest = bad user    guest的描述,所有的guest都是不合法的用户。不是不需要写的。

测试:

若没有写guest ok =yes或者guest ok =no表示匿名用户不可以登陆

若guest ok =yes表示匿名用户可以登陆

如果出现错误:
1.查看创建的目录是否有写的权限
2.是否将用户加入samba
3.是否配置冲突

 


八、客户端samba锁(在客户端下)

针对的问题:当mount -o username=liming,password=redhat //192.168.1.120/westos /mnt   其他用户也都能访问共享文件,因此,没有安全性。


客户端samba锁就是限制没有通过samba认证的用户不能查看挂载
在客户端下:
1.yum install cifs-utils -y    安装认证插件


2.vim /root/smbpass  此文件用来验证挂载人的身份
  username=westos    用户
  password=redhat    密码
3.chmod 600 /root/smbpass   只允许文件所有人对该文件进行操作,提高系统安全性
4.mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.1.120/westos /mnt
              本次挂载的认证        挂载机制(用ntlmssp程序验证)     挂载之后的身份

测试:切换用户之后,无法查看/mnt下内容


5.普通用户需要用密码验证:
su - student
cifscreds add -u liming 192.168.1.120   表示普通用户以共享服务器端的westos用户身份登陆
password:  输入密码
cd /mnt/ --> ls  可以查看


6.cifscreds clearall  如果输入密码错误,系统会记住用户,所以需要执行此命令来清除记录
开机自动挂载:
vim /etc/fstab
//172.25.254.116/linux  /mnt cifs defaults,credentials=/root/smbpass,sec=ntlmssp,multiuser   0  0

展开阅读全文

没有更多推荐了,返回首页