目录
2、passwd命令(密码、账号管理----账号的角度还是基于密码)
本章结构
管理用户账号和组账号
管理目录和文件的属性
一、用户和组账号概述
linnx基于用户身份对资源访问进行控制
用户账号
超级用户:root拥有对系统的最高管理权限 ID=0
普通用户:UID:1-999
程序用户:GID:1000+(仅用于维护系统或者某个程序的正常运行)
组账号
基本组(私有组)
附加组(公共组)
UID和GID
UID(User IDentity,用户标识号)
GID(Group IDentity,组标识号)
1、passwd文件账号记录详细说明
保存用户名称、宿主目录、登录shell等基本信息
文件保存位置:/etc/passwd
cat /etc/passwd (查看账号信息)
账户名:密码:uid:gid:用户说明:宿主目录:是否允许登录
jn:x:1000:1000:jn:/home/jn:/bin/bash(/sbin/nologin不允许登录)
x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件
Linux系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,最大限度地保证了密码的安全。
补充:注意!!!,虽然"x"并不表示真正的密码,但也不能删除,如果删除了 "x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
passwd wangwu 【修改用户密码】
echo “123123” | passwd -stdin wangwupasswd wangwu 【修改用户密码】
2、用户账号文件/etc/shadow
cat /etc/shadow (影子文件)【密码信息】
qiqi:!!:19169:0:99999:7::43279:
账号名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
第一个字段用户名:
用户名:同 /etc/passwd 文件的用户名有相同的含义。
第二个字段加密密码:
这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。
注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 "!"、"*" 或 "x" 使密码暂时失效。
所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。
第三个字段最后一次修改时间:
此字段表示最后一次修改密码的时间,可是,为什么 root 用户显示的是 18761 呢?
这是因为,Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 18761 天,也就是说,此 root 账号在 1970 年 1 月 1 日之后的第 18761 天修改的 root 用户密码。
那么,到底 18761 代表的是哪一天呢?可以使用如下命令进行换算:
date -d "1970-01-01 18761 days"
可以看到,通过以上命令,即可将其换算为我们习惯的系统日期。
第四个字段最小修改时间间隔:
最小修改间隔时间,也就是说,该字段规定了从第3字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;如果是 10,则代表密码修改后 10 天之内不能再次修改密码。
此字段是为了针对某些人频繁更改账户密码而设计的。
第五个字段密码有效期:
经常变更密码是个好习惯,为了强制要求用户变更密码,这个字段可以指定距离第3段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。
该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。管理服务器时,通过这个字段强制用户定期修改密码。
第六个字段密码需要变更前的警告天数:
与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 "再过 n 天你的密码就要过期了,请尽快重新设置你的密码!"。
该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 "修改密码" 的警告信息。
第七个字段密码过期后的宽限天数:
也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。
比如说,此字段规定的宽限天数是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。
第八个字段账号失效时间:
同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
该字段通常被使用在具有收费服务的系统中。
第九个字段保留:
这个字段目前没有使用,等待新功能的加入
PS:
忘记密码怎么办
经常有读者会忘记自己的账户密码,该怎么处理呢?
对于普通账户的密码遗失,可以通过 root 账户解决,它会重新给你配置好指定账户的密码,而不需知道你原有的密码(利用 root 的身份使用 passwd 命令即可)。
如果 root 账号的密码遗失,则需要重新启动进入单用户模式,系统会提供 root 权限的 bash 接口,此时可以用 passwd 命令修改账户密码;也可以通过挂载根目录,修改 /etc/shadow,将账户的 root 密码清空的方法,此方式可使用 root 无法密码即可登陆,建议登陆后使用 passwd 命令配置 root 密码。
3、chage命令
用来修改账号的密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
-m:密码可修改的最小天数 0=任何时候都可以修改
-M:密码保持有效的最大天数 例如:chage -M 60 root
-w:用户密码到期前,收到的警告信息的天数
-E:账号到期的日期。过了这天,此账号将不可用 ☆☆☆
-d:上一次更改的日期
-i:停止时期。如果一个密码已过期这些天,那么 此账号将不可用
-l:列出当前的位置。由非特权用户来确定他们的密码或账号何时过期
-h:显示此帮助信息并推出
例如:
chage -E 2022-06-29 用户 用户将在2022.6.29日失效(不可登陆)
chage -l root 可以看到用户所有属性
chage -d 0 JN 用户立即改密码
二、组的分类
当一些用户系需要做同一件事情的时候,把他们加到一个组中便于管理
1、基本组,一般新建用户的时候会随用户自动创建,与用户同名
2、附加组,一般一个用户可以有0个或多个附加组
一个用户只有一个基本组,可以有多个附加组
为什么创建家目录?为什么UID从1000开始,UID最大是多少?(仅了解)
是由于/etc/login.defs这个文件中配置决定的
1、useradd命令:添加用户账号(创建)
-u:指定用户的UID号,要求该UID号码未被其他用户使用
-d:指定用户的宿主目录的位置(当与-M一起使用时,不生效) 常用
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
-g:指定用户的基本组名(或使用 GID 号)
-G:指定用户的附加组名(或使用 GID 号)
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录 常用
-s:指定用户的登录shell环境 /bin/bash /sbin/nologin不允许登录) 常用
useradd wangwu
创建一个辅助管理员账户张三,将其基本组指定为“wheel”,附加组指定为“root”,宿主目录指定为“/admin”
useradd -d /zhangsan -g wheel -G root zhansgan
id zhangsan
uid=1006(admin) gid=10(wheel) 组=10(wheel),0(root)
2、passwd命令(密码、账号管理----账号的角度还是基于密码)
-d:清空指定用户的密码,仅使用用户名登录
-l:锁定用户账号
-S:查看用户状态(是否被锁定)
-u:解锁用户账号
echo "123456" | passwd --stadin zhangsan
给张三账户修改密码成123456
3、usermod 命令:修改账户
-l:更改用户账号的登录名称
-L:锁定用户账号
-U:解锁用户账号
-u:修改用户的UID号
-d:修改用户的宿主目录位置☆
-e:修改用户的账号失效时间,可使用YYYY-MM-DD的日期格式
-g:修改用户的基本组名(或使用GID号)
-G:修改用户的附加组名(或使用UID号)
-s:指定用户的登录shell
4、userdel命令:删除用户
userdel -r
表示连用户的宿主目录一起删掉
三、组账号文件
与组账号相关的配置文件也有两个,分别是/etc/group 和/etc/gshadow。前者用于保存组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但是很少使用到)。某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用",”(逗号)分隔
grep "^root" /etc/group #//检索root 组包括哪些用户
grep "root" /etc/group //检索哪些组包括root 用户
1、groupadd命令
groupadd [-g GID] 组账号名
groupadd -g 1200 markrt
tail -1 /etc/group
2、gpasswd命令
gpasswd
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
3、groupdel命令:删除
groupdel 组账号名
groupdel market
grep "market" /etc/group
4、groups命令:查看用户在哪个组
group [用户名]
groups adm
5、finger命令:查询用户账号的详细信息
finger [用户名]
6、w、who、users:查询已登录到主机的用户信息
w who last users 查看最近用户登陆信息
四、文件/目录的权限和归属
访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权)
属主:拥有改文件或目录的用户账号
属组:拥有改文件或目录的组账号
查看目录和文件的属性
root用户、root组
[root@node01 opt]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 16 16.34 1.sh
lrwxrwxrwx. 1 root root 4 5月 16 16.53 1.txt->1.sh
如"lrwxrwxrwx"和"-rw-r--r--"。权限字段由四部分组成
1、第一个字符:表示该文件的类型,可以时d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母l(链接文件)
2、第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限
3、第5~7个字符:表示该文件的属组用户(Group)对该文件的访问权限
4、第8~10个字符:表示其他任何用户(Other)对该文件的访问权限
5、第11个字符:这里的“.”与 SELINUX 有关
1、chmod命令:修改权限
chmod u+r 1.txt
chmod g+w 1.txt
chmod o+x 1.txt
chmod a+rwx 1.txt
chmod 644 1.txt
chmod u+r,g+w,o+x 1.txt
2、chown:修改属主属组
chown jn:jn 1.txt
五、权限掩码umask
[root@kgc ~]# umask 000
[root@kgc ~]# mkdir /umask1
[root@kgc ~]# ls -ld /umask1/
drwxrwxrwx 2 root root 4096 3 月 13 17:02 /umask1/
[root@kgc ~]# umask 022
[root@kgc ~]# mkdir /umask2
[root@kgc ~]# ls -ld /umask2/
drwxr-xr-x 2 root root 4096 3 月 13 17:03 /umask2/
作用
控制新建的文件或者目录的权限
默认权限去除umask的权限为新建的文件或者目录的权限
umask设置
是以反掩码的方式进行设置的