【linux学习笔记】samba在RHEL7上配置

      samba全称为Server Message Block,信息服务块,主要是用来实现linux与windows文件共享的.

一、基本配置选项

    主要的配置文件为/etc/samba/smb.conf,配置文件分为SELINUX,全局配置,日志配置,标准服务选项,域控选项,共享定义选项,主要修改的区域为全局选项和共享定义选项,全局配置将会针对所有的共享定义生效

workgroup = WORKGROUP   定义所在的工作组
server string = Samba Server Version %v  定义提示信息,这里%v表示samba版本号

日常管理中可以对server string选项内容进行修改,可以隐藏自己所在的版本

hosts allow 定义允许访问共享的目标主机,可以有如下几种格式定义

.example.com    //定义所有example.com结尾的主机均可访问
172.16.0.0/16
172.16.0.0/255.255.0.0
172.16.          //以上三种均定义为同样的意思,定义一个网段,多个网段可用空格隔开

hosts deny 定义拒绝访问共享的主机,如果只设定了deny,除deny后的网段外,其它网段均可以正常访问,比如:

hosts deny 192.168.1.0/24
hosts allow 192.168.1.1 
#表示不允许192.168.1.0/24网段访问,但允许192.168.1.1这台主机和172.16.0.0访问,默认为允许,即其它网段默认为允许

日志信息配置

log file = /var/log/samba/log.%m  //默认是以log.机器名定义日志格式
max log size = 50   //日志轮巡,默认单位为KB

共享文件格式

[ public ]  //共享的名字
comment = Description      //描述这个共享
path = /path/to/share     //共享的文件夹
writable = yes|no  //默认不可写,要开启写入功能在这里选yes
valid users = user1 @group  //有效访问用户,可用@支持用户组访问,默认为支持所有用户访问
browseable = yes | no  //定义是否允许浏览,如果为yes则所有用户均可访问此目录
public = yes | no      //定义是否允许匿名访问,默认为no,此项比较危险,不建议开启
readonly = no // 相当于writable = yes

二、samba基本配置

     主要使用到的包有samba,cifs-utils,先装需要的包,加入开机启动,开放防火墙,现有两台终端一台10.1.17.221(服务端),另外一台终端10.1.17.249(客户端)

#yum install -y samba cifs-utils
#systemctl enable smb
#systemctl enable nmb
#systemctl start smb
#systemctl start nmb
#firewall-cmd --permanent --add-service=samba
#firewall-cmd --reload

修改samba主配置文件vim /etc/samba/smb.conf,新建一个 rhce的共享,可以访问的用户为tom,bob,只允许tom写入,只允许10.1.0.0/16位网段访问

[rhce]
comment = share for it
path = /mnt/smb
valid users = tom bob
write list = tom
hosts allow = 10.1.0.0/16

使用testparm命令可以检查smb.conf配置文件语法

testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
params.c:Parameter() - Ignoring badly formed line in configuration file: setsebool -P samba_enable_home_dirs on
Processing section "[homes]"
Processing section "[printers]"
Processing section "[rhce]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
    netbios name = SERVER.REDHAT.SUN
    server string = Samba Server Version %v
    log file = /var/log/samba/log.%m
    max log size = 50
    load printers = No
    idmap config * : backend = tdb
    cups options = raw

[homes]
    comment = Home Directories
    read only = No
    browseable = No

[printers]
    comment = All Printers
    path = /var/spool/samba
    printable = Yes
    print ok = Yes
    browseable = No

[rhce]
    comment = share for it
    path = /mnt/smb
    valid users = tom, bob
    write list = tom
    hosts allow = 10.1.0.0/16

如果语法检查没问题会提示OK,使用pdbedit -L显示 samba用户,-x删除用户

[root@server ~]# pdbedit -L
tom:1022:
bob:1023:

创建共享目录,修改SELINUXcontext值

#mkdir /mnt/smb
#cp /etc/fstab /mnt/smb
#ll -dZ /mnt/smb
drwxr-xr-x. root root unconfined_u:object_r:mnt_t:s0   /mnt/smb
#chcon -R -t samba_share_t /mnt/smb
#ll -dZ /mnt/smb
drwxr-xr-x. root root unconfined_u:object_r:samba_share_t:s0 /mnt/smb
#systemctl restart smb nmb

换一台终端检查rhce共享是否可以正常显示

#yum install -y samba-client
#smbclient -L 10.1.17.221
Enter root's password: 
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.12]

    Sharename       Type      Comment
    ---------       ----      -------
    rhce            Disk      share for it
    IPC$            IPC       IPC Service (Samba Server Version 4.1.12)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.12]

    Server               Comment
    ---------            -------
    SERVER.REDHAT.S      Samba Server Version 4.1.12
    WH-PRINT             

    Workgroup            Master
    ---------            -------
    WORKGROUP

在服务器端添加用户,添加用户前,本地用户必须存在才能正常添加

smbpasswd   -a 添加用户

                      -x 删除用户

                      -d 表示disable禁用用户

                      -e  表示enable启用用户

添加tom,bob用户,给tom,bob设计samba密码,添加it组,将tom,bob加入到it的附加组,修改/mnt/smb目录属组和权限

