目录
1. 用户
Linux下有两种用户:
- root用户(超级管理员)命令提示符:#
- 普通用户 命令提示符:$
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
普通用户的权限,一般在其家目录内是不受限的。一旦出了家目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
1.1 su命令
全称:switch user
语法:
su [-] [用户名]
功能:切换用户
-符号是可选的,表示是否在切换用户后加载环境变量,建议带上。
用户名:表示要切换的用户,用户名也可以省略,省略表示切换到root。
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:Ctrl + D
使用普通用户,切换到其它用户需要输入密码;使用root用户切换到其它用户,无需密码,可以直接切换。
1.2 sudo命令
全称:super user do
语法:
sudo 其他命令
功能:为普通的命令授权,临时以root身份执行
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证。
⑤ 底行模式下输入w!(强制保存)
⑥ 底行模式下输入q!(强制退出)
这样普通用户就能使用sudo命令了。
2. 用户、用户组管理
Linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组中
Linux中关于权限的管控级别有2个级别,分别是:
- 针对用户的权限控制
- 针对用户组的权限控制
比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
2.1 用户组管理
以下命令需root用户执行。
创建用户组:
groupadd 用户组名
删除用户组:
groupdel 用户组名
2.2 用户管理
以下命令需root用户执行。
创建用户:
useradd [-gd] 用户名
- -g 指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- -d 指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
指定/修改密码:
passwd 用户名
删除用户:
userdel [-r] 用户名
- -r 删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组:
id [用户名]
- 如果不提供用户名,则查看自身
修改用户所属组:
usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
2.3 getent命令
全称:get entries
功能:查看系统数据库中的记录信息
2.3.1 查看当前系统中有哪些用户
语法:
getent passwd
2.3.2 查看当前系统中有哪些用户组
语法:
getent group
3. 查看文件权限
3.1 文件访问者
- 所有者 u(User)
- 所属组 g(Group)
- 其他用户 o(Other)
3.2 文件类型和权限
3.2.1 文件类型
- d 目录
- - 普通文件
- l 软链接(类似Windows的快捷方式)
- b 块设备文件(例如硬盘、光驱等)
- p 管道文件
- c 字符设备文件(例如屏幕等串口设备)
- s 套接口文件
3.2.2 权限
基本权限:
- r 读,权限值为4
- w 写,权限值为2
- x 执行,权限值为1
权限值:
- 0 ---
- 1 --x
- 2 -w-
- 3 -wx
- 4 r--
- 5 r-x
- 6 rw-
- 7 rwx
文件的权限由9位表示,1-3位表示所有者权限,4-6位表示所属组权限,7-9位表示其他人权限。
上图dir1的所有者权限是:可读可写可执行;所属组权限是:可读可写可执行;其他人权限是:可读可执行但不可写。
4. 查看/修改文件属性
4.1 chmod命令
全称:change mode
语法:
chmod [选项] 模式 目录或文件
功能:修改权限(只有所有者和root才可以改变权限)
常用选项:
- -R 递归修改目录或文件的权限
模式:
- 文字设定法:[ugoa][+-=][rwx]
- 数字设定法:01234567
其中,文字设定法:
- u 所有者,g 所属组,o 其他用户,a 所有用户
- + 增加权限,- 取消权限,= 赋予特定权限并取消其他权限
- r 读,w 写,x 执行
4.2 chown命令
全称:change owner
语法:
chown [选项] [所有者][:][所属组] 目录或文件
功能:修改所有者或所属组
常用选项:
- -R 递归修改目录或文件的权限
4.3 chgrp命令
全称:change group
语法:
chgrp [选项] 所属组 目录或文件
功能:修改所属组
常用选项:
- -R 递归修改目录或文件的权限
4.4 umask命令
全称:user's mask
语法:
umask [选项] [权限掩码]
功能:查看或修改权限掩码
常用选项:
- -S 以文字的方式来表示权限掩码
如果没有文件掩码,文件的默认访问权限为rw-rw-rw-(666),目录的默认权限为rwxrwxrwx(777)。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。root用户默认文件掩码为022,普通用户默认文件掩码为002。
0002
0:暂时不看
0:所有者文件掩码
0:所属组文件掩码
2:其他用户文件掩码
目录的权限:777-002=775(rwxrwxr-x)
文件的权限:666-002=664(rw-rw-r--)
4.5 file命令
语法:
file [选项] 目录或文件
功能:辨识文件类型
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形
- -z 尝试去解读压缩文件的内容
5. 目录的权限
- 可执行权限:如果目录没有可执行权限,则无法cd到目录中
- 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
- 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件
只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。为了解决这个不科学的问题,Linux引入了粘滞位的概念。
5.1 粘滞位
粘滞位只能对目录设置,设置了粘滞位后,只有目录内文件的所有者或者root用户才可以删除或移动该文件。
一个目录具有粘滞位,则在other的x位会表现为t或T:
- 原来x位上有x权限,有了粘滞位表现为t
- 原来x位上没有x权限,有了粘滞位表现为T
设置粘滞位:
chmod o+t 目录 或 chmod +t 目录
删除粘滞位:
chmod o-t 目录 或 chmod -t 目录