基础


SMB:Server Message Block 服务器消息块,IBM发布,最早是 DOS 网络文件共享协议
 
CIFS:Common Internet File System,微软基于 SMB 发布
 
SAMBA:1991 年 Andrew Tridgell,实现 Windows 和 Unix 想通
 
SAMBA 的功能:

  • 共享文件和打印,实现在线编辑
  • 实现登录 SAMBA 用户的身份认证
  • 可以进行NetBIOS名称解析
  • 外围设备共享

 
注:windows共享使用的是445、139

 

1、samba账户实现原理

包: samba-common-tools
工具: smbpasswd pdbedit
用户数据库: /var/lib/samba/private/passdb.tdb
 
samba 用户必须是 linux 用户,建议使用 /sbin/nologin

 

2、添加 samba 账户

基本命令:
0)、添加不可登录的操作系统账号
# useradd -s /sbin/nologin username
 
1)、添加 samba 用户
# smbpasswd -a <user>
# 或者
# pdbedit -a -u <user>
 
2)、修改用户密码
# smbpasswd <user>

 

3、查看现有的 samba 账户

# pdbedit -L
 
查看详细信息
# pdbedit -L -v

 

4、删除 samba 账户

0)、删除操作系统账号
# userdel <user>
 
1)、删除 samba 账号
# smbpasswd -x <user>

 

5、更改 samba 账户密码

# smbpasswd <user>

 

6、禁用 samba 账号

# smbpasswd -d <user>

 
 
 
 

组管理

1、创建组

# groupadd groupname

 

2、在指定组新建用户

# useradd -g group1 -m user1

 

3、将用户设置为只属于某组

# usermod -G group1

 

4、将用户添加到某组

# usermod -a -G droup1 user1

 

5、查询某用户属于哪些组

# groups user1

 

6、查看所有组,及其用户

# cat /etc/group

 

7、查看组中所有用户

# groupmems -l -g g1

 
 
 
 

文件权限管理

1、更改某文件/目录归属者(若是目录只更改目录,不更改其子文件)

# chown new_owner file_or_folder

 

2、更改目录及其子文件归属

# chown -R new_owner folder

 

3、更改文件/目录所属组

# chgrp new_own_group file_or_folder

 

4、更改目录及其子文件归属组

# chgrp -R new_own_group folder

 

 
 
 
 

基本命令

1、查看 samba 当前的连接信息

# smbstatus

 
 
 
 

安装及配置 samba

0、关闭SELinux

# 查看 selinux 是否开启
# getenforce
 
显示 Enforcing 表示开启着
在这里插入图片描述
# 关闭 selinux,设置 SELINUX=disable
# vim /etc/selinux/config
在这里插入图片描述
# 重启机器
# reboot

 

1、安装 samba

# yum install -y samba

 

2、开启 smb 服务

# systemctl start smb

 

3、开放端口

# firewall-cmd --zone=public --add-port=139/tcp --permanent
 
# firewall-cmd --zone=public --add-port=445/tcp --permanent
 
# firewall-cmd --zone=public --add-port=137/udp --permanent
 
# firewall-cmd --zone=public --add-port=138/udp --permanent
 
# firewall-cmd --reload

 

4、创建操作系统不可登陆的账户

# useradd -s /sbin/nologin user1

 

5、创建用户组和管理员组

# groupadd data_user
# groupadd data_manager

 

6、将全部需要访问共享目录的用户添加到用户组,将具有管理权限的用户添加到管理员组

# usermod -a -G data_user user1
# usermod -a -G data_manager user1

 

7、创建 samba 账户

# smbpasswd -a <user>

 

8、创建共享目录

# mkdir /share

 

9、更改共享目录权限为 777,具体权限由 samba 控制

# chmod 777 /share

 

10、更改配置以开启共享

# vim /etc/samba/smb.conf
 
更改内容如下:
1)、更改 workgroup 为 WORKGROUP —— 根据实际的工作组来改
 
2)、添加日志记录

  • log file = /var/log/samba/log.%I
  • log level = 2
  • max log size = 5120

 
3)、共享目录,底部添加内容块

[share]
        path = /share
        public = no
        read only = yes
        valid users = @gis_manager @gis_data hs_guest
        write list = @gis_manager @gis_data
        create mask = 0777
        directory mask = 0777
        guest ok = no

 

