samba服务

smb(samba):

1、用于linux和windows之间的文件共享,可以实现匿名用户和本地用户之间的文件共享

2、工作原理:

smb进程 控制发布共享目录与权限  tcp 139 445

nmb进程 主要用于名称解析 udp 137 138

步骤:

1、关闭防火墙和selinux

2、配置yum源

3、软件三步曲(查看|安装|查看软件列表)

# rpm -aq|grep samba

samba-winbind-clients-3.6.9-164.el6.x86_64  客户端工具

samba-3.6.9-164.el6.x86_64  服务端

samba-client-3.6.9-164.el6.x86_64  客户端工具

samba4-libs-4.0.0-58.el6.rc4.x86_64 库文件

samba-common-3.6.9-164.el6.x86_64  工具包

samba-winbind-3.6.9-164.el6.x86_64 客户端工具

# rpm -ql samba|grep etc

/etc/logrotate.d/samba  日志轮转文件

/etc/pam.d/samba 验证机制

/etc/rc.d/init.d/nmb 启动脚本

/etc/rc.d/init.d/smb

/etc/samba/smbusers  用户别名文件

二进制命令

/usr/sbin/nmbd

/usr/sbin/smbd

# rpm -ql samba-client

/usr/bin/smbclient  客户端工具

# rpm -ql samba-common

/etc/samba  主目录

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

/usr/bin/pdbedit 查看smb数据库用户

/usr/bin/smbpasswd 设置用户密码

/usr/bin/testparm 检测语法

4、了解主配置文件

# cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z]

[global] 全局标签

workgroup = MYGROUP 工作组

server string = Samba Server Version %v  samba服务器版本描述

# logs split per machine

log file = /var/log/samba/log.%m 日志文件

# max 50KB per log file, then rotate

max log size = 50 日志大小kb

security = user 认证模式:user用户名密码;share匿名;server

passdb backend = tdbsam smb数据库 /var/lib/samba/private/

# the login script name depends on the machine name

# the login script name depends on the unix user used

# disables profiles support by specifing an empty path

load printers = yes 加载打印机

cups options = raw 打印机选项

#obtain list of printers automatically on SystemV

[homes] 局部标签  共享本地用户的家目录

comment = Home Directories  描述

browseable = no  隐藏标签

writable = yes 可写

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

guest ok = no 等于 public = no

writable = no 等于 read only = yes

printable = yes

5、需求:无

测试验证默认情况下的共享文件

6、启动服务,开机自启动

7、测试验证

总结:

1、默认情况下,服务端会将系统中的所有本地用户的家目录共享出去;并且不允许匿名用户访问

2、本地用户都可以通过用户名和smab数据库的密码去访问当前用户的家目录

client:10.1.1.2

匿名用户查看:

# smbclient -L 10.1.1.1

Enter root's password: 不输入密码

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

匿名用户访问共享资源:

# smbclient //10.1.1.1/stu1

Enter root's password:

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

tree connect failed: NT_STATUS_ACCESS_DENIED

原因:共享的家目录不允许匿名用户访问

本地用户查看:

将本地用户加入到smb数据库里

# smbpasswd -a stu1

New SMB password:

Retype new SMB password:

Added user stu1.

# pdbedit -L 查看smb数据库的用户

stu1:500:

# smbclient -L 10.1.1.1 -U stu1  查看smb服务端共享了哪些目录

本地用户访问:

# smbclient //10.1.1.1/stu1 -U stu1

Enter stu1's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

smb: \> ?

\\172.16.13.86

我的电脑——>\\172.16.13.86

需求1:匿名用户访问本地用户的家目录

[homes]

comment = Home Directories

browseable = yes

writable = yes

guest ok = yes

chmod o+rx /home/user01

service smb restart

需求2:认证模式更改为share

结果:

匿名用户可以访问查看;本地用户不可以访问查看

需求3:共享本地目录/samba/share

vim /etc/samba/smb.conf

[share]

comment = samba share

path    = /samba/share

public  = yes

