在 Linux 系统中,安全上下文是指用户的 UID 和 GID 是否匹配文件的所有者或所属组。用户和组通过标识符与进程和文件关联。
用户组分为以下几类:
- 私有组:仅包含用户自身,并与用户名同名。创建用户时如果没有指定所属组,系统会自动创建一个与用户名同名的组。
- 基本组:用户的默认组。
- 附加组:除基本组外的其他组。
文件权限分为三种:
- r (读):允许使用命令如 cat 查看文件内容。
- w (写):允许编辑或删除文件。
- x (执行):允许作为命令提交给内核运行。
目录权限也有类似的设定:
- r:允许列出目录中的所有文件。
- w:允许在此目录中创建文件。
- x:允许切换到此目录并查看其内部文件的详细信息。
权限组合:
rwx 表示完全权限,r-x 表示读和执行权限,rw- 表示读写权限等。
常见的权限数值:
0 无权限,1 执行,2 写入,3 写和执行,4 读取,5 读和执行,6 读写,7 读写执行。
权限模式举例:
755 表示 rwxr-xr-x,640 表示 rw-r-----,660 表示 rw-rw----
用户数据库文件 /etc/passwd 包含用户的 UID 和 GID 信息。
[rhel@localhost ~]$ ll /etc/passwd
-rw-r--r--. 1 root root 1427 Jun 21 2015 /etc/passwd
组数据库文件 /etc/group 包含用户的 GID 信息。
[rhel@localhost ~]$ ll /etc/group
-rw-r--r--. 1 root root 760 Jun 21 2015 /etc/group
影子口令文件 /etc/shadow 和 /etc/gshadow 分别存储用户和组的加密密码。
[rhel@localhost ~]$ ll /etc/shadow
----------. 1 root root 813 Jun 21 2015 /etc/shadow
/etc/passwd 文件格式:
用户名:密码:UID:GID:注释:家目录:默认 SHELL
/etc/shadow 文件格式:
用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间
用户管理命令 useradd 可用于创建新用户。
[root@localhost ~]# useradd cxiong
设置用户密码使用 passwd 命令。
[root@localhost ~]# passwd cxiong
用户默认配置文件 /etc/default/useradd 定义了新用户的默认属性。
[root@localhost default]# cat useradd
创建新组使用 groupadd 命令。
[root@localhost default]# groupadd mygroup
特殊权限 SUID、SGID 和 Sticky Bit:
- SUID (Set User ID):使程序以文件所有者的身份运行。
- SGID (Set Group ID):使程序以文件所属组的身份运行。
- Sticky Bit:防止其他用户删除不属于自己的文件。
示例:/usr/bin/passwd 文件具有 SUID 权限。
[rhel@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
共享目录设置 SGID 和 Sticky Bit 可以确保用户在该目录下创建的文件归属于特定组且只有文件所有者可以删除。
[root@localhost ~]# chmod g+s /tmp/project/
[root@localhost ~]# chmod o+t /tmp/project/