文件服务器之二:SAMBA服务器

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

什么是SAMBA

  下图来自百度百科
  

  SAMBA的发展历史与名称的由来

  Samba是一款开源的文件共享软件,它基于SMB(Server Message Block,服务器消息块)协议,而且让Linux体系能够与Windows体系进行文件共享。Samba的开辟始于1991年,由其时还在读大学的Tidgwell为了解决Linux与Windows体系之间文件共享的问题而创建。他开辟了SMBServer服务程序,通过简单的配置,使得Linux与Windows体系之间的文件共享变得简单而便捷。然而,当他想要将该软件定名为"SMBServer"并注册商标时,商标局以"SMB是没有意义的字符"为由拒绝了申请。后来,Tidgwell查看词典时偶尔发现了“Samba”这个拉丁舞蹈的名字,而且它恰好包含了“SMB”。因此,Samba成为了这款软件的新名字,而且沿用至今。
  SAMBA常见的应用

     重要功能
   

  • 共享文件与打印机服务
  • 可以提供用户登岸SAMBA主机时的身份认证,以提供不同身份用户的个别数据
  • 可以进行Windows网络上的主机名剖析
  • 可以进行设备的共享
     SAMBA服务器的应用
   

  • 利用软件直接编辑WWW主机上面的网页数据
  • 做成可直接连接的文件服务器
  • 打印机服务器
  SAMBA服务器基础配置

     安装
   
  1. [root@localhost ~]# yum install -y samba samba-client
复制代码
    配置文件/etc/samba/smb.conf
   
  1. [root@localhost ~]# cat /etc/samba/smb.conf
  2. [global]
  3.         workgroup = SAMBA
  4.         security = user
  5.         passdb backend = tdbsam
  6.         printing = cups
  7.         printcap name = cups
  8.         load printers = yes
  9.         cups options = raw
  10. [homes]
  11.         comment = Home Directories
  12.         valid users = %S, %D%w%S
  13.         browseable = No
  14.         read only = No
  15.         inherit acls = Yes
  16. [printers]
  17.         comment = All Printers
  18.         path = /var/tmp
  19.         printable = Yes
  20.         create mask = 0600
  21.         browseable = No
  22. [print$]
  23.         comment = Printer Drivers
  24.         path = /var/lib/samba/drivers
  25.         write list = @printadmin root
  26.         force group = @printadmin
  27.         create mask = 0664
  28.         directory mask = 0775
复制代码
参数作用[global]Samba配置文件的全局设置workgroup = SAMBA设置Samba服务器所在的工作组名称security = userSamba服务器的安全性模式,共4种passdb backend = tdbsam用于存储用户账号信息的后端数据库printing = cups打印服务协议printcap name = cups打印服务名称load printers = yes是否加载打印机cups options = raw打印机的选项[homes]配置个人用户的家目录的访问权限和选项comment = Home Directories描述信息valid users = %S, %D%w%S指定允许访问该共享目录的用户列表browseable = No共享信息是否在"网上邻居"中可见read only = No共享目录是否只读inherit acls = Yes是否继承文件的访问控制列表(ACL)[printers]用于配置打印机的共享comment = All Printers描述信息path = /var/tmp共享路径printable = Yes指定打印机是否可用于打印create mask = 0600指定创建文件时的权限掩码browseable = No共享信息是否在"网上邻居"中可见[print$]用于配置打印机驱动程序的共享comment = Printer Drivers描述信息path = /var/lib/samba/drivers共享路径write list = @printadmin root指定允许写入该共享目录的用户列表force group = @printadmin逼迫所创建文件的所属组为指定的组create mask = 0664指定创建文件时的权限掩码directory mask = 0775指定创建目录时的权限掩码  security 参数代表用户登岸Samba服务时采用的验证方式。四种
  

  • share:代表主机无须验证密码。相当于vsftpd服务的匿名公开访问模式,安全性差
  • user:代表登岸Samba服务时需要使用账号密码进行验证,通过才气获取到文件,默认的验证方式
  • domain:代表通过域控制器进行身份验证,用来限定用户的泉源域
  • server:代表使用独立主机验证来访问用户提供的密码。这相当于会合管理账号,不常用
  配置共享资源

     第一步:创建用于访问共享资源的账户信息
    pdbedit 命令用于管理 Samba 服务程序的账户信息数据库,格式为【pdbedit [选项]账户】。在第一次把账户信息写人到数据库时需要使用【-a】参数,以后在实行修改密码、删除账户等操纵时就不再需要该参数了
  Samba服务程序的数据库要求账户必须在当前体系中已经存在,否则日后创建文件时将导致文件的权限属性杂乱不堪,由此引发错误
  参数作用-a 用户名建立Samba用户-x 用户名删除Samba用户-L列出用户列表-Lv列出用户具体信息的列表
  1. [root@localhost ~]# id csq
  2. 用户id=1001(csq) 组id=1001(csq) 组=1001(csq)
  3. [root@localhost ~]# pdbedit -a -u csq
  4. new password:         # 输入该账户在Samba服务数据库种的密码
  5. retype new password:  # 再次输入密码进行确认
  6. Unix username:        csq   # Samba账号的用户名
  7. NT username:                # Samba账号的Windows用户名为空
  8. Account Flags:        [U          ]   # 账号标志为"U",表示账号可用
  9. User SID:             S-1-5-21-1005164572-3626894132-1712046424-1000 # Samba账号的SID标识
  10. Primary Group SID:    S-1-5-21-1005164572-3626894132-1712046424-513  # 账号的主组的SID标识
  11. Full Name:            
  12. Home Directory:       \\LOCALHOST\csq       # 账号的主目录路径
  13. HomeDir Drive:        
  14. Logon Script:         
  15. Profile Path:         \\LOCALHOST\csq\profile  # 账号的配置文件路径
  16. Domain:               LOCALHOST               # 账号所属的域名
  17. Account desc:         
  18. Workstations:         
  19. Munged dial:         
  20. Logon time:           0
  21. Logoff time:          三, 06 2月 2036 10:06:39 EST
  22. Kickoff time:         三, 06 2月 2036 10:06:39 EST
  23. Password last set:    一, 01 4月 2024 09:43:46 EDT
  24. Password can change:  一, 01 4月 2024 09:43:46 EDT
  25. Password must change: never # 账号密码的过期时间设置为"never",即永不过期
  26. Last bad password   : 0
  27. Bad password count  : 0
  28. Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  29. # 登录小时的位图,其中所有位都是1,表示没有限制登录时间
