对于Linux系统来说,我们一般添加一个什么东西如果希望永久生效,一般都是直接添加在配置文件中。通过这句话你们能获取什么重要信息呢?哎,没错,配置文件在Linux操作系统的应用中极其重要。今天我们就来说一下保存用户信息的配置文件/etc/passwd:
我们可以cat一下这个文件,cat /etc/passwd
我的老天啊,这都是什么玩意儿啊?完全看不懂有木有?那么怎么办呢?
不要忘记man命令哦,我们可以通过man命令来帮助我们查看这个配置文件的每一个字段的含义。
man 5 passwd : man 5是用来查看配置文件的帮助命令,后面跟的是文件名而不是绝对路径。
这就是解释,即便是你英语再不好,也大致可以看明白什么意思吧?如果实在看不懂,就谷歌翻译算了。
你们千万不要小看了这个/etc/passwd的配置文件哦,Linux上用户登录的时候是什么身份,都是在这个配置文件中设定的。换句话说,内核是通过识别这个配置文件中的UID来判断用户身份的,一般情况下UID=0是管理员;1-499是系统用户(伪用户);UID在500到65535之间是普通用户。如果我们想把普通用户变为管理员,就是通过修改这个/etc/passwd中的UID来设定的。强调一点,不能说root用户就是管理员。
再来说一个重要的配置文件,就是密码配置文件 /etc/shadow
大家可以先来看一下这个文件的访问权限:
看到了吧?权限是000,也就是说任何用户不能操作这个文件,当然root是可以的(谁让他是超人呢)。
注意,千万不要把这个文件随便传给别人,防止别人暴力破解。
下面我们打开这个文件来解释一下:
cat /etc/shadow
你们可以看到,每一行代表一个用户,以冒号分割为9段。
① 用户名
② 加密密码(SHA512散列加密,相对于原来的MD5加密更加先进)
③ 时间戳(相对于1970.1.1以后的每一天加1),时间戳的日期是最后一次修改密码的日期
④ 两次密码修改的时间间隔,也就是说第一次密码修改之后,这里如果设置为5,就是5天后才能第二次修改密码
⑤ 密码有效期
⑥ 密码失效前几天提示修改密码
⑦ 密码失效后的宽限日期
⑧ 账号失效时间
⑨ 保留,暂时没有设置
我们添加用户的时候除了会用到这两个文件之外,还有/etc/group和/etc/gshadow文件,很少用到。
除了这四个文件之外,还有三个在创建用户的时候会自动创建的文件。
① 家目录
root用户的家目录在/root/下
普通用户的家目录在/home/用户名/下
② 邮件目录
/var/spool/mail
③ 用户模板目录
/etc/skel
可不要小看这么个目录哦!我们只要在这个目录下创建一个文件,则在我们创建用户的时候,其用户家目录下就会存在这样的文件
例如 :我们创建一个提示信息的文件
哈哈,是不是很神奇啊!!!
来吧,下面开始学习命令,添加用户走起。
useradd [选项] 用户名
① -u UID:手工指定用户的UID号,这里不建议更改
② -d 家目录:手工指定用户家目录
③ -c 用户说明:手工指定用户说明
④ -g 组名:手工指定用户的初始组
⑤ -G 组名:手工指定用户的附加组
⑥ -s 登录shell:手工指定用户登录shell,默认/bin/bash
自己去演示啊!
这里再来给大家介绍一个文件,那就是我们创建用户的时候那么缺省值(默认值)从哪里来的:
/etc/default/useradd
别急,还有一个文件哦!
/etc/login.defs
OK,用户是创建好了,那么是不是还需要设定密码呢?对喽!
设定密码的命令:
passwd [选项] 用户名 -->一般是不加选项的
① -S:查看用户的密码状态(只能root操作)
② -l:锁定用户密码
passwd -l user1
③ -u:解锁用户
passwd -u user1
④ --stdin:可以通过管道符输出的数据作为用户的密码
echo "1234" | passwd --stdin user1
shell编程里用这种方式给用户设置密码,本例中user1密码为1234
上面说了如何创建用户和设置密码,那么如果修改已经创建的用户呢?
① usermod [选项] 用户名
选项:
-u:修改UID
-G:修改附加组
-c:修改用户说明
-L:锁定用户
-U:解锁用户
② chage [选项] 用户名
修改用户密码状态
选项:
-l:列出用户的详细密码状态
-d 日期:最后一次修改密码日期(shadow 3)
-m 天数:两次密码修改间隔(shadow 4)
-M 天数:密码有效期(shadow 5)
-W 天数:密码过期前警告天数(shadow 6)
-I 天数:密码过期后宽限天数(shadow 7)
-E 日期:账号失效时间(shadow 8)
注意:只需要记住 【chage -d 0 用户名】这条命令即可。
下面进行用户的删除操作:
① 删除用户命令:
userdel -r 用户名
-r:删除用户的同时删除家目录
还有一个很简单的查看用户ID命令:
id 用户名
还有一个切换用户的命令 su:
su [选项] 用户
① - : 切换用户的同时连带用户的环境变量一块切换
② -c :不切换用户身份,只是暂时调用该用户
例如:创建一个user4用户,暂时调用root身份
su - root -c "useradd user4"
用户组管理命令:
修改用户组名:
groupmod -n 新组名 原组名
删除用户组:groupdel 组名
注意:组中存在初始用户,不能删除组。
还有一个很重要的知识点,如何把已经存在的用户加入到某个组中或者从某个组中删除呢?
gpasswd [选项] 组名
① -a 用户名 :把用户加入组中
② -d 用户名:把用户从组中删除