Linux之Samba文件共享

简介:

    Samba可以实现Linux和Windows之间的文件共享,主要包括服务端软件Samba、客户端软件Samba-client、用于提供服务端和客户端程序的公共组件Samba-common。在CentOS中大部分软件包已经默认安装好了。Samba服务器提供smbd、nmbd两个服务程序,分别完成不同的功能。其中,smbd负责为客户端提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机进行查询服务。

示例:

ABC是一家网站设计公司,公司下面有设计部、开发部、运维部等多个部门,公司决定部署一台Samba服务器,满足各个部门间快速共享数据的需求。

设计部共享目录:/ABC/design

开发部共享目录:/ABC/develop

运维部共享目录:/ABC/ops

公共共享目录:/ABC/share

每个目录设置两个用户,部门主管具有读写的权限,其它人仅有读的权限,以运维部为例:主管的用户名为:opsadmin(密码和用户名一致),其它人:ops1(密码与用户名一致)。公共共享目录:administrator(密码和用户名一致)具有读写权限,其它所有人仅有读的权限。

1 关闭防火墙和Selinux:

[root@localhost ~]# service iptables stop

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

[root@localhost ~]# setenforce 0


2 配置Samba服务器:

安装程序组件

[root@localhost ~]# rpm -qa | grep 'samba'

samba-common-3.6.23-33.el6.i686

samba-client-3.6.23-33.el6.i686

samba-winbind-3.6.23-33.el6.i686

samba4-libs-4.2.10-6.el6_7.i686

samba-winbind-clients-3.6.23-33.el6.i686

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


建立共享目录和测试文件

[root@localhost ~]# mkdir -pv /ABC/{design,develop,ops,share}

[root@localhost ABC]# echo "This is design" >> /ABC/design/de.txt

[root@localhost ABC]# echo "This is develop" >> /ABC/develop/deve.txt

[root@localhost ABC]# echo "This is ops" >> /ABC/ops/ops.txt

[root@localhost ABC]# echo "This is share" >> /ABC/share/share.txt

[root@localhost ABC]# tree /ABC/

/ABC/

├── design

│   └── de.txt

├── develop

│   └── deve.txt

├── ops

│   └── ops.txt

└── share

    └── share.txt


4 directories, 4 files


建立账户:Samba服务器使用独立的共享账号数据库文件,其中的账号必须有与它同名的系统用户相对应,以便主机对共享访问的读写权限进行控制;但共享用户的密码是额外设置的,可以和系统用户的密码不一样。

[root@localhost ~]# useradd -s /sbin/nologin opsadmin         #先增加系统用户

[root@localhost ~]# pdbedit -a -u opsadmin                 #再添加共享用户

[root@localhost ~]# useradd -s /sbin/nologin ops1

[root@localhost ~]# pdbedit -a -u ops1

[root@localhost ~]# useradd -s /sbin/nologin administrator

[root@localhost ~]# pdbedit -a -u administrator

[root@localhost ~]# pdbedit -L                         #列出所有用户

opsadmin:501:

administrator:503:

ops1:502:

[root@localhost ~]# pdbedit -x -u vina                   #删除某个用户

[root@localhost ~]# pdbedit -vL ops1                     #显示用户详细信息

Unix username:        ops1

NT username:          

Account Flags:        [U          ]

User SID:             S-1-5-21-2138872188-2142312678-3225965792-1001

Primary Group SID:    S-1-5-21-2138872188-2142312678-3225965792-513

Full Name:            

Home Directory:       \\localhost\ops1

HomeDir Drive:        

Logon Script:         

Profile Path:         \\localhost\ops1\profile

Domain:               LOCALHOST

Account desc:         

Workstations:         

Munged dial:          

Logon time:           0

Logoff time:          never

Kickoff time:         never

Password last set:    Tue, 30 May 2017 12:04:49 CST

Password can change:  Tue, 30 May 2017 12:04:49 CST

Password must change: never

Last bad password   : 0

Bad password count  : 0

Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


备注:修改密码需要用到如下命令:

smbpasswd username


修改配置文件

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

[global]

security = user

[share]

path = /ABC/share

public = yes

browseable = yes

read only = yes

write list = administrator


[ops]

path = /ABC/ops

browseable = yes

public = no

write list = opsadmin

valid users = ops1,opsadmin

[root@localhost ABC]# testparm                          #检查配置文件

[root@localhost ABC]# chmod -R 777 /ABC/{design,develop,ops,share}


开启服务

[root@localhost ABC]# service smb start

[root@localhost ABC]# service nmb start

修改配置文件后,需要重新载入配置文件

[root@localhost ABC]# service smb reload

    

附:Samba配置文件常用参数详解:

1)security = user | share:

share:不需要提供用户名和密码;

user:共享目录只能被授权的用户访问,并且验证账号和密码的正确性;

2)path = /ABC/ops:共享目录的路径;

3)browseable = no | yes:该目录是否可以被浏览,no意味隐藏目录;

4)valid users = ops1,opsadmin:允许访问该共享的用户;

5)invalid users = **,**:禁止访问该共享的用户;

6)write list = ops1:允许写入该共享的用户;

7)public = no | yes:是否允许匿名访问,同 guest ok

8)  directory mask = 0755:上传目录的默认权限;

9)  create mask = 0644:上传文件的默认权限;



本文转自 zengwj1949 51CTO博客,原文链接:http://blog.51cto.com/zengwj1949/1930733

相关文章
|
15天前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
3天前
|
存储 Linux 数据库
|
1天前
|
存储 Linux 数据库
Linux 如何快速查找文件?
Linux 如何快速查找文件?
23 6
|
6天前
|
存储 运维 安全
Linux命令stat:深入了解文件与文件系统状态
`stat`命令在Linux中用于显示文件和文件系统的详细状态,包括权限、大小、时间戳等。它通过读取inode获取信息,特点是显示全面、易用且支持多种参数,如`-c`自定义格式,`-f`查看文件系统状态,`-L`处理符号链接。例如,`stat example.txt`显示文件详情,`stat -c "%n 的大小是 %s 字节" example.txt`输出文件大小。理解`stat`有助于系统管理和故障排查。
|
9天前
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
24 0
|
9天前
|
Linux C语言 C++
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
20 0
|
15天前
|
存储 Linux
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
|
15天前
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux07特殊路径符,向上回退一级,cd ..切换目录到 /home/itheima,怎样做 .表示当前目录,cd ./Desktop,切换到当前目录的Desktop文件,cd ../... 退
Linux07特殊路径符,向上回退一级,cd ..切换目录到 /home/itheima,怎样做 .表示当前目录,cd ./Desktop,切换到当前目录的Desktop文件,cd ../... 退
|
15天前
|
Linux
Linux部署06 ---相对路径绝对路径,想要切换到home下的文件 cd /home/itheima/Desktop cd Desktop,相对路径以当前目录为起点一种写法 不写/,相对是当前目录
Linux部署06 ---相对路径绝对路径,想要切换到home下的文件 cd /home/itheima/Desktop cd Desktop,相对路径以当前目录为起点一种写法 不写/,相对是当前目录