#useradd -s /sbin/nologin tom
#useradd -s /sbin/nologin bob
#smbpasswd -a tom
New SMB password:redhat
Retype new SMB password:redhat
Added user tom.
#smbpasswd -a bob
#groupadd it
#gpasswd -a tom it      //将tom加入到it附加组
#gpasswd -a bob it
#chown :it /mnt/smb
#chmod 2775 /mnt/smb

接下来查看/mnt/smb的权限属性和用户属性

#ll -d /mnt/smb
drwxrwsr-x. 2 root it 18 Oct 14 00:55 /mnt/smb
#id bob
uid=1023(bob) gid=1023(bob) groups=1023(bob),40002(it)
#id tom
uid=1022(tom) gid=1022(tom) groups=1022(tom),40002(it)
#grep -e "^it" /etc/group
it:x:40002:tom,bob

使用windows客户端访问\\10.1.17.221,测试bob,可以正常访问,在RHCE目录下无权建立文件夹,使用net usr /del *删除windows访问缓存,用tom用户登陆,可以正常RHCE上新建。

在客户端挂载测试

#mount -t cifs -o username=tom //10.1.17.221/rhce /mnt
Password for tom@//10.1.17.221/rhce:  ******
# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   11G  4.9G  5.4G  48% /
devtmpfs               740M     0  740M   0% /dev
tmpfs                  749M  140K  749M   1% /dev/shm
tmpfs                  749M   41M  708M   6% /run
tmpfs                  749M     0  749M   0% /sys/fs/cgroup
/dev/sda1              197M  130M   68M  66% /boot
/dev/mapper/rhel-home  4.9G  242M  4.7G   5% /home
//10.1.17.221/rhce     9.8G  631M  9.2G   7% /mnt
# cd /mnt
# ll
total 4
-rw-r--r--. 1 root root 693 Oct 14  2015 fstab
#echo "tom is here " >> tom.txt
# ll
total 8
-rw-r--r--. 1 root root  693 Oct 14  2015 fstab
-rw-r--r--. 1 1022 40002  13 Oct 14  2015 tom.txt

实现自动挂载功能,编辑/etc/fstab,加入一行

//10.1.17.221/rhce      /mnt        cifs    defaults,username=tom,passwd=redhat 0 0

三、使用用户名和密码访问共享

     查看一下fstab权限为644,所有人均可读,所以这样没有安全性可言,可以新建一个密码文件,将用户名和密码放置在此密码文件中

#echo "username=tom" >/etc/tom.txt
# echo "passwd=redhat" >> /etc/tom.txt 
# chmod 400 /etc/tom.txt

修改/etc/fstab

//10.1.17.221/rhce    /mnt      cifs    defaults,credentials=/etc/tom.txt 0 0

四、使用multiuser实现多用户加密访问

     目前只有一个固定的用户,无法针对不同的用户实现不同的密码访问,而且密码已经固定,不方便进行管理,RHEL7新增了一个功能multiuser,可以多用户访问,编辑/etc/fstab,添加多用户选项,加密方式为ntlmssp,可以man mount.cifs,最后的_netdev选项是网络服务启动后再挂载,防止网络未启动时,一直卡顿,不能正常挂载的现象

//10.1.17.221/rhce      /mnt    cifs    defaults,credentials=/etc/tom.txt,multiuser,sec=ntlmssp,_netdev 0 0

将终端/mnt目录临时修改为777权限

#chmod 777 /mnt
#mount -a
# su - student    //切换为普通用户
#ll /mnt
ls: cannot access /mnt: Permission denied
cifscreds add -u bob 10.1.17.221
Password: redhat
#cifscreds -h           //cifscreds的用法
cifscreds: invalid option -- 'h'
Usage:
    cifscreds add [-u username] [-d] <host|domain>
    cifscreds clear [-u username] [-d] <host|domain>
    cifscreds clearall 
    cifscreds update [-u username] [-d] <host|domain>
#cifscreds add -u bob 10.1.17.221   //添加bob的凭证
Password: redhat
#ll /mnt     //可以正常ls
total 8
-rw-r--r--. 1 root root  693 Oct 14  2015 fstab
-rw-r--r--. 1 1022 40002   0 Oct 13 18:30 newtom
-rw-r--r--. 1 1022 40002   0 Oct 13 18:33 newwww
-rw-r--r--. 1 1022 40002  13 Oct 14  2015 tom.txt
#touch bob
touch: cannot touch ?.ob?. Permission denied
//这里有一个命令为清除凭证,但已经添加过的用户,比如加过bob,使用cifscreds clearall,系统已经
//提示清掉凭证了,但添加tom后,依然还是使用的bob以前的凭证,通过卸载/mnt目录可以实现清掉凭证
//这里切换另外一个用户user演示tom用户
#su - user
Last login: Thu Aug 20 15:13:02 CST 2015 on pts/1
Last failed login: Tue Oct 13 18:40:42 CST 2015 on pts/1
There was 1 failed login attempt since the last successful login.
[user@sunny mnt]$ cifscreds add -u tom 10.1.17.221
Password: 
[user@sunny mnt]$ cd /mnt
[user@sunny mnt]$ touch 111

说明user用户已经获取到了tom的凭证,可以正常写入,至此samba实验到此结束

你可能感兴趣的:(samba,rhel7)