目前添加新用户的操作:

1、添加新系统用户
# useradd -s /sbin/nologin user1
 
2、添加用户到 samba
# smbpasswd -a user1
 
3、在 /share 下创建用户目录
# mkdir User_user1
 
4、进入 User_user1 创建 private 目录,并设置权限为 700
# cd User_user1
# mkdir private
# chmod 700 private/
 
5、回到 /share 并修改 新目录权限、归属用户、归属组
# cd …/
# chmod 775 User_user1
# chown -R user1 User_user1
# chgrp -R gis_manager User_user1
 
注:将归属组给 gis_manager 是为了让 gis_manager 的组用户可以完全控制处理 private 外的所有目录及文件

 
 

linux连接 samba

1、安装 samba 客户端

# yum install -y samba-client
在这里插入图片描述

 

2、查看 samba 服务器信息

# smbclient -L 192.168.1.5
在这里插入图片描述

 

3、登录并查看 samba 服务器

# smbclient -L 192.168.1.5 -U alun%zuishuai

 

4、将共享盘挂载到本地

# mount -o username=alun,password=zuishuai //192.168.1.39/share /mnt/user1

 
 
 
 
 
 
 
 

配置详解


 

global

在这里插入图片描述

参数含义如下

参数含义备注
wrokgroup工作组,类似 windows 的工作组
netbios name名称,用来代替 ip 进行连接1、需要启动 nmb 服务

2、需要和 windows 处于同一个工作组
interfaces设置 samba 基于哪个 ip 进行共享
hosts allow控制哪些注记能访问格式一:127. —— 仅本机

192.168.12. —— 12网段的所有机器

192.168.13. —— 13网段的所有机器

如:hosts allow = 192.168.1. 192.168.2. —— 允许 1、2 网段访问
log file控制日志是否生成、在哪生成、如何命名。需要配合 log level 使用,否则只生成日志,不记录信息可以使用宏配置来进行日志命名,如 /var/log/samba/log.%I —— 以客户机 ip 来分别记录不同的日志
log level日志的记录级别,默认为 0 即不记录日志如 log level = 2
max log size单位 kb,当日志达到该大小时,将轮循 aotatemax log size = 5120

 

宏定义

含义
%m客户端主机的 NetBios 名
%M客户端注记的 FQDN
%H当前用户家目录路径
%U当前用户的用户名
%g当前用户所属组
%hsamba 服务器的主机名
%Lsamba 服务器的 NetBios 名
%I(大写 i)客户端的 ip 地址
%T当前的日期和时间
%S可登录的用户名

 
 
 
 

配置特定目录共享

配置结构如下

[共享名称] —— 远程网络看到的共享名称
	comment —— 注释信息
	path —— 所共享的目录路径
	public —— 能否被 guest 访问的共享,默认 no 和 guest ok 类似
	browsable —— 是否允许所有用户浏览此共享,默认为 yes,no为隐藏
	writable —— 可以被所有用户读写,默认为 no
	read only —— 只读模式,默认为no,若和 writeable 同时书写,则靠后的生效
	write list —— 用户、@组名、用 逗号(,) 分割
	valid users —— 特定用户才能访问该共享,如果为空,则允许所有用户

 
 
 
 

shell 自动创建用户

创建好组后,后续可以使用 shell 脚本来创建用户,更改用户名及相关信息即可

#!/bin/bash

USER="ALun"
GROUP="gis_user"
PRIVATE_FOLDER=/share/User_${USER}/private
USER_FOLDER=/share/User_${USER}
PASSWORD="1111"

echo "Step 1. Add User ${USER}"
useradd -s /sbin/nologin ${USER}

echo "Step 2. Add User ${USER} to group ${GROUP}"
usermod -aG ${GROUP} ${USER}

echo "Step 3. Add User to samba"
printf "${PASSWORD}\n${PASSWORD}\n" | smbpasswd -a -s ${USER}

echo "Step 4. Create share folder"
mkdir -p ${PRIVATE_FOLDER}
chmod 700 ${PRIVATE_FOLDER}
chmod 755 ${USER_FOLDER}
chown -R ${USER} ${USER_FOLDER}
chgrp -R gis_manager ${USER_FOLDER}

echo "Finish!"
Logo

更多推荐