用户与用户组的介绍
在Linux中,每个文件和目录都有一个所有者和属组,用于控制对它们的访问权限
Linux用户
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理
换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响
不同用户具有不同的权限,毎个用户在权限允许的范围内完成不同的任务
提示
- 在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
- 而普通用户在许多地方的权限是受限的
- 每个用户在自己家目录下,拥有最高权限
Linux用户组
用户组是一组用户的集合,由管理员定义
目的就是更方便地管理和授予权限。同一用户组内的所有成员都具有相同的访问权,这些访问权取决于组的权限设置
用户与用户组的关系
在Linux中,每个用户都至少属于一个用户组,但也可以同时属于多个用户组
这些用户组定义了用户的访问权限,决定着用户可以执行哪些操作、访问哪些目录和文件等
用户管理的使用
要在Linux中管理用户,需要以root用户身份登录系统。
添加用户
useradd [选项] 用户名
选项说明:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
参数描述:
用户名:指定新账号的登录名
删除用户
userdel [-r] 用户名
选项说明:
- -r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户信息
这个命令将显示系统中所有现有的用户账户。
cat /etc/passwd
字段 | 含义 |
---|---|
用户名 | 用户登录系统时,使用的用户名 |
密码 | 密码位 |
UID | 用户标识号 |
GID | 缺省组标识号 |
注释性描述 | 例如,存放用户全名等信息 |
HOME目录 | 用户登录系统后的默认目录 |
命令解释器 | 用户使用的shell,默认为bash |
su与exit命令的使用
在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
普通用户的权限,一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
su和exit命令
su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
su [-l] 用户名
- -l : 符号是可选的,表示是否在切换用户后加载环境变量
切换用户后,可以通过exit
命令退回上一个用户,也可以使用快捷键:ctrl + d
提示
- 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
sudo命令
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限
注意
但是不建议长期使用root用户,避免带来系统损坏
我们也可以使用sudo命令,为普通的命令授权,临时以root身份执行
sudo 命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
在文件的最后添加
用户名 ALL=(ALL) NOPASSWD:ALL
- 其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码
id与whoami命令的使用
id命令
id <用户名>
终端会输出当前用户的身份信息,其中包括uid
和gid
字段,分别表示用户ID和组ID。如果uid
为0,则说明该用户是管理员
注意
id 用户名,一般是管理员使用
whoami命令
whoami
命令可以查看当前用户的用户名,但是不能直接判断该用户是否为管理员
whoami
命令行的提示符号 # 或者 $
命令行提示符中的$
和#
符号通常用来表示不同的用户或权限等级
注意
但并不能直接判断当前用户是为管理员
$
:该符号一般出现在非特权用户的命令提示符中,表示当前用户没有超级用户(root)的权限#
:该符号一般出现在超级用户(root)的命令提示符中,表示当前用户拥有最高权限
用户组的使用
用户组是一组用户的集合,由管理员定义
目的就是更方便地管理和授予权限。同一用户组内的所有成员都具有相同的访问权,这些访问权取决于组的权限设置
注意
要在Linux中管理用户组,需要以root用户身份登录系统
查看用户组
cat /etc/group
创建用户组
groupadd 用户组名
删除用户组
groupdel 用户组名
用户修改组
将用户添加到一个附加组中
usermod -aG 用户组名 用户名
将用户设置为指定组
usermod -G 用户组名 用户名
文件权限的查看
文件的类型
-
表示文件- d 表示文件夹
- l 表示链接
权限说明
-
r 读
- 文件:查看文件内容
- 文件夹:查看文件夹内容,如ls命令
-
w 写
- 文件:修改此文件
- 文件夹:在文件夹内:创建、删除、改名等操
-
x 执行
- 文件:可以将文件作为程序执行
- 文件夹:可以更改工作目录到此文件夹,即cd进入
-
-
无权限
修改文件权限chmod
在Linux中,chmod命令是用来修改文件或目录权限的命令
注意
通常,只有文件、文件夹的所属用户,或者有root权限的用户才能使用
通过chmod命令来对以下三种权限进行设置和变更
- 文件所有者(Owner)拥有读、写、执行权限(rwx)
- 同组用户(Group)拥有读、写、执行权限(rwx)
- 其他用户(Others)拥有读、写、执行权限(rwx)
chmod命令的使用方法如下:
chmod [选项] 模式 文件名/文件夹
选项:-R,表示递归修改
模式:修改的权限
文件名/文件夹: 指定的目标文件或文件夹
模式
通过符号
参数 | 含义 | 操作 | 具体值 |
---|---|---|---|
u | 文件所有者 | +(加入)、-(除去)、=(设定) | r、w、x |
g | 同组用户 | +(加入)、-(除去)、=(设定) | r、w、x |
o | 其他用户 | +(加入)、-(除去)、=(设定) | r、w、x |
a | 全部身份 | +(加入)、-(除去)、=(设定) | r、w、x |
举例:
# 不考虑之前的权限(=),直接使用设定的方式:
chmod u=rwx,g=rx,o=rx test
# 还以省略为如下:
chmod u=rwx,go=rx test
# 原有的基础修改(+,-)
chmod a+x test
# 还以省略为如下:
chmod +x test
通过数字
权限可以用3位数字来代表,第1位数字表示文件所有者,第2位表示同组用户,第3位表示其他用户
数字的细节如下:r记为4,w记为2,x记为1 ,数字表示为:
- 0:无任何权限 即 ---
- 1:仅有x权限 即 --x = 1
- 2:仅有w权限 即 -w- = 2
- 3:有w和x权限 即 -wx = 2+1
- 4:仅有r权限 即 r-- = 4
- 5:有r和x权限 即 r-x = 4+1
- 6:有r和w权限 即 rw- = 4+2
- 7:有全部权限 即 rwx = 4+2+1
举例:
# 修改test文件权限,改为rwxr-x---
chmod 750 test
修改文件所属者chown
在Linux中,chown是一个用于更改文件或目录所有者的命令。它可以将文件或目录的所有权转移到另一用户或组
注意
通常,只有文件、文件夹的所属用户,或者有root权限的用户才能使用
chown命令的基本语法如下:
chown [选项] 用户名:组名 文件名
用户名和组名: 可以是任何有效的Linux用户或组名称
文件名: 是要修改其所有权的文件或目录名称
选项
- -R:递归地更改文件夹及其子文件夹中的所有文件所有者
举例
# 将hello.txt所属用户修改为root
chown root hello.txt
# 将hello.txt所属用户组修改为root
chown :root hello.txt
# 将hello.txt所属用户修改为root,用户组修改为python
chown root:python hello.txt
# 将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
chown -R root test