跳到主要内容

用户与权限

Linux 是多用户系统,每个文件都归属于某个用户与用户组,并带有读、写、执行三类权限。理解权限模型是安全运维的前提。

UID、GID 与用户组

系统通过 UID(User ID)标识用户,通过 GID(Group ID)标识用户组。root 的 UID 为 0,系统用户(如 www-datanobody)UID 通常小于 1000。

id # 查看当前用户 UID/GID 与所属组
cat /etc/passwd # 用户信息
cat /etc/group # 组信息

常用命令:useradd/usermod/userdel 管理用户,groupadd/groupdel 管理组,passwd 设置密码。

文件权限 rwx

每个文件有三组权限:属主 u、属组 o、其他人 o,每位对应 r(读,4)、w(写,2)、x(执行,1)三种权限。

ls -l /etc/hosts
# -rw-r--r-- 1 root root 200 Jun 11 10:00 /etc/hosts

chmod 修改权限,支持八进制与符号两种模式。

chmod 755 script.sh # rwxr-xr-x
chmod u+x,g-w file.txt # 属主加执行,属组去掉写

chown 修改属主与属组,chgrp 单独修改属组。

chown user:group file.txt
chown -R www-data:www-data /var/www

特殊权限位

除普通 rwx 外,Linux 还有三个特殊位。

  • SUID(4):属主执行位,程序运行时以文件属主身份执行,如 /usr/bin/passwd
  • SGID(2):属组执行位,目录下新建文件自动继承目录属组。
  • Sticky Bit(1):其他用户执行位,目录内文件仅属主可删,如 /tmp

设置示例:chmod 4755 bin(SUID),chmod 2775 share/(SGID),chmod 1777 /tmp(Sticky)。

sudo 与 /etc/sudoers

为避免长期使用 root,可通过 sudo 临时提权。配置位于 /etc/sudoers,建议使用 visudo 编辑以自动校验语法。

# /etc/sudoers 示例
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL

# 免密码
likun ALL=(ALL) NOPASSWD: ALL

/etc/sudoers.d/ 下的独立文件可放置额外配置,便于模块化管理。