一、用户身份与能力
在RHEL中,用户身份有下面这些
管理员UID为 0 : 系统的管理用户
系统用户UID为 1~999 : Linux系统为了避免因为某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围
普通用户 UID从1000开始 : 是由管理员创建的用于日常工作的用户
在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被纳入其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要
1、useradd
用于创建新的用户,格式为
useradd [选项] 用户名
使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。当然,这些默认设置可以使用参数进行更改。
一旦用户的解释器被设计为nlogin,则代表该用户不能登录到系统中去
2、groupadd
用于创建用户组,格式为
groupadd [选项] 群组名
为了能够更高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限
3、usermod
用于修改用户的属性,格式为
usermod [选项] 用户名
用户的信息保存在/etc/passwd中,可以直接使用文本编辑器来修改其中的用户参数项目,也可以使用usermod命令修改已经创建的用户信息,诸如用户的UID、基本扩展用户组、默认终端等。
usermod命令中的参数及作用
参数 | 作用 |
---|---|
-e | 指定账户的到期时间 |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
4、passwd
用于修改用户密码、过期时间、认证信息等,格式为
passwd [选项] [用户名]
passwd命令中的参数及作用
参数 | 作用 |
---|---|
-l | 锁定用户,禁止其登录 |
-u | 解除锁定,允许其登录 |
–stdin | 允许通过标准输入修改用户密码 |
-d | 使该用户可用空密码登录系统 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
5、userdl
用于删除用户
二、文件权限与归属
Linux系统使用不同的字符来区分不同的文件类型
- :普通文件
d :目录文件
l : 链接文件
b : 块设备文件
c : 字符设备文件
p : 管道文件
三、文件的特殊权限
1、SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
例如,查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x变成了s就意味着该文件被赋予了SUID权限
如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S
2、SGID
SGID主要实现如下两种功能
1、让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
2、在某个目录中创建的文件将自动继承该目录的用户组(只可以对目录进行设置)
如果现在需要在一个部门内设置共享目录,让部门内的所有人员都能够读取目录中的内容,那么就可以创建部门共享目录后,在目录上设置SGID特殊权限位。这样,部门内的任何人员在里面创建的任何文件都会归属到该目录的所属组,而不再是自己的基本用户组。此时,用到的就是SGID的第二个功能。
cd /tmp
mkdir testdir
ls -ald testdir
drwxr-xr-x. 2 root root 6 Feb 11 11:50 testdir/ (此行为输出)
chmod -Rf 777 testdir/
chmod -Rf g+s testdir/
drwxrwsrwx. 2 root root 6 Feb 11 11:50 testdir/ (此行为输出)
chmod介绍
chmod能够用来设置文件或目录的权限,格式为
chmod [参数] 权限 文件或目录名称
chown介绍
chown能够用来设置文件或目录的所有者和所属组,格式为
chown [参数] 所有者:所属组 文件或目录名称
chmod和chown还有特殊的用法,针对目录进行操作时,需要加上大写参数-R来表示递归操作,即对目录内所有的文件进行整体操作
3、SBIT
SBIT可以保证用户只能删除自己的文件,而不能删除其他用户的文件
RHEL系统中的/tmp作为一个共享文件的目录,默认已经设置了SBIT特殊权限位,因此除非是该目录的所有者,否则无法删除这里面的文件
当目录被设置成SBIT特殊权限位后,文件的其他人权限部分的x执行权限就会变成t或者T,原有x执行权限会变成t,原本没有则会变成T
要是想对其他目录来设置SBIT特殊权限位,用chmod命令就可以了。对应的参数o+t代表来设置SBIT粘滞位权限。
四、文件的隐藏属性
1、chattr
用于设置文件的隐藏权限,格式为
chattr [参数] 文件
如果想要把某个隐藏功能添加到文件上,需要追加”+参数”,如果想要把某个隐藏功能移出文件,则需要追加”-参数”
chattr命令中用于隐藏权限的参数及作用
参数 | 作用 |
---|---|
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许追加内容,无法覆盖/删除内容 |
S | 文件在变更后立即同步到硬盘 |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
2、lsattr
用于显示文件的隐藏权限,格式为
lsattr [参数] 文件
五、文件访问控制列表
如果希望对某个指定的用户进行单独的权限控制,则需要用到文件的访问控制列表(ACL)
通俗来说,基于普通文件或目录设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限
另外,如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,则文件不再继承其所在目录的ACL。
1、setfacl
用于管理文件的ACL规则,格式为
setfacl [参数] 文件名称
使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的操作
其中,针对目录文件需要使用-R递归参数;针对普通文件则需要-m参数
如果想要删除某个文件的ACL,则可以使用-b参数
setfacl -Rm u:linuxprobe:rwx /root
注:如果查看文件权限时最后一个点(.)变成了”+”号,则说明设置了ACL
2、getfacl
用于显示文件上设置的ACL信息
六、su与sudo服务
su命令可以解决切换用户的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户
su - linuxprobe
这个减号意味着完全切换到新的用户,即把环境变量信号也变更为新用户的相应信息,而不是保留原始的信息。
使用sudo命令把特定命令的执行权限赋予给指定用户,这样既可以保证用户能够完成特定的工作,也可以避免泄露root管理员密码
sudo服务的配置原则是 :在保证普通用户完成相应工作的前提下,尽可能少的赋予额外的权限
sudo服务中的可用参数以及作用
参数 | 作用 |
---|---|
-l | 列出当前用户可以执行的命令 |
-u 用户名或者UID值 | 以指定的用户身份执行命令 |
总结来说,sudo命令具有以下功能
限制用户执行指定的命令
记录用户执行的每一条命令
配置文件(/etc/sudoers)提供几种的用户管理、权限与主机等参数
验证密码的后5分钟内(默认值)无须再让用户再次验证密码