writable = yes

browseable = yes

客户端挂载使用:

# mount.cifs -o username=stu1,password=stu1 //10.1.1.1/share /u02

自己完成开机自动挂载和autofs自动挂载

需求4:允许harry用户可写,sysadmin组的成员只读

[share]

comment = samba share

path    = /samba/share

browseable = yes

valid users = harry,@sysadmin

write list = harry

[share]

comment = samba share

path    = /samba/share

browseable = yes

valid users = harry,@sysadmin

writable = yes

read list = @sysadmin

[share]

comment = samba share

path    = /samba/share

browseable = yes

valid users = harry,@sysadmin

write list = harry

read only = yes

控制读写访问:

writable = yes/no

read only = yes/no

write list = tom,@admin

read list = tom,@admin

对象的访问控制:

valid users = tom,@admin 指定可用用户

invalid users = tom,@admin 指定不可用用户

两个参数不要同时存在

[share]

comment = samba share

path    = /samba/share

browseable = yes

valid users = harry,@sysadmin

网络访问控制:

hosts allow = 150.203. EXCEPT 150.203.6.66

hosts allow = 150.203.15.0/255.255.255.0

hosts allow = *.uplooking.com

hosts deny = 192.168.1.3 vm01.example.com

如果deny和allow冲突,allow优先

[share]

comment = samba share

path    = /samba/share

browseable = yes

valid users = harry,@sysadmin

#writable = yes

write list = harry

read only = yes

hosts allow = 172.16.13.0/255.255.255.0 EXCEPT 172.16.13.250

基于用户名密码的综合访问:

需求:

公司:uplooking

1、财务部门 /samba/upl_cw  cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限。

2、市场部门 /samba/upl_sc  市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限。

3、HR部门  /samba/upl_rs  rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以查询

4、休息区  /samba/upl_pub  自己管理自己的文件

清空windows缓存:cmd——>net use * /del /y

思路:

1、选择哪个服务做文件共享(samba)

2、需要一台Linux服务器(rhel/centos)

3、根据部门创建不同的工作目录来保存不同部门的文件

4、将目录发布出去

5、测试验证

步骤:

node1:samba服务端 10.1.1.1 172.16.13.44

1、在服务器上创建相应的工作目录

mkdir /samba/upl_{cw,sc,rs,pub} -p

chmod 700 -R /samba

2、创建相应的用户和组

groupadd uplooking

groupadd cw

groupadd rs

groupadd sc

useradd cw01 -g cw -G uplooking

useradd cw02 -g cw -G uplooking

useradd rs01 -g rs -G uplooking

useradd rs02 -g rs -G uplooking

useradd sc01 -g sc -G uplooking

useradd sc02 -g sc -G uplooking

useradd boss01 -g uplooking -G cw

useradd boss02 -g uplooking -G sc

useradd vip

3、软件三步曲(查看软件|安装|查看软件列表)

根据需求将不同部门的共享目录发布出去

vim /etc/samba/smb.conf

[cw_share]

comment= cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限

path = /samba/upl_cw

valid users = @cw,boss01,@rs

write list = cw01,boss01

[sc_share]

comment= 市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限

path = /samba/upl_sc

valid users = @uplooking

read only = yes

write list = @sc,boss02

[hr_share]

comment = rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以读写

path = /samba/upl_rs

valid users = @rs,vip

write list = rs01,vip

[pub]

comment = 自己管理自己的文件

path = /samba/upl_pub

public = yes

writable = yes

hosts allow = 172.16.13.0/24

4、将用户加入到samba数据库里

1077  smbpasswd -a cw01

1078  smbpasswd -a cw02

1079  smbpasswd -a rs01

1080  smbpasswd -a rs02

1081  smbpasswd -a sc01

1082  smbpasswd -a sc02

1083  smbpasswd -a boss01

1084  smbpasswd -a boss02

1085  smbpasswd -a vip

1086  pdbedit -L

5、重启服务测试验证

# service smb restart

Shutting down SMB services:                                [  OK  ]

