Linux用户权限管理基础
Linux系统的权限管理基于用户和用户组机制,每个文件和进程都关联了对应的属主、属组和其他用户的权限标识。理解用户、用户组与权限的对应关系是做好权限管理的前提。

用户与用户组基础操作
系统中所有用户的信息存储在/etc/passwd文件中,用户组信息存储在/etc/group文件。常用的用户管理命令如下:
- 创建新用户:
useradd - 设置用户密码:
passwd - 修改用户所属组:
usermod - 创建用户组:
groupadd
以下是创建用户并分配用户组的示例代码:
# 创建名为dev的用户组 groupadd dev # 创建用户test_user并指定主组为dev useradd -g dev test_user # 为test_user设置密码 passwd test_user # 查看用户所属组信息 groups test_user
文件权限基础
Linux文件权限分为读(r)、写(w)、执行(x)三种,分别对应数字4、2、1。使用ls -l命令可以查看文件的权限信息,输出格式中前10位字符的含义如下:
- 第1位:文件类型,-表示普通文件,d表示目录
- 第2-4位:属主权限
- 第5-7位:属组权限
- 第8-10位:其他用户权限
文件权限配置方法
修改文件权限最常用的命令是chmod,可以基于数字模式或符号模式调整权限。修改文件属主和属组使用chown命令。
chmod命令使用
数字模式直接通过三位数字组合设置权限,符号模式则通过u(属主)、g(属组)、o(其他用户)、a(所有用户)配合+、-、=操作调整权限。
以下是两种模式的使用示例:
# 数字模式:设置文件权限为属主读写执行,属组读执行,其他用户读执行 chmod 755 test.sh # 符号模式:给属组添加写权限 chmod g+w test.sh # 符号模式:移除其他用户的所有权限 chmod o-rwx test.sh # 递归修改目录下所有文件的权限 chmod -R 644 /data/logs
chown命令使用
修改文件属主和属组时,若只修改属主直接跟用户名,同时修改属主和属组使用用户名:属组名的格式。
# 修改test.txt的属主为test_user chown test_user test.txt # 修改test.txt的属主为test_user,属组为dev chown test_user:dev test.txt # 递归修改/data目录的属主和属组 chown -R test_user:dev /data
sudo权限管理
sudo允许普通用户以root身份执行特定命令,避免直接使用root账号操作,降低误操作风险。sudo的配置文件为/etc/sudoers,建议使用visudo命令编辑该文件,避免语法错误导致sudo失效。
基础sudo配置
在/etc/sudoers文件中,常见的配置规则如下:
- 允许用户执行所有命令:
用户名 ALL=(ALL) ALL - 允许用户执行特定命令:
用户名 ALL=(ALL) /usr/bin/ls,/usr/bin/cat - 允许组用户执行所有命令:
%组名 ALL=(ALL) ALL - 免密码执行命令:
用户名 ALL=(ALL) NOPASSWD: ALL
以下是配置普通用户使用sudo的示例:
# 使用visudo编辑配置文件 visudo # 在文件末尾添加以下内容,允许test_user执行所有命令 test_user ALL=(ALL) ALL # 保存退出后,test_user可以通过以下方式执行root命令 sudo ls /root # 查看当前用户的sudo权限 sudo -l
系统安全设置实践
除了权限管理,还需要配合基础的安全设置加固Linux系统,减少安全风险。
账号安全设置
- 禁用root远程登录:修改
/etc/ssh/sshd_config,设置PermitRootLogin no,重启sshd服务生效 - 设置密码复杂度策略:修改
/etc/security/pwquality.conf,配置密码最小长度、复杂度要求 - 定期清理无用账号:删除长期不使用的用户,避免账号泄露风险
SSH服务安全加固
SSH是Linux远程管理的主要方式,加固SSH配置可以有效降低暴力破解风险:
# 修改SSH配置文件 vim /etc/ssh/sshd_config # 修改以下配置项 # 禁止root远程登录 PermitRootLogin no # 修改默认端口,避免使用22端口 Port 2222 # 禁止使用空密码登录 PermitEmptyPasswords no # 重启sshd服务使配置生效 systemctl restart sshd
防火墙基础配置
使用firewalld或iptables配置防火墙规则,只开放必要的端口,关闭无用端口。以下是firewalld的基础操作示例:
# 启动firewalld服务 systemctl start firewalld # 设置开机自启 systemctl enable firewalld # 开放2222端口(SSH修改后的端口) firewall-cmd --add-port=2222/tcp --permanent # 移除默认的22端口开放 firewall-cmd --remove-port=22/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload # 查看当前开放的端口 firewall-cmd --list-ports
权限管理常见问题
在实际使用中,经常会遇到权限相关的报错,以下是常见问题的排查方法:
- 提示Permission denied:检查对应文件的权限设置,确认当前用户是否有对应操作权限
- sudo命令无法使用:检查
/etc/sudoers配置是否正确,用户是否在sudo组 - 目录无法进入:目录需要有执行权限才能进入,检查目录的x权限是否配置
合理的用户权限管理和安全设置是Linux系统稳定运行的保障,生产环境中需要根据实际业务需求细化权限分配,避免过度授权,同时定期审计权限配置和安全规则,及时修复潜在风险。