基础


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,当日志达到该大小时,将轮循 aotate max log size = 5120

 

宏定义

含义
%m 客户端主机的 NetBios 名
%M 客户端注记的 FQDN
%H 当前用户家目录路径
%U 当前用户的用户名
%g 当前用户所属组
%h samba 服务器的主机名
%L samba 服务器的 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

更多推荐