用户管理
1.用户理解
用户就是系统使用者的身份
在系统中用户存储为若干串字符+若干个系统配置文件
用户信息涉及到的系统配置文件:
/etc/passwd ###用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
-u -g -c -d -s
/etc/shadow ###用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
/etc/group ###组信息
组名称:组密码:组id:附加组成员
/etc/gshadow ###组认证信息
/home/username ###用户家目录
/etc/skel/.* ###用户骨架文件
注意: /etc/skel/ 这个目录中的所有文件或目录在用户新建的过程中会被复制到用户的家目录里这个目录中默认存在的隐藏文件是用户的默认配置文件
2.用户建立
useradd 参数 用户名字
-u ##指定用户uid
-g ##指定用户初始组信息,这个组必须已经存在
-G ##指定附加组,这个组必须存在
-c ##用户说明
-d ##用户家目录
-s ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字
3.用户删除
userdel -r 用户名称 ##-r表示删除用户信息及用户的系统配置
4.组的建立
groupadd -g ##建立组
groupdel 组名字 ##删除组
作以上实验的监控命令:
watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo ====;ls -l /home;echo ===;ls -l /mnt'
5.用户id信息查看
id 参数 用户
-u ##用户uid
-g ##用户初始组id
-G ##用户所有所在组id
-n ##显示名称而不是id数字
-a ##显示所有信息
6.用户信息更改
usermod 参数 用户
-l ##更改用户名称
-u ##更改uid
-g ##更改gid
-G ##更改附加组
-aG ##添加附加组
-c ##更改说明
-d ##更改家目录指定
-md ##更改家目录指定及家目录名称
-s ##更改shell
-L ##冻结帐号
-U ##解锁
用户权力下放
1.在系统中超级用户可以下放普通用户不能执行的操作给普通用户
下放权力配置文件:/etc/sudoers
2.下放权力的方法
*)超级用户执行visudo进入编辑/etc/sudoers模式
*)格式:
获得权限用户 主机名称=(获得到的用户身份) 命令
可用hostname命令获取主机名称
test desktop0.example.com=(root) /usr/sbin/useradd
test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
3.执行下放权限命令
sudo 命令 ##如果第一次执行sudo需要输入当前用户密码
在/etc/sudoers中如果设置如下:
test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
用户认证信息的控制
1."passwd" 用来修改用户认证信息
passwd westos ##如果是超级用户不许要知道原来密码
##直接修改,没密码强度限制
##如果是普通用户需要输入原始密码
##密码不能少于8个字符,不能是纯数字,不能是纯字母
passwd -S 用户 ##查看用户密码信息
passwd -d 用户 ##删除用户密码
passwd -l 用户 ##冻结帐号密码 passwd 冻结强度比usermod高
passwd -u 用户 ##解锁用户
passwd -e 用户 ##更改密码默认使用天数
passwd -x 用户 ##密码最长有效期
passwd -n 用户 ##密码最短有效期
passwd -w 用户 ##密码过期前警告期
passwd -i 用户 ##密码非活跃天数
passwd --stdin 用户##非交互式更改用户密码
#例如:
echo westos | passwd --stdin lee
超级用户修改密码
普通用户修改密码
删除账户密码
冻结账户密码
解锁账户密码
chage 参数 用户
-d ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I ##用户非活跃天数
-E ##帐号到期日格式 -E "YYYY-MM-DD"
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两次使系统自动重新启动
权限管理
1.文件属性查看
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] #文件名称
2.查看目录属性
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] ##目录名称
3.文件用户组的更改
chown 用户名称 文件 ##更改文件所有人
chgrp 组名称 文件 ##更改文件所有组
chown -R 用户 目录 ##更改目录本身以及目录中的子文件的所有人
chgrp -R 组名 目录 ##更改目录本身以及目录中的子文件的所有组
4.权限的识别
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 目录为财务部存储目录只能对财务部人员可以写入中
5.文件的默认权限
从系统存在角度来讲,开放权力越大,系统存在意义越高
从系统安全角度来讲,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
umask ##显示系统预留权限值
umask 077 ##临时修改umask值 只在当前shell中生效
##永久修改
vim /etc/bashrc 71行是普通用户的更改,73是超级用户的更改
vim /etc/profile 60行是普通用户的更改,62是超级用户的更改
以上两个文件umask设定值必须保持一致
source /etc/bashrc ##刷新bash配置
source /etc/profile ##刷新系统配置
6.特殊权限
stickyid ###强制位
o+t ###只针对目录,当一个目录上有t权限时,这个目录中的文件只能被文件拥有者删除
t=1
chmod o+t directroy
chmod 1777 directory
sgid ###粘制位
g+s ##针对目录,在目录中创建的文件都自动归属到目录所在组,针对二进制文件,文件内记录的程序在执行时和执行者的组身份没有关系,而是以二进制文件的所有组的身份执行的
chmod g+s file|directory
chmod 2777 file|directory
suid ###冒险位
u+s ###针对文件,文件记录动作在执行时是一文件所有人身份执行的,与是谁发起的无关
chmod u+s file
chmod 4777 fileg+s
7.权限列表
acl ##指定特定的用户对特定的文件拥有特殊权力
-rw-rwx---+ 1 root root 0 Mar 28 02:39 file
^
权限列表开启
那么这个文件的普通权限也在权限列表中识别,ls -l 看到的权限是不准确的
#查看
getfacl /mnt/file
#file: file #文件名称
# owner: root #文件的拥有者
# group: root #文件的组
user::rw- #文件拥有者的权限
user:lee:rwx #特殊指定用户的权限
group::r-- #文件组的权限
group:student:rwx #特殊指定组的权限
mask::rwx #权限最大值
other::r-- #其他人的权限
设定
setfacl -m u:lee:rwx /mnt/file #设定lee用户对file文件可以读写执行
setfacl -m g:student:rwx /mnt/file #设定student组对文件可以读写执行
setfacl -x u:lee /mnt/file #在权限列表中删除用户lee的信息
setfacl -x g:student /mnt/file #在权限列表中删除student组的信息
setfacl -b /mnt/file #关闭权限列表那么,"+"消失
mask值
mask值是能够赋予用户权限的最大值
当设定acl列表后,如果用chmod命令缩小文件的权限,那么mask值会被更改
chmod 600 /mnt/file #做这样的动作mask值会发生改变
#####在更改前#####
#####更改后######
#file: mnt/file
#owner: root
# group: root
user::rw-
user:lee:rwx #effective:--- 此位置表示有效的权力
group::r-- #effective:---
mask::---
other::--
###恢复###
setfacl -m m:rwx /mnt/file #用此命令可以恢复mask的值
acl列表的默认权限
权限针对与目录生效
当对目录设定普通的权限列表后,是不能取定特定用户对在目录中新建的文件有指定权限的
如果需要权限自动添加到新建文件上那么要设定目录的默认权限
setfacl -m d:u:student:rwx /mnt/westos ##设定在westos目录中
##新建文件对student用户有rwx权限
##对已经存在的文件无效
##对目录本身无效
setfacl -m u:student:rwx /mnt/test/ ##只对目录本身生效
setfacl -Rm u:student:rwx /mnt/test/ ##对目录本身及已有文件生效对新创建的文件无效
setfacl -Rm d:u:student:rwx /mnt/test/ ##同-m
本教程来自:https://www.tqwba.com/x_d/jishu/151.html