目录
一、管理用户账号和组账号
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
:不为用户创建家目录。-e
YYYY-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