首页 > 代码库 > samba

samba

CIFS文件的存储


一 SMB文件共享

    通用Internet文件系统(CIFS)也称为服务器信息块(SMB),是适用于Microsoft

Windows服务器和客户端的标准文件和打印机共享系统。

   Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享。

Samba服务的组成部分


1. 软件包:

Samba-common – Samba的支持文件

Samba-client – 客户端应用程序

Samba – 服务器应用程序

2. 服务名称:smb nmb

3. 服务端口: 通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容

4. 主配置文件:/etc/samba/smb.conf

/etc/samba/smb.conf: [global]部分

 workgroup

 hosts allow

用于指定Windows工作组或网络域名。

hosts allow是用逗号、空格或制表符分隔的允许访问服务的主机集合。如果在[global]

部分中指定, 将适用于所有服务,无论单个服务是否具有不同的设置。 您可以按名

称或IP号指定主机。例如,您可以使用allow hosts = 192.168.0. 表示允许一个网络。


安全性

该选项影响客户端如何响应Samba,并且在smb.conf文件中是最重要的设置之一。

security = user

客户端必须通过有效的用户名和密码登录。

security = domain

只有当计算机已添加到NT域时才能正常工作。它要求将

encrypted passwords 参数设置为yes。在该模式中,Samba通过将用户名/密码传递至

Windows NT主域控制器或备份域控 制器来进行验证,与Windows NT Server采用的方

式完全一样。请注意,有效的UNIX用户以及域控制 器上的账户必须仍然存在,以允

许Samba具有有效的UNIX账户,可用以映射文件访问。您必须设置 passwd server参数

,为Samba提供服务器,以验证密码。

www.westos.org

4security = server

Samba将通过将用户名/密码传递至另一个SMB服务器来尝试进行验证。

您必须设置password server参数, 为samba提供服务器, 以验证密码。

security = ads

Samba在ADS realm中作为域成员。如要在该模式下操作,运行Samba的

计算机需要安装并配置Kerberos,并且需要使用net实用程序将Samba加入ADS realm。

/etc/samba/smb.conf:其他部分


[homes]

此共享(默认情况下启用)是一个特别共享,通过CIFS使用户的主目录可。它包括browseable

= no, 因此在用户进行身份验证之前,将不会显示为可用共享。共享名称可以指定为homes(

在这种情况下, Samba服务器会将其转换为用户的主目录路径)或username。


[printers]

默认情况下也可用,将共享当前可用的打印机 。


[share]

如果您想要设置其他共享,请将共享名称放置在括号中,如上所示。共享需要至少一个path参

数。

1.

samba作用

提供cifs协议实现共享文件

2.

安装

   34  yum install samba samba-common samba-client.x86_64 -y

   35  systemctl start smb nmb ###开启服务

   36  systemctl enable smb.service nmb

   39  netstat -antlupe | grep smb ###查看smb接口

   40  netstat -antlupe | grep nmb  ###查看nmb接口

截图:

技术分享

3.

添加samba用户:

smb用户必须时本地用户

smbpasswd -a student

New SMB password:qwer#输入smb当前用户密码

Retype new SMB password:qwer#确认密码


pdbedit -L#查看smb用户信息

pdbedit -x smb用户#删除smb用户


setsebool -P enable_samba_home_dirs  on##在selinux中设定smb用户可以访问自己的家目录

  

   41  id student

   42  smbpasswd -a student

   43  pdbedit -L

   44  setsebool -P samba_enable_home_dirs on

技术分享

测试:

  381  smbclient -L //172.25.254.244

  383  smbclient //172.25.254.244/student -U student

  385  smbclient //172.25.254.244/student -U student

技术分享

技术分享

技术分享

4.共享目录的基本设定

vim /etc/samba/smb.conf

[haha]共享名称

comment =  对共享目录的描述

path = 共享目录的绝对路径

workgroup = WESTOS  ####修改工作组

技术分享

当共享目录为用户自建立目录时

semanage fcontext -a -t samba_share_t ‘目录名称(/.*)?‘

restorecon -RvvF 目录名称


当共享目录为系统建立目录

setsebool  -P samba_export_all_ro on#只读共享

setsebool  -P samba_export_all_rw on#读写共享


当共享目录为用户自建立目录时

    1  mkdir /smbshare

    2  touch /smbshare/ooooooo

    3  vim /etc/samba/smb.conf 

[westos]

        comment = local directory

        path =/smbshare

    4  systemctl restart smb.service 


测试:

技术分享

访问不成:

   5  semanage fcontext -a -t samba_share_t ‘/smbshare(/.*)?‘

   6  restorecon -RvvF /smbshare

技术分享

测试:

技术分享

    7 vim /etc/samba/smb.conf

 

 89         workgroup = xxxxxx

    8  systemctl restart smb.service 

测试:

技术分享

技术分享

技术分享



