作为以文件为导向的操作系统,Linux的所有操作都是基于文件而进行的,那么文件的访问及修改权限将成为最值得探究的部分。
⭕️ 什么是用户?
- 用户存在的目的是安全方向的优化/系统程序的运行优化/为了合理分配资源
- 不同的用户有着不同的权限
- 3a机制:account(用户账号识别);author(计算机对用户的识别授权);auth(用户获得认证权限)
⭕️ 什么是用户组?
- 用户组是计算机方便对“类”进行识别的存在
- 用户组存在的意义是对某一类用户进行统一授权
- 主组也叫做初始组,代表用户初始属于的组
- 与主组对应的是附加组,代表用户除了属于主组还可以额外属于的组
⭕️ whoami 查看当前用户:
id username
:查看用户id信息(如果不加username 代表查看当前用户)id -u
:查看用户idid -g
:查看用户主组idid -G
:查看用户所有组的idid -n
:显示名称
illustrate:
⭕️ su - username 用户切换
su username
:仅身份切换,环境依旧在原用户路径下su - username
:身份与环境共同切换
注意:
1.只有超级用户向普通用户切换时不需要密码
2.每切换一个用户,都会开启一个shell
3.不要在一个shell中反复切换用户,否则会导致shell环境混乱
illustrate:
⭕️ 用户涉及到的系统配置文件
以下为各类配置文件的绝对路径:
- /etc/passwd :用户身份信息文件(name:passwd:uid:gid:explain:home:shell)
- /etc/group :组身份信息文件(gname:gpasswd:gid:gmember)
- /etc/skel/.* :用户环境配置文件模版
- /etc/shadow :用户认证信息文件
- /home/username :用户家目录
- /var/spool/mail/username :用户邮箱
⭕️ 用户和用户组的建立及删除
- 监控系统的介绍:为了更好的监测代码执行后文件的变动,使用监控命令实时查看后台文件的状态,具体代码如下:`watch -n 1 “tail -n 3 /etc/passwd”
illustrate:
useradd username
: 新建用户,username为建立的用户名,该命令默认会建立一个与用户名相同的组,并且自动建立用户家目录- 删除用户:1.
userdel username
: 只删除用户信息,不删除用户家目录文件;2.userdel -r username
: 删除用户以及用户的系统配置文件
illustrate:
groupadd groupname
: 建立一个组groupdel groupname
: 删除该组(不同于用户的删除,在这里无需递归删除组,直接进行删除命令就可以彻底删除掉)
illustrate:
- 指定内容建立用户/组:
1.useradd -u id username
: 指定uid建立用户(id部分输入数字)
2.useradd -g id username
: 指定gid建立用户(需要这个id的组已经存在,否则需要先建立组)
3.groupadd -g id groupname
: 指定gid建立组
4.useradd -G id username
: 指定附加组id建立用户
5.useradd -c "string" username
: 指定说明文字建立用户
6.useradd -d path
: 指定家目录建立用户(path部分输入绝对路径)
7.useradd -M useradd
: 不建立家目录的情况下建立用户
8.useradd -s path
: 指定shell建立用户
illustrate:
⭕️ 用户和用户组的更改
usermod -l newname originalname
: 更改用户名usermod -u id username
: 更改用户idusermod -g id username
: 更改用户初始组目录usermod -G id username
: 不改变初始组的情况下加入附加组(是更改不是添加,哪怕原来有一百个附加组,用此命令更改后,也会改为更改后的那个;若要删除附加组,则在id处输入“”,代表更改为空组)usermod -aG id username
: 增加用户至附加组(注意区分此命令和上一条命令,如果这里的id处输入“”,代表的是增加0个附加组,相当于没有变化;若要增加多个附加组,则用逗号隔开)usermod -c "string" username
: 更改用户说明文字usermod -d path username
: 更改用户家目录(仅更改家目录的指向字符串,但实际文件目录名不会改变)usermod -md path username
: 更改用户家目录(字符与目录名均改变)usermod -s path username
: 更改用户所使用shellgroupmod -g id groupmodname
: 更改组id
illustrate:
⭕️ 用户认证与密码修改
- 什么是用户认证? ------用户认证是计算机对于用户权限控制的一道门,认证后才可进行权限下的操作
- 如何查看用户权限(认证文件)? -------/etc/shadow文件可查看权限
passwd -S username
: 查看密码状态passwd username
: 超级用户修改密码passwd
: 普通用户修改密码(普通用户修改密码时,需要先输入原密码,再建立新密码,并且新密码有限制:8位以上的无序数字+无序字母)
illustrate:
⭕️ 关于冻结认证
- 什么是冻结认证? -------冻结认证代表锁定了某个用户
- 锁定:
usermod -L username
- 锁定:
passwd -l username
- 解锁:
usermod -U username
- 解锁:
passwd -u username
- 删除密码:
passwd -d username
注意:在第八版本及以后,usermod和passwd方式可以互相锁定与解锁,在第八版本之前,passwd的锁定级别更高,被passwd锁定后,需要用usermod方式解锁两次。
illustrate:
⭕️ 关于密码期限
密码最大期限代表密码最多在多久期限内必须修改;
密码最小期限代表密码最少到达多久期限才能修改;
警告期代表密码过期前的警告时间期限;
非活跃天数代表密码超时多久后还可继续使用;
到期时间代表到此日期密码会被冻结。
chage -d 0 username
: 此命令代表下次该用户登陆时强制要修改密码,否则无法登陆成功passwd -n time username
;chage -m time username
: 修改密码最小期限(time处填数字,单位为日)passwd -x time username
: 修改密码最大期限passwd -w time username
;chage -W time username
:修改密码警告期passwd -i time username
;chage -I time username
: 修改密码非活跃天数chage -E "YYYY-MM-DD" username
: 修改密码到期时间
illustrate:
⭕️ 用户权利下放
当某些用户临时需要获得部分权限时,用此方式给临时用户下放属于超级用户的权限。
- hostname 查看当前主机名
- /etc/sudoers文件记录了用户权限
visudo
: 此命令的作用是编辑/etc/sudoers文件,并提供语法检测,进入文件编辑后,在100行的位置进行增加权限内容的操作- username hostname=(newusername) [NOPASSWD]/command1,/command2 (username位置代表当前要下放权限的用户名;hostname代表该用户的主机名;newusername代表要给该用户下放属于哪个用户的权限;[ ]内可写可不写,代表是否需要有密码操作;/command1,/command2代表要给该用户下放的具体权利
⭕️ 设定文件的用户及用户组
当需要把某些文件或目录给某个用户时(所属权转移),使用此命令
chown username /filename
: 给某个用户某个文件chown username dirname/
: 给某个用户某个目录chown -R username dirname/
: 给某个用户这个目录及目录下的所有文件chgrp groupname /filename
: 给某个组某个文件
illustrate:
⭕️ 设定文件权限(读,写,执行)
每个文件都有读;写;执行三种权限,三种权限开启了哪个,才能对此文件进行哪项操作,比如没有开启写权限的文件,是无法进行写入操作的;没有开启执行权限的文件,文件内的程序也是无法调用的,这三种权限用字母r,w,x表示,-代表没有此权限。此外,每个文件的这三种权限都可以赋予给三个不同的对象:u(用户);g(组);o(其他用户)
修改文件权限有以下几种方式:
- 直接添加删除修改:
chmod object-/+auth /filename
(给某个对象删减某个权限) - 给对象赋予权限:
chmod object=auth
- 用数字的方式设定权限:布尔值000 代表 - - - 转换为二进制数字是0;布尔值001 代表 - - x 转换为二进制数字是1;布尔值010 代表 - w - 转换为二进制数字为2;布尔值011 代表 - w x 转换为二进制数字为3;布尔值100 代表 r - - 转换为二进制数字为4…直到二进制数字7,从0到7这8个数字每个数字都对应着一种不同的权限,一共有三个对象可拥有权限(ugo),每个对象都有一个二进制数字去代表该对象的权限,因此,用数字方式设定权限时,每个文件需要用三个二进制数字去表示这三个对象对应的权限,用命令
chmod digit /filename
完成,digit代表权限对应的二进制数字
illustrate: