本指南详解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)的权限,避免其误操作或恶意访问其他目录,本文将详细介绍如何创建用户并限制其仅能访问指定的文件夹,涵盖基础命令、配置步骤及安全注意事项。
创建用户并设置基础权限
创建新用户
使用useradd或adduser命令创建用户,两者的区别在于:useradd是Linux基础命令,参数更灵活,适合脚本化操作;adduser是交互式命令,更适合手动创建(部分发行版如Ubuntu默认安装adduser),这里以useradd为例:
# 创建用户(user1),并指定家目录为/data/user1_home sudo useradd -m -d /data/user1_home -s /bin/bash user1
参数说明:

-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环境中需要访问基础命令(如ls、cd),因此需复制必要的库文件和二进制文件到目标文件夹,以/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原创文章,转载或复制请以超链接形式并注明出处。

