samba 文件共享(共享文件夹)

完成了windows和linux的文件共享


配置SMB共享

   Samba软件项目

用途:为客户机提供共享使用的文件夹

协议:SMB(TCP 139),CIFS(TCP 445)

    所需软件包:samba

    系统服务:smb


在RHCE7 中有这样一道题:

搭建基本的samba服务 

通过 Samba 发布共享目录

在 system1 通过 SMB 共享/common 目录:

您的 SMB 服务器必须是 STAFF 工作组的一个成员

共享名必须为 common

只有 example.com 域内的客户端可以访问 common 共享

common 必须是可以浏览的

用户 harry 必须能够读取共享中的内容,如果需要的话,验证的密码是 migwhisk


     1.安装samba软件包

[root@system1 ~]# yum -y install samba

     2.创建samba的共享帐号 与系统用户名相同 但有独立密码

使用pdbedit管理工具

添加用户:pdbedit -a 用户名

查询用户:pdbedit -L [用户名]

删除用户:pdbedit -x 用户名

[root@system1 ~]# useradd -s /sbin/nologin harry#防止用户直接登陆操作系统

[root@system1 ~]# grep 'harry' /etc/passwd

harry:x:1003:1004::/home/harry:/sbin/nologin

[root@system1 ~]# pdbedit -a harry#添加Samba用户

[root@system1 ~]# pdbedit -L#查询所以Samba用户

harry:1003:



     3.修改配置文件及参数

文件路径:/etc/samba/smb.conf

[root@system1 ~]# vim /etc/samba/smb.conf 

...

workgroup = STAFF#89行 选改工作组 现在都不用了

...

[common]#321行 共享名

 path = /common# 共享的实际路径

...

[root@system1 ~]# mkdir /common

[root@system1 ~]# echo 'test' > /common/tset.txt

     4.重启服务,并设置开机自启

[root@system1 ~]# systemctl restart smb

[root@system1 ~]# systemctl enable smb.service 


      5.测试并访问

使用smbclient测试(一般直接挂载 不用装包)

所需软件包:samba-client

列出共享资源

smbclient -L 服务器地址

连接到共享文件夹

smbclient -U 用户名 //服务器地址/共享名



[root@system2 ~]# yum -y install samba-client.x86_64 


[root@system2 ~]# smbclient -L //172.25.0.11

 Enter root's password: 

 Anonymous login successful

 Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]


    Sharename       Type      Comment

---------       ----      -------

common #共享名    Disk #共享类型      

IPC$            IPC       IPC Service (Samba Server Version 4.1.1)

 Anonymous login successful

 Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]


Server               Comment

---------            -------


Workgroup            Master

---------            -------


[root@system2 ~]# smbclient -U harry //172.25.0.11/common

Enter harry's password:  #这里输入密码

Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]

smb: \> ls

NT_STATUS_ACCESS_DENIED listing \*#不能访问


    6.SELinux: 布尔值(功能的开关)

            具体关于SELinux的功能介绍 请看 :  https://blog.51cto.com/13558754/2058355


getsebool 查看SELinux开关

setsebool 控制SELinux开关

需要加 -P 选项才能实现永久设置 (内存太小会死机)


[root@system1 ~]# getsebool -a | grep samba  查看

samba_create_home_dirs --> off

samba_domain_controller --> off

samba_enable_home_dirs --> off

samba_export_all_ro --> off     #只读

samba_export_all_rw --> off#

samba_portmapper --> off

samba_run_unconfined --> off

samba_share_fusefs --> off

samba_share_nfs --> off

sanlock_use_samba --> off

use_samba_home_dirs --> off

virt_sandbox_use_samba --> off

virt_use_samba --> off


[root@system1 ~]# setsebool -P samba_export_all_ro=on

[root@system1 ~]#  getsebool -a | grep samba_export_all_ro 

samba_export_all_ro --> on

[root@system2 ~]# smbclient -U harry //172.25.0.11/common

Enter harry's password: 

Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]

smb: \> ls#可以成功显示配置文件

  .                                   D        0  Mon Nov  6 10:43:17 2017

  ..                                  D        0  Mon Nov  6 10:42:56 2017

  tset.txt                            N        5  Mon Nov  6 10:43:17 2017


40913 blocks of size 262144. 28492 blocks available


    7.客户端访问点

安装软件包cifs-utils

[root@system2 ~]# yum -y install cifs-utils.x86_64 

修改/etc/fstab

[root@system2 ~]# mkdir /mnt/samba/

[root@system2 ~]# vim /etc/fstab

//172.25.0.11/common /mnt/samba cifs username=harry,password=123,_netdev 0 0

#_netdev 先启动网络 在完成挂载

验证 

[root@system2 ~]# mount -a

[root@system2 ~]# df -h

文件系统              容量  已用  可用 已用% 挂载点

/dev/vda1              10G  3.1G  7.0G   31% /

devtmpfs              906M     0  906M    0% /dev

tmpfs                 921M   80K  921M    1% /dev/shm

tmpfs                 921M   17M  904M    2% /run

tmpfs                 921M     0  921M    0% /sys/fs/cgroup

