系统安全的3A机制:account(账户),authentication(认证),authorization(授权)
用户是操作者在系统中的身份;用户是系统最底层的安全机制的一部分;用户在系统中以字符和文件的形式存在。用户在系统中以字符串的形式存在,系统对用户的管理实际就是对文件的管理。
用户信息涉及到的配置文件:
目录说明/etc/passwd用户信息文件/etc/group用户组信息文件/etc/shadow用户认证信息文件/home/username用户的家目录/etc/skel/用户骨文件所存在的模版/etcpasswd文件说明:
注意:密码不可见为x;gid是用户的初始组id,也叫用户的主组,还有一种组为附加组;说明是登录界面显示的;默认shell可以通过/etc/shells查看。
/etc/group 文件说明:
/etc/shadow文件说明:
说明:密码最后一次被更改的时间:企业中常用。如果为0,则在登陆时会被要求强制修改密码,从1970年1月1号算起。;最短有效期:在最短有效期之后的多长时间才可以修改密码;最长有效期:密码可以持续的最长时间,到期后会产生警告;警告期:比如,最长有效期为30,警告期为7,则会在第23天产生警告,该修改密码了,否则会被冻结;密码非活跃天数:比如设为1,并不会在到期的那一天冻结,会有一天的额外时间;可以通过man 5 /etc/shadow来查看。
whoami #查看当前所在的用户
命令说明id 用户名查看指定用户id信息id -u 用户名用户的uidid -g 用户名用户的主组idid -G 用户名所有组的id同时显示id -G -n 用户名查看组的名字注意:所有linux的超级用户的id都为0。 systemuser---------->uid:1-500(企业6),1-999(企业7) loginuser----------->uid:1000-2**32=65530,一般为60000(可以在/etc/login.defs中查看)
1.用户和组建立
命令说明useradd 用户名新建用户,用户说明为空useradd -u id号 用户名创建自己指定uid的用户useradd -g id号 用户名id号必须是已经存在的组的id,已有的资源,否则会报错useradd -u 888 -g 888 westos创建uid为888gid为888的westos用户。useradd -G 存在组的id 用户名指定用户的附加组。该用户被创建以后,会有两个组,一个是默认gid的初始组,和指定id的附加组。groupadd -g id号 组名称创建自己指定id的组【初始组】2.用户和组的删除
命令说明userdel -r 用户名删除用户的内容及所有环境配置(去掉-r,只会删除内容,不会删除环境配置)groupdel 组名字删除组注意:如果删除用户时没有加r,可以到家目录去删除。
3.指定用户的说明,家目录和shell
命令说明useradd -c “说明” 用户名指定用户说明useradd -d 家目录 用户名指定用户的家目录。默认家目录是和用户名一样。useradd -s 指定的shell 用户名指定shell的用户注意:/sbin/nologin和/usr/sbin/nologin 这两个shell是不提供交互的,供系统使用。
4.修改用户信息
命令说明usermod -l 改的名字 之前的名字修改用户的名字(m=modify,l=login)usermod -u 改的uid 用户名修改用户的uidusermod -g 改的gid 用户名修改用户的gidusermod -G 添加的附加组名(或id) 用户名更改用户的附加组,如果用户有一个附加组会删除原来附加组usermod -aG 添加的附加组名(或id) 用户名添加新的附加组,不会的删除原来的附加组usermod -G “” 主组的组名 用户名删除用户所有附加组的身份usermod -c “修改的用户说明” 用户名修改用户的用户说明usermod -c “” 用户名清空用户说明usermod -d 修改的家目录 用户名更改用户家目录的【指向】,真实的目录名称是不会改变的,指定的目录可能存在也可能不存在usermod -md 修改的家目录 用户名移动家目录的指向,并真正修改用户的家目录名字usermod -s 修改的shell 用户名修改用户的shellusermod -L 用户名冻结用户,锁定用户。会在密码信息前加上!usermod -U 用户名解锁用户关于用户的上锁:
5.用户的切换
su - 用户名称
切换到指定用户后,可以使用whoami查看当前属于哪个用户。
su - 执行时:高级用户切换到低级用户不需要密码,低级用户切换到高级用户或者平级用户时需要密码。每次su切换到其他用户操作之后必须退出(exit或者ctrl+D),然后再次切换到其他用户。
注意:su - 中的“-”表示切换用户身份同时加载当前用户环境变量(登陆过系统的shell)。不加“-”表示没有登陆过系统的shell,没有加载用户环境,只加载了软件bash。shell软件的配置文件是bashrc,用户环境的配置文件profile,加了“-”两个文件都会加载;不加“-”只会加载bash软件的配置文件bashrc。
6.密码的修改
修改密码的信息在/etc/shadow中可以查看,root用户在前3行,普通用户在后3行。
密码的修改:
(1)超级用户
可以直接输入passwd 来修改root用户密码;也可以输入【passwd 用户名】来修改普通用户密码,这里拥有最高的权限,忘记密码也可以修改。
(2)普通用户
通过输入【passwd】来修改当前用户的密码,并且只能修改当前密码,而且还需要输入原来的密码。
6. 关于passwd 的操作
(1)非交互式修改密码
echo westos | passwd --stdin westos(2)密码被锁(在密码前面会有两个!!)
passwd -l westos(3)密码解锁
passwd -d westos(4)查看westos用户密码信息
passwd -S westos(5)删除密码
passwd -d westos(6)用户密码最后一次被更改的时间变为0(以下命令passwd和chage可以实现相同的功能)
passwd -e westos === chage -d 0 westos(7)用户密码最短有效期
passwd -n 1 westos === chage -m 1 westos(8)用户密码最长有效期
passwd -x 30 westos === chage -M 30 westos(9)密码警告期限
passwd -w 2 westos === chage -W 2 westos(10)用户非活跃天数
passwd -i 1 westos === chage -I 1 westos(11)用户到期日
chage -E 2018-11-11 westos注意:chage不能修改密码。这些命令可以通过passwd --help 来查看所有用法。
7. 权力下放
普通用户不能执行某些超级用户可以执行的命令,因此需要用到权力下方。
使用sudo命令,其配置文件在/etc/sudoers文件中,当使用vim编辑时,无论怎么修改都不会报错,因此,需要使用visudo命令来编辑该文件(visudo有语法检测功能),visudo命令需要在超级用户下使用。
比如:让westos用户使用useradd命令。
visudo
在100行左右编写:
westos 主机名=(root) NOPASSWD: /usr/sbin/useradd注:可以使用hostnamectl来查看主机名。
测试:
sudo useradd lee
删除用户:
当需要使用很多命令时,可以把命令写成一个集合:
Cmnd_Alias 集合名称(必须大写) = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod westos 主机名=(root) NOPASSWD: CTRLUSER测试:
当很多用户需要使用命令时,创建一个用户集合:
User_Alias 用户集合 = westos, test ADMIN 主机名=(root) NOPASSWD: 命令集合测试: