用户认证信息的控制、文件属性查看、文件用户组的更改、特殊权限
/etc/passwd ###用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
-u : -g : -c : -d : -s
/etc/shadow ###用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
总共9列,第一列为用户名,第二列为密码,第三列为从第一天(1970年1月1日起至今使用多少天),第四列为最段有效期,第五列为最长有效期,第六列为警告天数,第七列为非活跃天数,第八列为帐号到期日
组名称:组密码:组id:附加组成员
passwd -S 用户 用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
1、用户认证信息的控制
"passwd" 用来修改用户认证信息passwd westos ##如果是超级用户不许要知道原来密码直接修改,没密码强度限制
##如果是普通用户需要输入原始密码,密码不能少于8个字符,不能是纯数字,不能是纯字
passwd -S 用户 ##查看用户密码信息
passwd -d 用户 ##删除用户密码
passwd -l 用户 ##冻结帐号密码 usermod -L ##冻结帐号
passwd -u 用户 ##解锁用户 -U ##解锁
passwd -e 用户 ##更改密码默认使用天数passwd -x 用户 ##密码最长有效期
passwd -n 用户 ##密码最短有效期
passwd -w 用户 ##密码过期前警告期
passwd -i 用户 ##密码非活跃天数
passwd --stdin 用户 ##非交互式更改用户密码
#例如:
echo westos(密码) | passwd --stdin westos 将westos用户密码改为westos
先创造一个纯净的用户环境
新建 改密码
然后监控 watch -n 1 passwd -S 用户
passwd -d 用户 删除用户密码则不用输入密码直接进入
passwd -e 用户 强制要求用户在进入时修改密码
#例如:
echo westos | passwd --stdin lee
先创建一个纯净用户 userdel -r westos
useradd westos
watch -n 1 passwd -S westos 每隔一秒监控一次用户密码信息
watch -n 1 tail -n 1 /etc/shadow (监控密码信息)
passwd -d westos 删除westos用户的密码信息
passwd westos
chage 参数 用户
-d ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I (大写的i) ##用户非活跃天数
-E ##帐号到期日格式 -E "YYYY-MM-DD"
2、root密码忘记
1.重新启动系统
2.在系统启动阶段按上下健停止系统系统引导
3.选择启动引导标题,按“E”进行编辑
4.找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd.break选项
5.ctrl+x启动设定过后的系统引导条目
6.进入系统后执行chroot /sysroot切换到真实的系统环境
7.passwd root修改超级用户密码
8.建立文件/.autorelabel让系统从新扫描所有文件
9.exit两次使系统自动重新启动
3.文件属性查看
ls -l filename
- rw-rw-r-- 1 kiosk kiosk 0 Oct 2 17:05 file
[1] [2] [3] [4] [5] [6] [7] [8]
[1] ##文件类型
- #普通文件
d #目录
s #socket套接子
l #软链接
p #管道
c #字符设备
b #块设备
[2] ##读写权限
rw-|rw-|r--
@ $ *
@ #文件拥有者对文件能做的动作
$ #文件所在组的组成员能对文件做的动作
* #其他人对与文件能做的动作
[3] #文件内容被系统记录的次数
[4] #文件拥有者
[5] #文件所在组
[6] #文件大小
[7] #文件最后一次被更改的时进
[8] #文件名称
4、查看目录属性
ls -ld directoy
d rwxr-xr-x 3 kiosk kiosk 33 Aug 27 09:47 directory
[1] [2] [3] [4] [5] [6] [7] [8]
[1] ##类型(同文件)
[2] ##权限
[3] ##子目录个数
[4] ##目录拥有者
[5] ##目录所在组
[6] ##目录中内容的属性的大小
[7] ##目录中文件增加或减少或被更名的时间
[8] ##目录名称
5.文件用户组的更改
chown 用户名称 文件 ##更改文件所有人
chgrp 组名称 文件 ##更改文件所有组
chown -R 用户 目录 ##更改目录本身以及目录中的子文件的所有人
chgrp -R 组名 目录 ##更改目录本身以及目录中的子文件的所有组
练习
先创建两个用户
useradd xdd
useradd xxx
建立一个组
groupadd linux
用超级用户在/mnt下建立建立文件和目录
touch /mnt/file{1..3}
mkdir /mnt/westos
touch /mnt/westos/linux{1..3}
时时监控文件信息 watch -n 1 ls -lR /mnt
chown xdd /mnt/file1 更改文件/mnt/file1所有人为xdd
chown -R xxx /mnt/westos 更改目录/mnt/westos以及目录子文件的所有人
chgrp linux /mnt/file1 更改文件/mnt/file1的组为linux
chgrp -R linux /mnt/westos 更改目录/mnt/westos本身以及目录中的子文件的所有组为linux
chown -R xdd:xdd /mnt/westos 更改目录以及目录子文件的所有人的所有人和所有组都为xdd
(chown -R xdd,xdd /mnt/westos)
6.权限的识别
ls -l 中2-10字符为文件权限
rwx r-x r-x
用户权限(u) 组成员权限(g) 其他用户权限(o)
权限种类
r
r权限针对文件,表示可以查看文件内容
r权限针对目录,表示可以ls 查看目录中存在的文件名称
w
w权限针对文件,表示可以更改文件的内容
w权限针对目录,表示是否可以删除目录中的子文件或者子目录
x
x权限对于文件,表示是否可以开启文件当中记录的程序
x权限对于目录,表示是否可以进入目录中
chmod ugo+-=rwx ##改权限
u=rwx=7 |g=rwx=7|o=rwx=7
421
u=rw-=6 g=r--=4 o=r--=4 644
r=4
w=2
x=1
-=0
7=rwx,6=rw-,5=r-x,4=r--,3=-wx,2=-w-,1=--x,0=---
#练习
1.新建用户组,shengchan,caiwu,jishu
2.新建用户要求如下:
1)tom 是shengchan组的附加用户
2)harry 是caiwu组的附加用户
3)leo 是jishu组的附加用户
4)新建admin用户,此用户不属于以上提到的三个部门
3.新建目录要求如下:
1)/pub目录为公共存储目录对所有用户可以读,写,执行
2)/sc 目录为生产部存储目录只能对生产部人员可以写入
3)/cw 目录为财务部存储目录只能对财务部人员可以写入中
########groupadd shengchan
groupadd caiwu
groupadd jishu
useradd -G shengchan tom
useradd -G caiwu harry
useradd -G jishu leo
useradd admin
mkdir /pub /sc /cw
chmod 777 /pub
chgrp shengchan /sc
chmod 770 /sc
chgrp caiwu /cw
chmod 770 /cw
7.文件的默认权限
umask ##显示系统预留权限值
umask 077 ##临时修改umask值
##永久修改
vim /etc/bashrc 71行是普通用户的更改,73是超级用户的更改
vim /etc/profile 60行是普通用户的更改,62是超级用户的更改
更改完后必须执行这两个命令
source /etc/bashrc ##刷新bash配置
source /etc/profile ##刷新系统配置(才会生效)
(系统预留权力umask
777-预留=新建目录默认权限
内核111
目录权限-内核权限111=文件权限)
此时新建文件和目录时它的默认权限才会生效变为更改后的。
8.特殊权限
stickyid ###强制位
o+t ###之针对目录,当一个目录上有t权限时,这个目录中的文件只能被文件拥有者删除
t=1
chmod o+t directroy
chmod 1777 directory
eg:mkdir /westos 新建一个目录/westos
chmod 777 /westos 权限为777(all人都有读写执行权力)
chmod o+t /westos(chmod 1777 /westos) 加入特殊权限这个目录的文件只能被文件拥有者删除(用户westos建立的文件只能被westos删除
sgid ###粘制位
g+s ##针对目录,在目录中创建的文件都自动归属到目录所在组,针对二进制文件,文件内记录的程序在执行时和执行者的组身份没有关系,而是以二进制文件的所有组的身份执行的
chmod g+s file|directory
chmod 2777 file|directory
eg: mkdir /xd
ls -ld /xd 查看一下/xd目录下的组名称
chgrp linux /xd 更改/xd目录的组为linux
chmod 777 /xd 赋予其777的权限
切换用户 su - student
touch /xd/file 在student用户的xd目录中新建一个file文件
ls -l /xd/file 查看建立的这的文件的组名称发现为student并非为linux
此时退出student用户在超级用户下 chmod g+s /xd
此时进入student用户中touch /xd/file1
ls -l /xd/file1 查看这个file1这个文件的信息发现此时文件组为linux
suid ###冒险位
u+s ###针对文件,文件记录动作在执行时是一文件所有人身份执行的,与是谁发起的无关
chmod u+s file
chmod 4777 fileg+s
eg:
chown student.student /bin/rm 更改/bin下的rm命令文件的所有人和所拥有组
此时用超级用户rm -fr /mnt 可以用超级用户身份删除/mnt
mkdir /mnt 重新建立/mnt
chmod ug+s /bin/rm 此时将刚才更改的这个文件的所有人和所有组将作为执行此命令的所有人所有组来执行此命令与是谁发起这个命令无关(若没有此条命令一般情况下谁执行此条命令谁就是所有人和所有组)
此时执行rm -fr /mnt 将不能执行(普通用户没有对此文件的写权限)