//172.25.0.11/common   10G  3.1G  7.0G   31% /mnt/samba


在RHCE7中还有这样的一道题

配置多用户Samba挂载

在 system1 通过 SMB 共享目录/devops,并满足以下要求:

共享名为 devops

共享目录 devops 只能被 example.com 域中的客户端使用

共享目录 devops 必须可以被浏览

用户 kenji 必须能以读的方式访问此共享,该问密码是 atenorth

用户 chihiro 必须能以读写的方式访问此共享,访问密码是 atenorth

此共享永久挂载在 system2.example.com 上的/mnt/dev 目录,并使用用户 kenji 作为认证。任何用户可以通过用户 chihiro 来临时获取写的权限

为了方便理解 将这到题目分成两部分进行实验



1) chihiro 读写的方式访问此共享

1.创建samba的共享帐号

[root@system1 ~]# useradd -s /sbin/nologin kenji

[root@system1 ~]# useradd -s /sbin/nologin chihiro

[root@system1 ~]# pdbedit -a kenji

[root@system1 ~]# pdbedit -a chihiro

[root@system1 ~]# pdbedit -L#查询所以Samba用户

harry:1003:

chihiro:1005:

kenji:1004:

2.修改配置文件

 [root@system1 ~]# vim /etc/samba/smb.conf 

   ...

  [devops]

    path = /devops

    write list = chihiro

   ...

 [root@system1 ~]# mkdir /devops

   [root@system1 ~]# echo dasfasd > /devops/123.txt

3.重启smb服务

   [root@system1 ~]# systemctl restart smb.service 

4.客户端验证

 [root@system2 ~]# smbclient -L //172.25.0.11

  Enter root's password: 

  Anonymous login successful

  Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]


Sharename       Type      Comment

 ---------       ----          -------

common          Disk      

devops          Disk      

IPC$            IPC       IPC Service (Samba Server Version 4.1.1)

 Anonymous login successful

 Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]


 Server               Comment

  ---------                 -------


 Workgroup            Master

  ---------                 -------

 

5.客户端挂载

 [root@system2 ~]# vim /etc/fstab

   ...

  //172.25.0.11/devops /mnt/dev cifs username=chihiro,password=atenorth,_netdev 0 0

   ...

 [root@system2 ~]# mkdir /mnt/dev

 [root@system2 ~]# mount -a

 [root@system2 ~]# df -h

  文件系统              容量  已用  可用 已用% 挂载点

 /dev/vda1              10G  3.1G  7.0G   31% /

 devtmpfs              906M     0  906M    0% /dev

 tmpfs                 921M   80K  921M    1% /dev/shm

 tmpfs                 921M   17M  904M    2% /run

 tmpfs                 921M     0  921M    0% /sys/fs/cgroup

 //172.25.0.11/common   10G  3.1G  7.0G   31% /mnt/samba

 //172.25.0.11/devops   10G  3.1G  7.0G   31% /mnt/dev


实现读写操作

 [root@system1 ~]# setfacl -m u:chihiro:rwx /devops/#开启目录本地权限

 [root@system1 ~]# getfacl /devops/

  getfacl: Removing leading '/' from absolute path names

  # file: devops/

  # owner: root

  # group: root

  user::rwx

  user:chihiro:rwx

  group::r-x

  mask::rwx

  other::r-x

 [root@system1 ~]# setsebool samba_export_all_rw=on#开启SELinux samba 读写功能

 [root@system1 ~]# getsebool -a | grep 'samba_export_all_rw'

  samba_export_all_rw --> on

 [root@system1 ~]# systemctl restart smb.service 




2) multiuser 多用户访问

管理员只需要作一次挂载

客户端在访问挂载点时,若需要不同权限,可以临时切换为新的共享用户

multiuser  ,提供对客户端多个用户身份的区分支持

sec=ntlmssp ,提供NT局域网管理安区支持

[root@system2 ~]# vim /etc/fstab 

//172.25.0.11/devops /mnt/dev cifs username=kenji,password=123,_netdev,multiuser,sec=ntlmssp 0 0

[root@system2 ~]# umount /mnt/dev/

[root@system2 ~]# mount -a

[root@system2 ~]# df -h

文件系统              容量  已用  可用 已用% 挂载点

/dev/vda1              10G  3.1G  7.0G   31% /

devtmpfs              906M     0  906M    0% /dev

tmpfs                 921M   80K  921M    1% /dev/shm

tmpfs                 921M   17M  904M    2% /run

tmpfs                 921M     0  921M    0% /sys/fs/cgroup

//172.25.0.11/common   10G  3.1G  7.0G   31% /mnt/samba

//172.25.0.11/devops   10G  3.1G  7.0G   31% /mnt/dev

 

[student@system2 /]$ cifscreds add -u chihiro 172.25.0.11

[student@system2 /]$ cd /mnt/dev/

[student@system2 dev]$ touch abc.txt

[student@system2 dev]$ ls

123.txt  abc.txt


扩展 

在windows操作系统中如果想要使用samba

关闭防火墙

运行----> 输入\\172.25.0.11 ----->输入上面建立的用户名和密码-----> 进入 从而实现windows 和Linux 文件共享