当共享目录为系统建立目录

    17  vim /etc/samba/smb.conf

   18  systemctl restart smb.service

   19  getsebool -a | grep samba

   20  setsebool -P samba_export_all_ro on

   21  getsebool -a | grep samba

   22  cd /mnt

   23  touch file{1..4}

技术分享

技术分享


技术分享

测试:

技术分享

5.samba的配置参数


#匿名用户访问

guest ok = yes 

map to guest = bad user

技术分享

技术分享

   44   vim /etc/samba/smb.conf

   45  systemctl restart smb.service 

测试

[root@localhost ~]# smbclient //172.25.254.244/westos  

Enter root‘s password: 

Domain=[XXXXXX] OS=[Windows 6.1] Server=[Samba 4.2.3]

smb: \> ls

  .                                   D        0  Wed Jun  7 08:50:10 2017

  ..                                  D        0  Wed Jun  7 08:28:32 2017

  file1                               N        0  Wed Jun  7 08:50:10 2017

  file2                               N        0  Wed Jun  7 08:50:10 2017

  file3                               N        0  Wed Jun  7 08:50:10 2017

  file4                               N        0  Wed Jun  7 08:50:10 2017


10473900 blocks of size 1024. 6640604 blocks available

smb: \> 


#访问控制

hosts allow = #仅允许

hosts deny = #仅拒绝

技术分享

[root@localhost ~]# smbclient //172.25.254.244/westos  

Enter root‘s password: 

Domain=[XXXXXX] OS=[Windows 6.1] Server=[Samba 4.2.3]

tree connect failed: NT_STATUS_ACCESS_DENIED


valid users = #当前共享的有效用户

valid users = westos#当前共享的有效用户为westos

valid users = @westos#当前共享的有效用户为westos组

valid users = +westos#当前共享的有效用户为westos组

#当前共享的有效用户为westos

技术分享

   44   vim /etc/samba/smb.conf

   45  systemctl restart smb.service 

   46  useradd westos -s /sbin/nologin

   47  smbpasswd -a westos

   48  id westos

   49   pdbedit -L

技术分享

19  smbclient //172.25.254.244/westos  -U student

20  smbclient //172.25.254.244/westos  -U westos

技术分享

当前共享的有效用户为westos组

技术分享

root@localhost ~]# usermod -G westos student

[root@localhost ~]# id student

uid=1000(student) gid=1000(student) groups=1000(student),1001(westos)

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

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


smbclient //172.25.254.244/westos  -U student

技术分享

#读写控制

所有用户均可写

chmod o+w /mnt

setsebool -P samba_export_all_rw on

vim /etc/samba/smb.conf

writable = yes

systemctl restart smb.service

 技术分享

技术分享

测试:

    6  mount -o username=westos,password=qwer //172.25.254.244/westos /mnt/

    7  cd /mnt

    8  ls

    9  touch alluser

   10  ls

   11  ll

   13  mount -o username=student,password=qwer //172.25.254.244/westos /mnt/

   14  touch alluser1

   15  ll

技术分享

技术分享

设定指定用户可写

write list = student#可写用户

write list = +student#可写用户组

write list = @student

admin users = westos#共享的超级用户指定

技术分享

技术分享


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

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

[root@localhost ~]# usermod -G student westos

[root@localhost ~]# id westos

uid=1001(westos) gid=1001(westos) groups=1001(westos),1000(student)

测试:

技术分享

技术分享

6.smb多用户挂载

在client上

vim /root/haha

username=student

password=qwer


chmod 600 /root/haha


yum install cifs-utils -y


mount -o credentials=/root/haha,multiuser,sec=ntlmssp //172.25.254.100/haha /mnt/

#credentials=/root/haha指定挂载时所用到的用户文件

#multiuser支持多用户认证

#sec=ntlmssp认证方式为标准smb认证方式



su - student

ls /mnt

ls: cannot access /mnt: Permission denied#因为没有作smb的认证所以无法访问smb共享

cifscreds add -u westos 172.25.254.244

Password:##smb用户westos的密码

ls /mnt


[root@localhost ~]# vim /root/haha

[root@localhost ~]#  chmod 600 /root/haha

[root@localhost ~]# yum install cifs-utils -y

[root@localhost ~]# mount -o credentials=/root/haha,multiuser,sec=ntlmssp //172.25.254.244/westos /mnt/

[root@localhost ~]# cd /mnt

[root@localhost mnt]# ls

alluser  alluser1  file1  file2  file3  file4  student  westos  westos1

[root@localhost mnt]# su - student

[student@localhost ~]$ cd /mnt

[student@localhost mnt]$ ls

ls: reading directory .: Permission denied

[student@localhost mnt]$ cifscreds add -u westos 172.25.254.244

Password: 

[student@localhost mnt]$ ls /mnt

alluser  alluser1  file1  file2  file3  file4  student  westos  westos1




samba