第八周

文件服务器(Samba)

Samba服务主要提供什么功能

  • 文件共享服务
  • 文件同步服务
  • 文件和打印共享服务

Samba服务的主配置文件在哪

  • /usr/lib/smb.conf
  • /etc/samba/samba.conf
  • /etc/samba/smb.conf

项目8.1基本文件共享

项目背景
你是某公司的网络管理员,公司的一台文件服务器运行RHEL7.5.公司大部分员工的桌面电脑运行Windows系统。请配置服务器实现如下目标

项目要求
为用户创建只读共享 /share/download

  • 共享名为“下载区”
  • 该共享下的资源公户只可下载
    为用户创建可写共享 /share/upload
  • 共享名为“上传区”
  • 该共享下的资源用户即可上传也可下载
  • 用户只能管理(删除、修改、更名)自己上传的资源

项目8.2部门级文件服务器

项目背景
公司有一Linux服务器作为文件服务器,公司内部客户端主要是由Windows+Linux组成的异构操作系统平台,作为管理员的你现需解决跨平台文件共享问题,具体需求如下:

项目要求
增加用户与用户组

  • 组:employees 用户:employee1,employee2,employee3
  • 组:managers 用户:manager1,manager2,manager3
  • 组: projects 用户:project1,project2,project3
  • 组:sales 用户:sale1,sale2,sale3

功能要求

  • /share/目录为共享文件的根目录,要求为所有内网用户均能访问;
  • /share/public/目录作为发布公共信息使用,要求所有用户拥有下载权限;
  • /share/private/目录作为公司内部资源发布使用,要求managers(rwx),projects(rx),slaes(rx),employee1(rx)
  • /share/project/目录发布工程信息,要求managers(rwx),projects(rwx),sale1(rx)

背景知识

访问Samba服务器

  • 从Windows客户端访问

    • UNC路径
    • \服务器IP
  • 从Linux客户端访问

    • `mount.cifs -o user=username,pass=password //ip/ 共享名 /挂载点

实现简单Samba共享

配置Samba服务器

安装

yum install samba

修改/etc/samba/smb.conf

重启服务systemctl start smb.service

添加Samba用户

  1. smbpasswd -a username
  2. pdbedit -a username
  3. pdbedit -L

注意firewall、SELinux(可以暂时关闭)

smb.conf修改范例

user级安全——只读共享

修改/etc/samba/smb.conf

注意:security = user \RHEL不再支持share级别

Eg:

  1. [public]
  2. path = /myshare/download
  3. writable = no
  4. public = yes

systemctl restart smb.service

在Windows运行中键入\Server_IP验证

  • 更换用户连接时需要运行net use * /d /y

user级安全——可读可写共享

修改/etc/samba/smb.conf

Eg:

  1. [incoming]
  2. path = /myshare/upload
  3. writable = yes
  4. public = yes

systemctl restart smb.service

在Windows运行中键入\Server_IP验证

注意:Linux文件权限中其他用户是否可写

ACL权限

设置ACL

  • 针对用户

    • setfacl -m u:username:rwx /file
  • 针对组

    • setfacl -m g:groupname:rwx /file

删除ACL

  • setfacl -x u:username /file

查看ACL

  • getfacl

实施步骤:批量添加用户

  1. #!/bin/bash
  2. groupadd ${1}s
  3. for i in {1..3}
  4. do
  5. useradd -s /sbin/nologin -g ${1}s ${1}${i}
  6. echo -e "123\n123" | smbpasswd -s -a ${1}${i} //pdbedit -t -a
  7. done

函数方法的实现参考

  1. #!/bin/bash
  2. function function_adduser(){
  3. groupadd ${1}s
  4. for i in {1..3}
  5. do
  6. useradd -s /sbin/nologin -g ${1}s ${1}${i}
  7. echo -e "123\n123" | smbpasswd -s -a ${1}${i}
  8. done
  9. }
  10. for name in {employee,project,sale,manager}
  11. do
  12. function_adduser ${name}
  13. done

实施步骤:文件权限配置

  1. mkdir /share/{public,private,project} -p
  2. setfacl -m g:managers:rwx,g:projects:rx,g:sales:rx,u:employee1:rx /share/private/
  3. setfacl -m g:managers:rwx,g:projects:rwx,u:sale1:rx /share/project/
  4. chmod o-x /share/{project,private}

实施步骤:配置服务环境

相关服务配置

systemctl enable --now smb.service

防火墙配置

firewall-cmd --add-service=samba --permanent

firewall-cmd --reload

SELinux配置

  1. chcon -R -t samba_share_t /myshare/ //临时修改
  2. semanage fcontect -a -t samba_share_t "/myshare(/.*)?"
  3. restorecon -Rv /myshare/
  4. setsebool -P samba_enable_home_dirs on

拓展:实现Linux Samba Client

配置Samba客户端

  • Windows端创建共享(Administrator 命令解释器)
  1. net user hcz01 123 /add
  2. mkdir d:\\share
  3. echo hello > d:\\share\\hello.txt
  4. net share mytest=d:\\share /grant:hcz01,CHANGE
  • 安装Linux cifs工具
  1. yum provides mount.cifs
  2. yum install cifs-utils
  • 从Linux连接Windows共享
  1. mount.cifs -o user=qinwen01,pass=123 //ip/mytest /media