简单案例

需求

用户

用户
账号
用户组

张三

zhangsan

zhangsan

李四

lisi

lisi

公共数据

publicdata

publicdata

目录

名称
路径
权限
用户:组

公共数据

/data/公共数据

0770

publicdata:publicdata

张三

/data/张三

0770

zhangsan:zhangsan

李四

/data/李四

0770

lisi:lisi

用户与目录

用户
目录

张三

张三、公共数据

李四

李四、公共数据

步骤

创建linux用户

# 创建用户
# -M 不创建用户目录
# -s /sbin/nologin 不登录
# -c 备注
useradd -M -s /sbin/nologin -c '张三' zhangsan
useradd -M -s /sbin/nologin -c '李四' lisi
useradd -M -s /sbin/nologin -c '公共数据' publicdata

# 将用户添加到 公共数据组
usermod -a -G publicdata zhangsan
usermod -a -G publicdata lisi

创建samba用户

# 创建samba用户
# echo -e 'password\npassword' 打印两遍密码并通过管道传输到 pdbedit
# smbpasswd -a 用户名  添加用户 
echo -e 'password\npassword' | smbpasswd -a zhangsan
echo -e 'password\npassword' | smbpasswd -a lisi
echo -e 'password\npassword' | smbpasswd -a publicdata

创建目录

# 创建目录
mkdir -p /data/公共数据
mkdir -p /data/张三
mkdir -p /data/李四

# 设置权限
chmod 0770 /data/公共数据
chmod 0770 /data/张三
chmod 0770 /data/李四

# 更改用户及用户组
chown publicdata:publicdata /data/公共数据
chown zhangsan:zhangsan /data/张三
chown lisi:lisi /data/李四

samba配置一

修改 /etc/samba/smb.conf

[global]
        workgroup = SAMBA
        # 用户认证
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[公共数据]
        # 描述
        comment = 公共数据
        # 路径
        path = /data/公共数据
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = publicdata
        # 所有者
        force user = publicdata
        # 登陆校验(用户、用户组)列表
        valid users = @publicdata
        # 读取权限(用户、用户组)列表
        read list = @publicdata
        # 写入权限(用户、用户组)列表
        write list = @publicdata
        
[张三]
        # 描述
        comment = 张三个人数据
        # 路径
        path = /data/张三
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = zhangsan
        # 所有者
        force user = zhangsan
        # 登陆校验(用户、用户组)列表
        valid users = @zhangsan
        # 读取权限(用户、用户组)列表
        read list = @zhangsan
        # 写入权限(用户、用户组)列表
        write list = @zhangsan
[李四]
        # 描述
        comment = 李四个人数据
        # 路径
        path = /data/李四
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = lisi
        # 所有者
        force user = lisi
        # 登陆校验(用户、用户组)列表
        valid users = @lisi
        # 读取权限(用户、用户组)列表
        read list = @lisi
        # 写入权限(用户、用户组)列表
        write list = @lisi

重载配置

systemctl restart smb.service

结果

samba配置二

smb.conf

修改 /etc/samba/smb.conf

[global]
        workgroup = SAMBA
        # 用户认证
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        # 更具用户导入不同配置, %U 用户名
        config file = /etc/samba/conf.d/user.conf.%U

创建子配置目录

mkdir -p /etc/samba/conf.d

公共数据目录配置

修改 /etc/samba/conf.d/directory.conf.公共数据

[公共数据]
        # 描述
        comment = 公共数据
        # 路径
        path = /data/公共数据
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = publicdata
        # 所有者
        force user = publicdata
        # 登陆校验(用户、用户组)列表
        valid users = @publicdata
        # 读取权限(用户、用户组)列表
        read list = @publicdata
        # 写入权限(用户、用户组)列表
        write list = @publicdata

张三目录配置

修改 /etc/samba/conf.d/directory.conf.张三

[张三]
        # 描述
        comment = 张三个人数据
        # 路径
        path = /data/张三
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = zhangsan
        # 所有者
        force user = zhangsan
        # 登陆校验(用户、用户组)列表
        valid users = @zhangsan
        # 读取权限(用户、用户组)列表
        read list = @zhangsan
        # 写入权限(用户、用户组)列表
        write list = @zhangsan

李四目录配置

修改 /etc/samba/conf.d/directory.conf.李四

[李四]
        # 描述
        comment = 李四个人数据
        # 路径
        path = /data/李四
        # 是否可用
        available = yes
        # 在上级目录中显示
        browseable = yes
        # 创建文件权限
        create mode = 0660
        # 创建目录权限
        directory mode = 0770
        # 所有者用户组
        force group = lisi
        # 所有者
        force user = lisi
        # 登陆校验(用户、用户组)列表
        valid users = @lisi
        # 读取权限(用户、用户组)列表
        read list = @lisi
        # 写入权限(用户、用户组)列表
        write list = @lisi

张三用户配置

修改 /etc/samba/conf.d/user.conf.zhangsan

[global]
    include = /etc/samba/conf.d/directory.conf.公共数据
    include = /etc/samba/conf.d/directory.conf.张三

李四用户配置

修改 /etc/samba/conf.d/user.conf.lisi

[global]
    include = /etc/samba/conf.d/directory.conf.公共数据
    include = /etc/samba/conf.d/directory.conf.李四

重载配置

systemctl restart smb.service

结果

重写导入配置

示例:张三公共数据只读权限

修改 /etc/samba/conf.d/user.conf.zhangsan

[global]
    include = /etc/samba/conf.d/directory.conf.公共数据
    include = /etc/samba/conf.d/directory.conf.张三

[公共数据]
    # 写入权限(用户、用户组)列表
    write list = 

最后更新于