Linux/Unix是一个用户、多任务的操作系统。如果你需要管理一个服务器,或者以后将会成为一个服务器管理员,那么用户管理是你必须要掌握的。
用户和用户组
用户
用户是能够获取系统资源权限的集合,每个用户都会分配一个特有的 id 号 ,称为 UID
用户的分类
Linux 操作系统的用户可以有多个角色,包括普通用户、管理员(超级用户或root)以及系统用户。
- 超级用户:超级用户拥有系统的完全控制权,UID 为 0,超级用户可以进行任何操作,也可以运行任何命令,在使用 root 用户时候要非常谨慎操作
- 普通用户:普通用户可以对自己目录下的文件进行访问和修改,同时也可以访问经过授权的文件和目录,UID 为 1000 - 60000
- 虚拟用户:系统用户通常用于运行系统服务和守护进程(如数据库服务器、Web服务器等)。这些用户通常没有登录权限,且权限受限,以增强系统安全性。UID 为 1 - 999
查看用户
id [options] [username]
输出:
- UID:用户标识符
- GID:组标识符
- groups:用户所属组的列表,包括主组和附加组
用法详情
用户组
Linux 用户组就是一组具有相同特性(具有相同的访问权限)的用户集合
用户组的作用
- 权限管理:用户组使得系统管理员能够方便地为一组用户设置相同的访问权限。通过将用户分配到组中,管理员可以将文件和目录的权限分配给组,而不是单独设置每个用户的权限。
- 资源共享:用户组允许成员之间共享文件和目录。例如,开发团队可以有一个专门的用户组,以便所有开发人员可以访问团队的共享项目文件。
组的类型
- 主组:每个用户都有一个主组(通常是在用户创建时指定的),主组是用户的主要组。主组的GID在用户的
/etc/passwd
条目中定义。 - 附加组:用户可以加入一个或多个附加组。附加组允许用户获得这些组的额外权限。这些组的ID(GID)会在用户的
/etc/group
文件中列出
用户和用户组的关系
用户和用户组的关系非常灵活,可以一对一,多对一,一对多也可以多对多。
当一个用户同时属于不同组时候,该用户的权限为所有用户组的权限的集合,即并集
- 如果一个文件夹的权限为
rwxr-xr--
,而两个用户组的权限分别为:- 组A:
rwx---
(完全权限) - 组B:
r--r--
(只读权限)
- 组A:
- 如果用户同时属于组A和组B,用户的实际权限将是这些组权限的并集。也就是说,用户将具有组A的所有权限,因为组A的权限比组B的权限更广泛。
管理用户
在 Linux 系统中,每个普通用户都有账号,密码,主目录,权限等信息
创建用户
adduser
& useradd
- useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。
- adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本
修改用户信息
usermod
usermod [options] LOGIN
# The usermod command modifies the system account files to reflect the changes that are specified on the command line.
删除用户
userdel
userdel [options] user_name
修改用户密码
passwd [options] user_name
root 用户可以修改任何用户的密码,普通用户只能修改自己的密码
管理用户组
这里只列举常用的指令,并不提供详细的使用方法,如果想要了解请参考该链接
创建用户组
groupadd [options] group_name
修改用户组
groupmod [options] group_name
删除用户组
groupdel [options] group_name
关联用户和组
gpasswd [options] group_name
文件和权限管理
在上文介绍了用户分为不同等级,不同的用户对于文件的访问权限也是不同的。同时,每个文件也拥有不同的权限信息,共同作用与 Linux 系统的权限管理
权限信息
概述
权限是操作系统限制对资源访问的一种机制,权限一般分为读(r),写(w),执行(x)
我们可以使用 ls -l
列出文件的详细信息
$ ls -l /etc/passwd
- rwx rw- r-- 1 root root 1641 May 4 23:42 /etc/passwd
- --- --- --- | | | | |__________|
| | | | | | | | |_ Date
| | | | | | | |__________ File Size
| | | | | | |_______________ Group
| | | | | |____________________ User
| | | | |_______________________ Number of hard links
| | | |_ Permission of others (read)
| | |_____ Permissions of the group (read, write)
| |_________ Permissions of the owner (read, write, execute)
|____________ File type (- = File, d = Directory, l = Link, ... )
权限位说明
权限位一般有 10 个字符,将其分为 4 组:
- 第 1 位:
d
表示为目录-
表示普通文件 - 2 - 4 位:文件所有者的权限
- 5 - 7 位:文件所属组的权限
- 8 - 10 位:其他用户的权限
管理文件权限
chmod
– change file mode bits
使用权限数更改
我们可以将一组权限位看作三位的二进制数:
rwx – 111 r-x – 101,拥有哪一位的权限该位数置为 1,将该二进制数转化为十进制数,我们就得到一个权限数
例如:7 对应 111 则拥有 rwx 的所有权限
chmod 777 test.sh
则表示对 test.sh 文件所有者,所属组,其他用户都赋予所有权限
指定修改
[ugoa...][[+-=][rwxXst...]...]
- u:文件所有者
- g:文件所属组
- o:其他用户
- a:以上三个
举例:
说明:赋予其他用户写入 test_memory 文件的权限
chown
修改所属用户或所属组
用法 :chown user:group test_txt
更多用法