Linux创建用户并限制访问特定文件夹的完整指南

admin
本指南详解Linux下创建用户并限制访问特定文件夹的完整流程,首先使用useradd -m username创建用户并设置家目录,passwd username配置密码;通过chown username:username /target/folder将目标文件夹所有权赋予该用户;再用chmod 750 /target/folder限制基本权限,确保仅所有者可读写执行;若需精细控制,可结合setfacl -m u:username:rwx /target/folder添加访问规则,最后可编辑/etc/passwd禁用SSH登录,增强安全性,整个过程实现用户对指定目录的隔离访问,避免越权操作,保障系统安全。

在Linux系统中,为不同用户设置独立的访问权限是系统安全管理的核心需求之一,在多用户共享服务器的场景下,可能需要为某个用户或用户组分配仅能访问特定文件夹(如/home/user_data)的权限,避免其误操作或恶意访问其他目录,本文将详细介绍如何创建用户并限制其仅能访问指定的文件夹,涵盖基础命令、配置步骤及安全注意事项。

创建用户并设置基础权限

创建新用户

使用useraddadduser命令创建用户,两者的区别在于:useradd是Linux基础命令,参数更灵活,适合脚本化操作;adduser是交互式命令,更适合手动创建(部分发行版如Ubuntu默认安装adduser),这里以useradd为例:

# 创建用户(user1),并指定家目录为/data/user1_home
sudo useradd -m -d /data/user1_home -s /bin/bash user1

参数说明:

Linux创建用户并限制访问特定文件夹的完整指南

  • -m:自动创建家目录(若不指定-d,默认家目录为/home/用户名);
  • -d:指定用户家目录(这里设置为/data/user1_home,后续将限制用户仅能访问此目录);
  • -s:指定用户默认Shell(/bin/bash为标准交互式Shell,若仅需文件传输,可改为/usr/sbin/nologin禁止登录)。

设置用户密码

创建用户后需设置密码,否则无法登录:

sudo passwd user1
# 按提示输入两次密码

验证用户创建

切换到新用户,确认家目录和Shell是否正确:

su - user1
# 查看当前目录(应为/data/user1_home)
pwd
# 查看Shell类型
echo $SHELL

创建并配置用户可访问的特定文件夹

创建目标文件夹

假设需要限制用户仅能访问/data/user_data文件夹,先创建该文件夹并设置权限:

# 创建文件夹
sudo mkdir -p /data/user_data
# 设置文件夹所有者为user1,所属组为user1(或新建组,见下文)
sudo chown user1:user1 /data/user_data
# 设置文件夹权限为750(所有者可读/写/执行,所属组可读/执行,其他用户无权限)
sudo chmod 750 /data/user_data

可选:为用户创建独立组(推荐)

如果需要多个用户共享同一文件夹,可先创建组,再将用户加入组,并通过组权限控制访问:

# 创建组(data_group)
sudo groupadd data_group
# 将用户user1加入data_group
sudo usermod -aG data_group user1
# 修改文件夹所属组为data_group
sudo chown :data_group /data/user_data
# 设置文件夹权限为770(所有者和所属组可读/写/执行,其他用户无权限)
sudo chmod 770 /data/user_data

限制用户仅能访问特定文件夹(核心步骤)

限制用户访问特定文件夹的核心思路是:通过chroot环境或修改Shell配置,将用户的“根目录”锁定在目标文件夹内,使其无法访问上级目录,以下是两种常用方法:

使用chroot环境(推荐,隔离性强)

chroot(change root)可将用户的根目录临时切换到指定路径,使其无法访问目标文件夹外的文件,以下是详细步骤:

创建chroot目录结构

用户在chroot环境中需要访问基础命令(如lscd),因此需复制必要的库文件和二进制文件到目标文件夹,以/data/user_data为例:

# 创建chroot目录结构
sudo mkdir -p /data/user_data/{bin,lib,lib64,etc}
# 复制基础二进制文件(以`ls`和`bash`为例,根据用户需求调整)
sudo cp /bin/ls /data/user_data/bin/
sudo cp /bin/bash /data/user_data/bin/
# 复制必要的库文件(使用`ldd`命令查看依赖库)
sudo ldd /bin/ls | awk '{print $1,$2,$3}' | grep -v "=>" | awk '{print $3}' | xargs -I {} sudo cp {} /data/user_data/lib/
sudo ldd /bin/bash | awk '{print $1,$2,$3}' | grep -v "=>" | awk '{print $3}' | xargs -I {} sudo cp {} /data/user_data/lib/
# 注意:64位系统需额外复制lib64目录
sudo ldd /bin/ls | awk '{print $1}' | xargs -I {} sudo cp /lib64/{} /data/user_data/lib64/ 2>/dev/null || true
sudo ldd /bin/bash | awk '{print $1}' | xargs -I {} sudo cp /lib64/{} /data/user_data/lib64/ 2>/dev/null || true

配置chroot环境

复制必要的配置文件(如/etc/passwd、`/

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码