目录
一、管理用户账号和组账号
1、useradd
2、passwd
3、usermod
4、userdel
二、管理目录和文件的属性
1、组账号管理
1)groupadd
2)gpasswd
3)groupdel
4)groups
2、文件权限
1)chmod
2)chown
一、管理用户账号和组账号
用户账号
- 超级用户:拥有系统中的最高权限,并可以执行系统中的任何操作。
- 普通用户:是系统中的常规用户,通常用于执行一般的日常任务,如浏览文件、运行应用程序等。权限通常受到限制。
- 程序用户:是为了运行特定的服务或应用程序而创建的用户账户。通常具有最小的权限。
组账号
- 基本组(私有组):当用户创建文件或目录时,默认情况下,它们的所属组将设置为用户的基本组。
- 附加组(公共组):附加组是用户可以加入的其他组。
- UID:是用户的唯一标识符,用于在系统中区分不同的用户。0 是超级用户(root用户)的标识符,具有最高的权限。
- GID:是组的唯一标识符,用于在系统中区分不同的组。0 是超级用户(root用户)的基本组的标识符。
用户账号文件 /etc/passwd 有7个字段
用户名:x密码占位符:UID:GID:用户说明:家目录:登录shell
允许登录系统/bin/bash 不允许登录系统/sbin/nologin /bin/false
用户密码文件 /etc/shadow 有9个字段
用户名:密码字符串:上一次修改密码的时间:密码最短有限期:密码最长有限期:密码过期提前告警的时间:密码过期禁用用户的时间:账号失效的时间:空
从1970.1.1开始算起 默认为0不限制 默认为99999永不过期 默认为7
1、useradd
useradd 是 Linux 和 Unix 系统中用于创建新用户账户的命令。这个命令是 usermod、userdel 和 passwd 等命令的一部分,这些命令一起构成了用户管理的基础工具。以下是 useradd 命令的一些基本用法和选项:
基本用法:
-
指定用户主目录:
sudo useradd -d /home/newhome username这会创建一个新用户,并指定其主目录为
/home/newhome。 -
指定用户ID:
sudo useradd -u uid username这会创建一个新用户,并分配指定的用户ID(uid)。
-
指定用户组:
sudo useradd -g groupname username这会创建一个新用户,并将其加入到指定的用户组。
-
创建用户并指定其Shell:
sudo useradd -s /bin/bash username这会创建一个新用户,并指定其默认 shell 为
/bin/bash。
常用选项:
-m:在创建用户的同时,为其创建一个家目录。-M:不为用户创建家目录。-eYYYY-MM-DD:设置账户的过期日期。- -u:指定UID
- -g:基本组名或GID
- -G:附加组名或GID
- -d:指定家目录
- -s:指定登录shell
示例:
-
创建一个新用户 bob,并设置其家目录为
/home/bob:sudo useradd -m -d /home/bob bob -
创建一个新用户 alice,设置其默认 shell 为
/bin/bash:sudo useradd -s /bin/bash alice -
创建一个新用户 service,设置其为系统用户,并添加到
servicegroup用户组:sudo useradd -r -g servicegroup service
2、passwd
passwd 是一个用于更改用户密码的命令。它可以允许用户更改自己的密码,也可以允许超级用户(root)更改其他用户的密码。以下是 passwd 命令的一些基本用法和选项:
基本用法:
-
更改当前用户密码:
passwd这会提示您输入当前用户的旧密码,然后要求您输入新密码两次以进行确认。
-
更改指定用户密码(需要超级用户权限):
passwd username这会提示超级用户输入要更改密码的用户名,并要求输入新密码两次以进行确认。
常用选项:
-d:删除用户密码,使用户账户变成无密码状态。-l:锁定用户账户,禁止用户登录。-u:解锁用户账户,允许用户登录。-S:显示密码的状态信息,如过期时间、是否被锁定等。
示例:
-
更改用户 alice 的密码:
passwd alice -
锁定用户 bob 的账户:
passwd -l bob -
解锁用户 alice 的账户:
passwd -u alice
3、usermod
usermod 是一个用于修改用户账户属性的命令,它可以用于修改用户的各种属性,如用户名、用户ID、主目录、默认shell等。以下是 usermod 命令的一些基本用法和选项:
基本用法:
-
修改用户的用户名:
usermod -l new_username old_username这会将用户的用户名从
old_username修改为new_username。 -
修改用户的用户ID(UID):
usermod -u new_uid username这会将用户的用户ID修改为
new_uid。 -
修改用户的主目录:
usermod -d /new/home/dir username这会将用户的主目录修改为
/new/home/dir。
常用选项:
-c:用于添加一些关于用户的描述信息。-g:修改用户的主要用户组。-G:修改用户的附加用户组。-a:在-G选项中使用,用于将用户添加到附加用户组,而不是覆盖原有的用户组。-e:设置账户的过期日期。
4、userdel
userdel 是一个用于删除用户账户的命令,它用于从系统中删除指定的用户账户及相关文件。以下是 userdel 命令的一些基本用法和选项:
基本用法:
-
删除用户账户:
userdel username这会删除系统中的指定用户账户及其相关文件,但不会删除该用户的主目录(默认情况下)。
-
删除用户账户及其主目录:
userdel -r username添加
-r选项会删除用户账户及其关联的主目录和文件。
常用选项:
-f:强制删除用户账户,即使用户当前登录或用户的进程仍在运行中。-r:同时删除用户的主目录及其相关文件。-Z:删除用户的 SELinux 用户记录。
二、管理目录和文件的属性
| 系统环境初始化配置文件 | /etc/profile /etc/bashrc | 对所有用户有效 |
| 用户环境初始化配置文件 | ~/.bash_profile ~/.bashrc ~/.bash_logout | 只对当前用户有效 |
| /etc/profile ~/.bash_profile | 设置用户每次登录时要执行的命令(前面加export |
| /etc/bashrc ~/.bashrc | 设置切换shell环境时(包括登录系统时)要执行的命令 |
| ~/.bash_logout | 设置退出登录或shell环境时执行的命令 |
组账号文件 /etc/group 有4个字段
组账号名:x占位符:GID号:组账号成员
1、组账号管理
1)groupadd
groupadd 是一个用于在系统中创建新用户组的命令。它允许管理员在系统中添加一个新的用户组,并可以指定该用户组的组ID(GID)和其他属性。以下是 groupadd 命令的基本用法和选项:
基本用法:
- 创建新用户组:
groupadd groupname #这会在系统中创建一个名为 groupname 的新用户组。
常用选项:
-g GID:指定新用户组的组ID(GID)。如果未指定,系统将自动分配一个未被使用的GID。-r:创建一个系统用户组。这将为用户组分配一个低的GID,通常在500以下。
2)gpasswd
gpasswd 是一个用于管理用户组的命令,它允许管理员为用户组设置密码、添加或删除组成员等操作。以下是 gpasswd 命令的基本用法和选项:
基本用法:
-
设置用户组密码:
gpasswd groupname这会提示您输入一个密码,并将其与指定的用户组相关联。
-
添加用户到用户组:
gpasswd -a username groupname这会将指定的用户添加到指定的用户组中。
-
从用户组中删除用户:
gpasswd -d username groupname这会从指定的用户组中删除指定的用户。
常用选项:
-A username:指定一个用户作为管理员。管理员可以添加或删除用户组成员,以及更改用户组密码。-M username1,username2,...:直接设置用户组的成员列表,取代原有成员列表。-R:指定用户组为只读模式,禁止普通用户修改用户组。
3)groupdel
groupdel 是一个 Linux 命令,用于删除系统中的一个用户组。在删除用户组之前,通常需要确保没有任何用户属于该组,否则会出现错误。
命令格式如下:
groupdel [options] groupname
其中:
groupname是要删除的用户组的名称。
选项可以包括一些额外的参数,如 -f 用于强制删除组,即使仍有用户属于该组。
4)groups
groups 命令用于显示当前用户所属的用户组列表。在执行此命令时,系统会返回当前用户所属的所有用户组名称。
命令格式如下:
groups [username]
其中:
username是要查询其所属用户组的用户名。如果未指定用户名,则默认为当前登录用户。
示例:
groups
这会显示当前登录用户所属的所有用户组。
groups username
这会显示指定用户(username)所属的所有用户组。
注意:groups 命令仅显示当前用户的用户组列表,不会显示其他用户的信息。
查询登录系统的用户: w who users
2、文件权限
1)chmod
chmod 是一个用于修改文件或目录权限的命令,它允许用户设定文件或目录的读取、写入和执行权限。以下是 chmod 命令的基本用法和选项:
基本用法:
-
设定文件权限:
chmod permissions filename这会将指定文件的权限设置为
permissions所指定的权限。 -
设定目录权限:
chmod permissions directory这会将指定目录的权限设置为
permissions所指定的权限。
权限表示方式:
-
数字形式表示权限:
0:没有权限1:执行权限2:写入权限4:读取权限- 可以通过将这些数字相加来指定多个权限。例如,
7表示读、写、执行权限(4 + 2 + 1)。
-
符号形式表示权限:
r:读权限w:写权限x:执行权限+:添加权限-:移除权限=:设定权限
常用选项:
-R:递归地应用权限修改,包括目录下的所有文件和子目录。
示例:
-
将文件
example.txt的权限设置为所有者具有读取和写入权限,组用户具有读取权限,其他用户具有执行权限:chmod 640 example.txt -
将目录
documents及其下所有文件和子目录的权限设置为所有者具有读、写、执行权限,组用户和其他用户具有只读权限:chmod -R 755 documents -
将文件
script.sh的所有者添加执行权限:chmod u+x script.sh
注意:在使用 chmod 命令时,请务必谨慎,确保不会意外地更改了系统中文件或目录的权限,以免造成不必要的问题。
2)chown
chown 是一个用于改变文件或目录的所有者(owner)和/或所属组(group)的命令。这个命令通常由系统管理员使用,以便在需要时更改文件或目录的所有者和所属组。以下是 chown 命令的基本用法和选项:
基本用法:
-
改变文件的所有者和/或所属组:
chown [options] owner[:group] file(s)这会将指定文件的所有者改变为
owner,并可选地将所属组改变为group。如果未指定group,则会使用当前文件的所属组。 -
递归地改变目录及其下所有文件和子目录的所有者和/或所属组:
chown -R [options] owner[:group] directory(s)这会递归地改变指定目录下的所有文件和子目录的所有者和/或所属组。
常用选项:
-R, --recursive:递归地改变目录及其下所有文件和子目录的所有者和/或所属组。-v, --verbose:显示每个文件的改变详细信息。--reference=ref_file:从ref_file中复制文件所有者和/或所属组的信息。-h, --no-dereference:不跟踪符号链接的目标。
示例:
-
将文件
example.txt的所有者改变为john,所属组改变为developers:chown john:developers example.txt -
将文件
file1.txt的所有者改变为和文件file2.txt相同的所有者:chown --reference=file2.txt file1.txt -
将符号链接的目标文件的所有者改变为
admin,而不是链接本身的所有者:chown -h admin symlink_target