(Java学习记录)Linux部分-用户管理
文件操作学完了,该了解Linux中的用户管理系统了(这部分墙裂建议在虚拟机下运行,防止改错东西进不了系统)
1.系统中为什么要有用户?
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
设置用户就是为了系统和用户的安全。通过创建用户,可以对用户的权限进行限制,以保证系统的安全。更是为了保护用户,方便了系统对用户的管理,使得用户拥有的自己的东西是有序的,这样可以有效的防止用户的文件丢失。
2.组是什么?
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
组,顾名思义就是分组,分类。将不同用户分到不同的组中,方便管理员和系统进行管理。
3.用户配置文件
Linux系统中,将用户配置文件存放在目录:etc/passwd中,将用户组信息存放在目录:/etc/group中;
如图:
用户信息文件passwd:用户名称:密码:用户uid:附加组id:用户说明:用户家目录:用户所使用的shell:用户自定义
用户的组信息文件:组名称:组密码:组id:附加组成员
4.用户的管理操作
4.1查看用户信息
whoami:查看当前用户的名称
id:查看用户信息(passwd中该用户的信息)
id -u:查看用户的uid
id -g:查看用户所在组(多个用户所在组不能重复——>相当于亲生父母家,生来具有的)
id -G:查看用户所在的附加组(附加组多个用户可以重复——>相当于干爸干妈家,后期附加的,可以跟同组的用户具有相同的权限)
id -n:以名称显示信息
4.2建立/删除用户
首先写一条自动刷新的查看命令,用来查看配置文件中的变化
watch -n 1 'tail -n 4 /etc/passwd /etc/group;echo '-----分割线------';ls -l /home/'
(
watch -n 1实时监测显示 ' ' 中的内容,每一秒刷新一次;
tail -n 4 显示目录 /etc/passwd 和目录 /etc/group的后4行;
echo相当于Java或C中的打印功能:print;
ls -l 显示/home目录中的详细信息;
)
运行如下
4.2.1 开始操作用户
建立
useradd username:使用默认规则建立用户(规则参看/etc/login/defs)
useradd -u username:指定用户的组id
useradd -g username:指定用户的初始组id
添加显示组不存在,先用groupadd groupname命令创建这个组
useradd -G username:指定用户的附加组
同样显示不存在,这次创建一个有附加组id的组
useradd -c username:指定用户的说明文字
useradd -d username:指定用户的家目录
useradd -s username:指定用户的shell
可以用:cat /etc/shells 指令查看可用的shell;如图
指定shell
删除
userdel username:删除用户身份,但不删除家目录,需手动删除
如图,可以看到test1用户已经在配置信息中没了,但是/home目录中还留有test1的家目录,但不存在使用者了
手动删除家目录
userdel -r username:删除用户的配置文件,包括家目录
4.2.2 更改已建立的用户信息
usermod -l username:更改用户名称
usermod -u username:更改uid
usermod -g username:更改初始组id
usermod -G username:更改附加组
usermod -aG username:增加附加组
usermod -c username:更改用户说明
usermod -d username:更改家目录信息
usermod -md username:更改家目录
usermod -s username:更改shell
4.2.3 切换用户
su -username:切换用户,高级用户切低级不需要密码,低级切高级需要密码
注意:用户切换后应及时登出(exit / logout / crtl+d)切换的用户,否则会出现shell混乱
su - 表示切换用户身份及环境(shell)
4.2.4 用户的认证信息(密码)
更改密码一定要十分稳重!!!
更改密码一定要十分稳重!!!
更改密码一定要十分稳重!!!
我这次就没注意删掉了/etc/shadow中的内容,导致再次开机怎么输密码都进不去!
所以墙裂建议使用虚拟机练习,还有恢复和重装的可能,重装也比较方便!
VMWare Workstation中有个快照功能,这个功能十分强大!类似于Windows的一键恢复功能,它可以让我们的系统恢复到备份的那个时候,这样就完全不怕玩坏系统了!
用户的密码在rhel7中被单独存在了目录/etc/shadow中
这里面的每条信息被“:”隔着,分别表示:
用户名称:用户密码:用户密码使用时长:用户密码最短有效期:密码过期警告:密码非活跃期:账号到期日:未设定用户自定义
修改方式
我们用之前监视用户名目录的方法监视密码:(新建用户的密码可以用passwd username的指令在root用户下修改,提示密码不足八位不用在意,可以使用,因为我们是超级用户)
chage用户简单介绍:
用户密码:加密方式:六代md5 七代sha512
passwd username ##只有超级用户可执行
passwd ##普通用户修改自己的密码
usermod -L ##冻结帐号
usermod -u ##解锁
passwd -l ##冻结密码
passwd -u ##解锁
passwd -d ##清除密码
密码使用了多长时间:密码最后一次被修改的时间,当此位数字为0时,用户在登陆系统时会被强制修改密码
(上面那个17754指的是密码创建成功日期距1970-1-1 所经历的天数,我们可以用后来检查是的日期减掉这个数字就知道这个密码用了多久)
chage -d 0 westos
重新登录后提示修改密码:
passwd -e westos
这个命令不需要输入时长,再次登录直接强制改密码
密码最短有效期:最少可存在的时长
chage -m 1 westos
passwd -e westos
密码最长有效期:最多可存在的时长
chage -M 30 westos
passwd -x 40 westos
密码过期警告:离过期日还有多少天进行警告
chage -W 2 westos
passwd -w 3 westos
密码非活跃期:
chage -I 2 westos
passwd -i 0 westos
帐号到期日:
chage -E "2018-11-11" westos s
未设定用户自定义:
5. 忘记root密码
如果忘记了root密码,可以在重启时按下上下键,按e
找到这一行,一直删到rd这块
输入下面内容,按Ctrl+x
等一会出现下面情况时,按图中内容输入