Starting SMB services:                                    [  OK  ]

linux:

windows:

建议清空环境 再次操作<恢复快照>

综合练习

配置samba要求如下

1)工作组名为RHCE

2)认证类型为user

3) 使用lvm  建立 /dev/mapper/UPL-smb 10G  固定挂载到 /upl

4)公司uplooking,有3个部门,rs、sc、cw部门,每个部门需要共享文件给不同人,要求如下:

1.财务部门(/upl/cw),只有财务总监(cw01)可以修改文件,财务成员(cw02)审核文件,boss01 汇总公司财务

2.人事部门(/upl/rs),人事部门可以修改文件,公司所有员工都可以查看文件,boss02 也可以修改文件

3.市场部门(/upl/sc),只有市场总监可以修改文件,市场成员可以查询,boss03 也可以修改文件

4.vip  可以访问rs部门,sc部门

6.在公共目录(/upl/pub)自己文件自己管理

5) 拒绝用户在192.168.1.0/24除了192.168.1.2访问该共享目录

6) 定义vip的别名为赵二

7) smb密码自行定义

别名定义:

# cat /etc/samba/smbusers

# Unix_name = SMB_name1 SMB_name2 ...

root = administrator admin

nobody = guest pcguest smbguest

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

[global]

。。。

username map = /etc/samba/smbusers

作业2:自动挂载家目录

vm1:stu1 stu2 stu3...  /home/$username

vm2:/rhome/stu1 /rhome/stu2 ...

node1:stu1       stu2 stu3

node2:/rhome/stu1 /rhome/stu2 /rhome/stu3

每个用户只能在自己家目录新增修改文件

答:

vm1:

mkdir /rhome/stu{1..3} -p

cp -a /etc/skel/. /rhome/stu1

cp -a /etc/skel/. /rhome/stu2

cp -a /etc/skel/. /rhome/stu3

vim /etc/exports

/rhome/stu1  10.1.0.28(rw,anonuid=501,anongid=501)

/rhome/stu2  10.1.0.28(rw,anonuid=502,anongid=502)

/rhome/stu3  10.1.0.28(rw,anonuid=503,anongid=503)

chmod 750 /rhome/*

setfacl -m u:501:rwx /rhome/stu1

setfacl -m u:502:rwx /rhome/stu2

setfacl -m u:503:rwx /rhome/stu3

service nfs restart

vm2:

# useradd -u 501 -M -d /nfs/stu1 stu1

# useradd -u 502 -M -d /nfs/stu2 stu2

# useradd -u 503 -M -d /nfs/stu3 stu3

echo 123|passwd  --stdin stu1

echo 123|passwd  --stdin stu2

echo 123|passwd  --stdin stu3

# id stu1

uid=501(stu1) gid=501(stu1) groups=501(stu1)

mkdir nfs

vim /etc/auto.master

/nfs /etc/auto.test

vim /etc/auto.test

* -nfs,rw  10.1.0.27:/rhome/&

service autofs restart

stu1验证:

[root@vm28 nfs]# su - stu1

[stu1@vm28 ~]$ pwd

/nfs/stu1

[stu1@vm28 ~]$ touch /nfs/stu1/file1            --在stu1建立成功

[stu1@vm28 ~]$ ls /nfs/stu1/file1

/nfs/stu1/file1

[stu1@vm28 ~]$ touch /nfs/stu2/file2            --在stu2建立失败

touch: cannot touch `/nfs/stu2/file2': Permission denied

stu2验证:

[root@vm28 nfs]# su - stu2

[stu2@vm28 ~]$ pwd

/nfs/stu2

[stu2@vm28 ~]$ touch /nfs/stu2/file3          --在stu2建立成功

[stu2@vm28 ~]$ ls /nfs/stu2/file3

/nfs/stu2/file3

[stu2@vm28 ~]$ touch /nfs/stu1/file4          --在stu1建立失败

touch: cannot touch `/nfs/stu1/file4': Permission denied

推荐阅读更多精彩内容