目录
Linux用户和权限
1 Linux的root用户
1.1 root用户(超级管理员)
无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。
- 在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
- 而在前期,我们一直使用的账户是普通的用户(lxt)
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
例如:
- 使用普通用户在根目录下创建文件夹

- 切换到root用户后,继续尝试

-
普通用户的权限,一般在其Home目录内是不受限的
-
一旦出了Home目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
1.2 su和exit命令
su
命令就是用于账户切换的系统命令,其来源英文单词:Switch User
命令:su [-] [用户名]
-
符号是可选的,表示是否在切换用户后加载环境变量
-
参数:用户名,表示要切换的用户,用户名也可以省略,省略(默认)表示切换到root
-
切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:ctrl+d
-
使用普通用户,切换到其他用户需要输入密码,如切换到root用户
-
使用root用户切换到其他用户,无需密码,可以直接切换
1.3 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命令,无需输入密码
- 最后通过wq保存
- 切换回普通用户

- 执行的命令,均以root运行
2 用户和用户组
Linux可以支持多用户.多用户组/用户加入多个组。
Linux权限管控的单元是用户级别和用户组级别。
2.1 用户、用户组
Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中

Linux中关于权限的管控级别有两个,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
所以,需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。
2.2 用户组管理
以下命令需root用户执行
-
创建用户组
groupadd 用户组名
-
删除用户组
groupdel 用户组名
2.3 用户管理
以下命令需root用户执行
-
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组(即与用户名同名的用户组)并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
-
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
-
查看用户所属组
id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
-
修改用户所属组
usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
2.4 getent
使用getent命令,可以查看当前系统中有哪些用户
命令:getent passwd
共有7份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
使用getent命令,同样可以查看当前系统中有哪些用户组
命令:getent gruop
包含3份信息, 组名称:组认证(显示为x):组ID
2.5 查看权限控制信息
认知权限信息
通过ls -l
可以以列表形式查看内容,并显示权限细节
-
序列1,表示文件/文件夹的权限控制信息
-
序列2,表示文件/文件夹所属用户
-
序列3,表示文件/文件夹所属用户组
权限细节总共分为十个槽位
第一位表示文件类型:
-:表示普通文件、文本、可执行、归档文件等
d: 文件夹
l:软链接
b:块设备文件(例如硬盘、光驱等)
p:管道文件 (一种特殊缓存文件)
c:字符设备文件(例如屏幕等串口设备)
s:网络socket文件
2-10位 rwx-:
针对文件、文件夹的不同,rwx的含义有细微差别.
r
表示读权限针对文件可以查看文件内容.
针对文件夹,可以查看文件夹内容,如ls
命令.
w
表示写权限针对文件表示可以修改此文件.
针对文件夹,可以在文件夹内:创建、删除、改名等操作.
x
表示执行权限
针对文件表示可以将文件作为程序执行.
针对文件夹,表示可以更改工作目录到此文件夹,即cd进入.
-
表示不具有该项权限
2.5 修改权限控制 chmod命令
chmod命令
我们可以使用chmod命令,修改文件,文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
命令:chmod [-R] 权限 文件或文件夹
- 选项:
-R
,对文件夹内全部内容应用同样的操作
示例:
chmod u=rwx,g=rx,o=x hello.txt
,将文件权限修改为:rwxr-x–x. (其中: u表示user所属用户权限,g表四group组权限,o表示other其他用户权限)chmod -R u=rwx,g=rx,o=x test
, 将文件夹test以及文件夹内部全部内容权限设置为:rwxr-x–x
权限的数字序号
0-7八种权限组合:
r4w2x1 (也可用理解为二进制)
故751表示 : rwx(7)r-x(5)–x(1)
则上述示例可简化为:
chmod 751 hello.txt
2.6 修改权限控制 chown命令
使用chown命令,可以修改文件、文件夹的所属用户和用户组。
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行。
命令: chown [-R] [用户] [:] [用户组] 文件或文件夹
- 选项,
-R
,同chmod,对文件夹内全部内容应用相同规则 - 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
:
用于分隔用户和用户组
例:
chown root hello.txt
, 将hello.txt所属用户修改为rootchown :root hello.txt
, 将hello.txt所属用户组修改为rootchown root:lxt hello.txt
, 将hello.txt所属用户修改为root, 用户组修改为lxtchown -R root test
,将文件夹test的所属用户修改为root, 并对文件夹内全部内容应用同样规则
3 umask
为什么系统中的文件,创建后,默认权限是我们所看到的样子?
其实对于新创建的文件,默认权限是由umask(即权限掩码)确定的,而对于不同文件,有不同起始权限:
- 对于普通文件,起始权限为666
- 对于目录文件,起始权限为777
凡是在umask中出现的,都应在起始权限中去掉。
例如:
同时,umask是可以自定义的,也就意味着可以自定义默认权限。
4 粘滞位
当一个目录被设为粘滞位
(用chmod+t
),则该目录下的文件只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除
例如:chmod +t /home/