第七章、用户管理
1、重要性
一、用户相关文件
1、/etc/passwd 用户信息文件
root:x:0:0:root:/root:/bin/bash
第一列:用户名
第二列:密码位 加密后的密码都在/etc/shadow里面
第三列:用户ID 0:超级用户UID 1-499:系统用户(伪用户) 500-65535:普通用户ID
第四列:组ID /etc/group GID添加用户时,如果不指定用户所属组的初始组,那么会建立和用户名相同的组
第五列:用户说明
第六列:用户家目录
第七列:登陆shell /bin/bash
如果把超级用户改成普通用户,就是把UID的0改成1
= 2、/etc/shadow
第一列:用户名
第二列:加密的密码 伪用户的密码含有!! 加入!或者*让密码失效
第三列:密码最近更新时间 时间戳以1970年1月1日计算的天数,
日期转时间戳:echo $(($(date --date="2019/12/31"+%s)/86400+1))
时间戳转日期:date -d "1970-01-01 15775 days"
第四列:默认两次修改密码的时间间隔(和第3字段相比)
第五列:密码有效期(和第3字段相比)
第六列:密码到期前的警告天数(和第五字段相比)
第七列:密码到期的宽限天数(和第五字段相比)默认-1就是长期有效 到期之前改密码然后有效时间顺延
第八列:密码失效时间()
第九列:保留
3、/etc/group
第一列:组名
第二列:组密码位 组密码文件:/etc/gshadow
第三列:GID
第四列:此组中支持的其他用户,附加组是此组的用户
初始组:每个用户初始组只有一个,初始组智能有一个
附加组:每个用户可以属于多个附加组,要吧用户加入组,都是加入附加组
4、组密码文件:/etc/gshadow
5、用户家目录
6、用户邮箱目录 /var/spool/mail/abc
7、用户模板目录:/etc/skel/ /home/userl
二、用户管理命令
1、添加用户命令:useradd
1.1、手工删除用户需要删除1 2 3 4 5 7 这六个文件里的信息
1.2、useradd命令: useradd 选项 用户名 (选项一般不用,一般默认) 选项: -u 550 指定UUID(500往后排,指定之后,中间会跳过,一般不用) -g 组名 指定初始组,设置的用户不会建立附加组(不建议这样用,建议使用-G) -G 组名 指定附加组,把用户加入组,使用用附加组 -c 说明 添加说明 -d 目录 指定目录 -s shell /bin/shell
1.3、useradd默认值
/etc/default/useradd和/etc/login/defs
2、设定密码
passwd [选项] 用户名
-l 将用户密码锁定么就是无法登陆
-u 解锁
--stdin 例子:echo "123" > | passwd --stdin user1 用于批量添加
普通用户直接就passwd,但是简单密码不会生效
更改时间戳,就会前置修改密码 或者使用:change -d 0 user1
3、用户信息修改
usermod是修改已添加的用户的信息的,选项规则与useradd基本一致,了解就行,不做使用,常用就是-G
4、删除用户
userdel -r 用户名
-r作用是删除用户的时候删除家目录
5、切换用户身份
su user2
su - root (-主要是可以吧env环境变量切换位对应的环境变量 可以用env查看)
三、组管理
1、添加用户组:groupadd
2、删除用户组:groupdel
3、手工加个用户添加到组火着从组中删除:gpasswd添加附加组
gpasswd [选项] 用户名
-a加入
-d删除
区别:
usermod -G 组 用户
gpasswd -a 用户 组
4、改变有效值
newgrp(初学不使用)
5、指定权限
第八章、权限管理
一、
1、ACL权限:用于解决用户对文件身份不足的问题
ACL权限一旦递归之后,容易出现权限溢出(安全性隐患)
2、开启ACL权限
dumpe2fs -h /dev/sda3 -h是超级块的意思
如果没有开启,就手动开启 mount -o remount,acl /
也可以通过修改/etc/fstab文件,永久开启ACL的权限
UUID=???? / ext4 default acl 1 1 (加入acl)
3、ACL基本命令
setfacl 选项 文件名
setfacl -m u:用户名:权限 文件名 例子:setfacl -m u:user1:5 -R /www
使用 getfacl /www/查看ACL权限
-R 递归
在u前加入d: setfacl -m d:u:user1:5 -R /www
二、sudo授权 给普通用户赋予部分管理员权限
/sbin/ 在此目录下命令只有超级用户才能使用
/usr/bin/
sudo 赋予的权限越详细,普通用户的权限越小。反之。
visudo mam 5
用户组需要先加%
root ALL=(ALL) ALL
#用户名 被管理IP =(可使用身份)授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
# %组名 被管理ip =可使用身份) 授权命令(绝对路径)
例子:visudo
user1 ALL=/sbin/shutdown 权限较大(赋予的权限越详细,普通用户的权限越小。反之。)
user1 ALL=/sbin/shutdown -r now 权限较小,只能重启
sudo -l 查看可用的授权
举例:
2)visudo
user1 192.168.0.156= /etc/rc.d/init.d/httpd reload . \(换行用反斜杠)
/etc/rc.d/init.d/httpd configtest(文本测试)
configtest检测是否写错
找某个命令的所在位置就是whereis vim
sudo在授权vim的权限时一定要小心,危险系数比较高
sudo /usr/bin/vim /etc/shadow就可以清空密码
更改网页内容
只需要授权user1对,网页存放位置(比如说:/var/www/html),则只需要授权user1对此目录有写权限或者更改目录的所有者为user1即可
也可通过ftp修改
三、文件特殊权限SetUID、SetGID、Sticky BIT
1、SetUID功能可以理解为:
只有可以执行二进制程序才能设置SUID
命令执行者要对该程序拥有x(执行权限)
命令执行者在执行该程序的时候获得该程序文件属主的身份
SUID权限只在该程序执行中有效,也就是说身份改变只在执行程序的过程中有效
举例:
ll /etc/passwd(密码的位置)显示的是-rws??????权限
ll /etc/shadow
ll /etc/passwd(命令所在位置)
如果取消s权限,普通用户就不能修改自己的权限
2、危险的SetUID
chmod u+s /usr/bin/vi
3、建议