useradd
useradd命令用于创建新的用户。
格式为: useradd [选项] 用户名
可以使用useradd命令创建用户账户。使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
useradd命令中的用户参数以及作用
| 参数 | 作用 |
|---|---|
| -d | 指定用户的家目录(默认为/home/username) |
| -e | 账户的到期时间,格式为YYYY-MM-DD. |
| -u | 指定该用户的默认UID |
| -g | 指定一个初始的用户基本组(必须已存在) |
| -G | 指定一个或多个扩展用户组 |
| -N | 不创建与用户同名的基本用户组 |
| -s | 指定该用户的默认Shell解释器 |
groupadd
groupadd命令用于创建用户组。为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。
格式为: groupadd [选项] 群组名
usermod
usermod命令用于修改用户的属性。Linux系统中的一切都是文件,因此在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展用户组、默认终端等。
格式为: usermod [选项] 用户名
usermod命令中的参数及作用
| 参数 | 作用 |
|---|---|
| -c | 填写用户账户的备注信息 |
| -d -m | 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
| -e | 账户的到期时间,格式为YYYY-MM-DD |
| -g | 变更所属用户组 |
| -G | 变更扩展用户组 |
| -L | 锁定用户禁止其登录系统 |
| -U | 解锁用户,允许其登录系统 |
| -s | 变更默认终端 |
| -u | 修改用户的UID |
passwd
passwd命令用于修改用户密码、过期时间、认证信息等。普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码。
格式为: passwd [选项] [用户名]
passwd命令中的参数以及作用
| 参数 | 作用 |
|---|---|
| -l | 锁定用户,禁止其登录 |
| -u | 解除锁定,允许用户登录 |
| —stdin | 允许通过标准输入修改用户密码,如echo “NewPassWord” | passwd —stdin Username |
| -d | 使该用户可用空密码登录系统 |
| -e | 强制用户在下次登录时修改密码 |
| -S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
userdel
userdel命令用于删除用户。如果我们确认某位用户后续不再会登录到系统中,则可以通过userdel命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。
格式为: userdel [选项] 用户名
userdel命令的参数以及作用
| 参数 | 作用 |
|---|---|
| -f | 强制删除用户 |
| -r | 同时删除用户及用户家目录 |
文件权限与归属
尽管在Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分。
- -:普通文件。
- d:目录文件。
- l:链接文件。
- b:块设备文件。
- c:字符设备文件。
- p:管道文件。
在Linux系统中,每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。
对目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。
文件的读、写、执行权限可以简写为rwx,亦可分别用数字4、2、1来表示,文件所有者,所属组及其他用户权限之间无关联。
文件权限的字符与数字表示
| 权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
|---|---|---|---|---|---|---|---|---|---|
| 字符表示 | r | w | x | r | w | x | r | w | x |
| 数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
| 权限分配 | 文件所有者 | 文件所属组 | 其他用户 |
chmod 和 chown
chmod 设置文件权限
chown 设置文件所有者所有组属性
文件的特殊权限
在复杂多变的生产环境中,单纯设置文件的 rwx 权限无法满足我们对安全和灵活性的需求,因此便有了SUID、SGID与SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。
SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。
SGID
SGID主要实现如下两种功能:
- 让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
- 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
SBIT
SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。文件的隐藏属性
Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。有用户曾经在生产环境和RHCE考试题目中碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件也保障了Linux系统的安全性。chattr
chattr 命令用于设置文件的隐藏权限。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。chattr命令中可供选择的隐藏权限参数非常丰富。
格式为:chattr [参数] 文件
chattr命令中用于隐藏权限的参数及其作用
| 参数 | 作用 |
|---|---|
| i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
| a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
| S | 文件内容在变更后立即同步到硬盘(sync) |
| s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
| A | 不再修改这个文件或目录的最后访问时间(atime) |
| b | 不再修改文件或目录的存取时间 |
| D | 检查压缩文件中的错误 |
| d | 使用dump命令备份时忽略本文件/目录 |
| c | 默认将文件或目录进行压缩 |
| u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
| t | 让文件系统支持尾部合并(tail-merging) |
| x | 可以直接访问压缩文件中的内容 |
lsattr
lsattr命令用于显示文件的隐藏权限。在Linux系统中,文件的隐藏权限必须使用lsattr命令来查看。
格式为: lsattr [参数] 文件
文件访问控制列表
setfacl
setfacl命令用于管理文件的ACL规则。文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。
格式为: setfacl [参数] 文件名称
getfacl
getfacl命令用于显示文件上设置的ACL信息。想要设置ACL,用的是setfacl命令;要想查看ACL,则用的是getfacl命令。
格式为: getfacl 文件名称
su命令与sudo服务
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务
格式为: sudo [参数] 命令名称
sudo服务中的可用参数以及作用
| 参数 | 作用 |
|---|---|
| -h | 列出帮助信息 |
| -l | 列出当前用户可执行的命令 |
| -u 用户名或UID值 | 以指定的用户身份执行命令 |
| -k | 清空密码的有效时间,下次执行sudo时需要再次进行密码验证 |
| -b | 在后台执行指定的命令 |
| -p | 更改询问密码的提示语 |
sudo命令具有如下功能:
- 限制用户执行指定的命令:
- 记录用户执行的每一条命令;
- 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
- 验证密码的后5分钟内(默认值)无须再让用户再次验证密码。

