Linux中创建新用户并赋予指定目录的相关权限
在Linux服务器运维和多人协作的开发场景中,经常需要为不同的使用者创建独立用户,并限制其仅特定的目录,避免误操作影响系统或其他用户的文件。本文将详细介绍完整的操作流程和注意事项。
一、创建新用户
Linux系统中创建新用户最常用的是useradd命令,基础语法如下:
# 创建名为testuser的新用户,同时创建家目录 useradd -m testuser
参数说明:-m选项会在/home目录下为新建用户创建对应的家目录,如果不加该参数,用户将没有默认。
创建用户后需要为其设置登录密码,使用passwd命令:
# 为testuser设置密码,执行后会提示输入两次密码 passwd testuser
二、创建需要授权的指定目录
如果需要为用户授权的目录尚未存在,可以先使用mkdir命令创建,例如创建/data/project作为指定目录:
# 创建多级目录,如果父目录不存在会自动创建 mkdir -p /data/project
参数说明:-p选项可以确保创建目录时,如果路径中的父目录不存在,会自动一并创建,避免报错。
三、修改目录所属用户和用户组
如果希望新用户对该目录拥有完全控制权,最直接的方式是将目录的所属用户修改为新用户,所属用户组也同步修改:
# 将/data/project目录的所属用户改为testuser,所属用户组改为testuser chown -R testuser:testuser /data/project
参数说明:-R选项表示递归修改,会将目录下的所有子文件和子目录的所属关系一并修改,适合目录中已有内容的场景。
四、通过用户组分配权限(更灵活的方案)
如果后续还需要给其他用户开放该目录的访问权限,使用用户组管理会更灵活,操作步骤如下:
1. 创建专用用户组
# 创建名为project_group的用户组 groupadd project_group
2. 将新用户加入该用户组
# 将testuser加入project_group用户组 usermod -aG project_group testuser
参数说明:-aG中-a表示追加用户到组,-G指定目标用户组,注意必须加-a参数,否则会覆盖用户原有的其他用户组归属。
3. 修改目录所属用户组并设置权限
# 将目录所属用户组改为project_group,用户仍保持为root或其他管理用户 chown -R :project_group /data/project # 给用户组分配读写执行权限,其他用户无权限 chmod 770 /data/project
权限说明:770中第一位7表示所属用户权限(读4+写2+执行1),第二位7表示所属用户组权限,第三位0表示其他用户无任何权限。此时只有目录所属用户和project_group组的用户能访问该目录。
五、验证权限配置
切换为新用户,测试是否能正常访问和操作目录:
# 切换为testuser用户 su - testuser # 进入指定目录测试 cd /data/project touch test.txt ls -l
如果可以正常进入目录、创建文件,说明权限配置生效。如果提示权限不足,可以通过ls -ld /data/project命令查看目录的权限和所属关系,排查问题。
六、注意事项
尽量不要给普通用户分配root权限,避免误操作破坏系统。
如果目录需要被多个用户访问,优先使用用户组权限管理,比单独修改每个用户的权限更高效。
修改权限前建议先备份目录中的重要文件,避免权限设置错误导致文件无法访问。
如果需要限制用户仅能通过SFTP访问指定目录,还需要额外配置SSH服务,限制用户的shell为
/sbin/nologin或者配置chroot环境。