复制代码
    第二步、创建用于共享资源的文件目录
    创建用于共享资源的文件目录。在创建时,不但要思量到文件读写权限的问题,而且由于home 目录是体系中普通用户的家目录,因此还需要思量应用于该目录的 SELimnux 安全上下文所带来的限定。在 Samba 的资助手册中显示,精确的文件上下文值应该是 samba_share,所以只需要修改完毕后实行restorecon 命令,就能让应用于目录的新 SELinux 安全上下文立即生效。
  1. [root@localhost ~]# mkdir /home/database
  2. [root@localhost ~]# chown -R csq:csq /home/database/
  3. [root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database
  4. [root@localhost ~]# restorecon -Rv /home/database/
  5. Relabeled /home/database from unconfined_u:object_r:user_home_dir_t:s0 to unconfined_u:object_r:samba_share_t:s0
复制代码
    第三步、设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录
    实行 getsebool命令,筛选出全部与 Samba 服务程序相关的 SELinux 域策略,根据策略的名称(和履历)选择出精确的策略条目进行开启即可
  1. [root@localhost ~]# getsebool -a |grep samba
  2. samba_create_home_dirs --> off
  3. samba_domain_controller --> off
  4. samba_enable_home_dirs --> off # 修改这一条
  5. samba_export_all_ro --> off
  6. samba_export_all_rw --> off
  7. samba_load_libgfapi --> off
  8. samba_portmapper --> off
  9. samba_run_unconfined --> off
  10. samba_share_fusefs --> off
  11. samba_share_nfs --> off
  12. sanlock_use_samba --> off
  13. tmpreaper_use_samba --> off
  14. use_samba_home_dirs --> off
  15. virt_use_samba --> off
  16. [root@localhost ~]# setsebool -P samba_enable_home_dirs on
复制代码
    第四步、在Samba服务程序的主配置文件种,根据下表下入共享信息
    Samba的主配置文件(通常是/etc/samba/smb.conf)可以设置全局配置参数和区域配置参数。全局配置参数实用于整个Samba服务器环境,对全部共享资源都有效。区域配置参数用于设置单独的共享资源,而且只对该资源有效。
  创建一个共享资源非常简单,只需将相关参数添加到Samba服务程序的主配置文件中,并重新启动该服务即可生效。
  参数作用[database]共享名称为databasecomment = Do not arbitrarily modify the database file告诫用户不要随意修改数据库path = /home/database共享目录为/home/databasepublic = no关闭 “全部人可见”writable = yes允许写入操纵
  1. [root@localhost ~]# vim /etc/samba/smb.conf
  2. # 将使用不到的行注释掉
  3. [global]
  4.         workgroup = SAMBA
  5.         security = user
  6.         passdb backend = tdbsam
  7. #        printing = cups
  8. #        printcap name = cups
  9. #        load printers = yes
  10. #        cups options = raw
  11. [database]
  12.         comment = Do not arbitrarily modify the database file
  13.         path = /home/database
  14.         public = no
  15.         writable = yes
  16. #
  17. # [homes]
  18. #         comment = Home Directories
  19. #         valid users = %S, %D%w%S
  20. #         browseable = No
  21. #         read only = No
  22. #         inherit acls = Yes
  23. # [printers]
  24. #         comment = All Printers
  25. #         path = /var/tmp
  26. #         printable = Yes
  27. #         create mask = 0600
  28. #         browseable = No
  29. #
  30. # [print$]
  31. #         comment = Printer Drivers
  32. #         path = /var/lib/samba/drivers
  33. #         write list = @printadmin root
  34. #         force group = @printadmin
  35. #         create mask = 0664
  36. #         directory mask = 0775
复制代码
    第五步、Samba服务程序的配置工作基本完毕
    重启生效修改的配置文件
  1. [root@localhost ~]# systemctl restart smb
  2. [root@localhost ~]# systemctl enable smb
  3. [root@localhost ~]# systemctl status smb # 查看是否启动成功
  4. [root@localhost ~]# firewall-cmd --add-service=samba --permanent
  5. success
  6. [root@localhost ~]# firewall-cmd --reload
  7. success
复制代码
    第六步、查看Samba服务都共享了哪些目录,使用smbclient来查看共享详情
   
  1. [root@localhost ~]# smbclient -U csq -L 192.168.200.10
  2. # -U:指定了用户名称
  3. # -L:列出共享清单
  4. Password for [SAMBA\csq]:
  5.         Sharename       Type      Comment
  6.         ---------       ----      -------
  7.         database        Disk      Do not arbitrarily modify the database file
  8.         # Sharename:共享名称
  9.         # Type:共享类型,指示该共享是一个磁盘(Disk)
  10.         #Comment:对共享的描述或备注信息
  11.         IPC$            IPC       IPC Service (Samba 4.17.5)
  12. SMB1 disabled -- no workgroup available # 这个报错可以不用管
复制代码
Windows挂载共享

  要在Windows体系访问共享资源,只需要单机 Windows体系的开始,输入两个反斜杠,如何再添加服务器的IP地址即可
  然后就可以看到Samba共享服务的登岸界面了
  输入对应的账号名称密码即可访问
  创建文件写入信息
  

  1. [root@localhost ~]# ls /home/database/
  2. hello.txt
  3. [root@localhost ~]# smbclient  //192.168.200.10/database -U csq  # 在Linux端登陆查看
  4. Password for [SAMBA\csq]:
  5. Try "help" to get a list of possible commands.
  6. smb: \> ls
  7.   .                                   D        0  Mon Apr  1 10:41:58 2024
  8.   ..                                  D        0  Mon Apr  1 10:40:17 2024
  9.   hello.txt                           A        9  Mon Apr  1 10:41:51 2024
  10.                 17197056 blocks of size 1024. 12929692 blocks available
复制代码
Linux挂载共享

  Samba服务程序还可以实现Linux体系之间的文件共享
  1. [root@localhost ~]# yum install -y cifs-utils
复制代码
安装完成后,在Linux创建一个用于挂载Samba服务共享资源的目录。这个目录可以与服务器上的共享名称同名,以便于日后查找
  1. [root@localhost ~]# mkdir /database
  2. [root@localhost ~]# mount -t cifs -o username=csq,password=000000 //192.168.200.10/database /database/
  3. [root@localhost ~]# df -hT /database/
  4. 文件系统                  类型  容量  已用  可用 已用% 挂载点
  5. //192.168.200.10/database cifs   17G  4.1G   13G   25% /database
复制代码
假如在每次重启电脑后都需要使用 mount 命令手动挂载长途共享目录,很贫苦,可以按照 Samba 服务的用户名、密码、共享域的次序将相关信息写人一个认证文件中,然后让/etc/fstab文件和体系自动加载它。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root 管理员才气够读写:
  1. [root@localhost ~]# vim auth.smb
  2. username=csq
  3. password=000000
  4. domain=SAMBA
  5. [root@localhost ~]# chmod 600 auth.smb
  6. [root@localhost ~]# vim /etc/fstab
  7. # 添加如下信息
  8. //192.168.200.10/database   /database           cifs  credentials=/root/auth.smb 0 0
  9. [root@localhost ~]# umount /database
  10. [root@localhost ~]# mount -a         
  11. [root@localhost ~]# df -hT /database/     
  12. 文件系统                  类型  容量  已用  可用 已用% 挂载点
  13. //192.168.200.10/database cifs   17G  4.1G   13G   25% /database
  14. [root@localhost ~]# ls /database/
  15. hello.txt
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表