目录:
登入系统,系统解析用户的时候,并不能直接的去解析用户名 root,能够识别解析的是ID号。
UID:属主ID
GID:属组ID
Linux用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499(CentOS6), 1-999 (CentOS7)
登录用户:500-65535 (Centos6),1000-65535 (Centos7)
解析库 :/etc/passwd
Linux组:Groupname/GID
管理员组:root, 0
普通用户组:1-65535
系统用户组:1-499(CentOS6), 1-999(CENTOS7)
登录用户组:500-65535 (Centos6),1000-65535 (Centos7)
解析库:/etc/group
一.密码使用策略:
- 定期修改密码
- 密码长度不少于8位
- 至少使用三类字符和符号
- 使用随机密码
二.用户和组的管理:
安全上下文:进程以其发起者的身份来运行,进程对文件的访问权限,取决于发起此进程的用户的权限。
1).groupadd命令:
添加组
用法:groupadd options groupname
-g GID | 指定GID,默认是上一个组的GID+1 |
---|---|
-r | 创建系统组 |
实例:
创建组为tro(GID为4000)和gun(GID为4002)
[root@localhost ~]# groupadd -g 4000 tro
[root@localhost ~]# groupadd -g 4002 gun
2).groupmod命令:
修改组属性
用法:groupadd [option]…group
-g GID | 修改GID |
---|---|
-n new_name | 修改组名 |
3).groupdel命令:
删除组
用法:groupdel GROUP
4).useradd命令:
创建用户
-u UID | 定UID |
---|---|
-g GID | 指定基本组ID,此组得事先存在 |
-G groupname,groupname2 | 指明用户所属的附加组,多个组之间用逗号分隔 |
-c | 添加注释信息 |
-d | 以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现 |
-s | 指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中 |
-r | 创建系统用户 |
实例:
创建一个nebula用户,指定默认shell /bin/sh
创建jerry用户,指定默认shell /bin/sh并添加注释信息“helloworld”
[root@localhost ~]# useradd nebula -s /bin/sh
[root@localhost ~]# useradd jode -s /bin/sh -c "hello world! "
查看:
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
gentoo:x:4001:4001::/home/gentoo:/bin/bash
gentooo:x:5001:6001::/var/tmp/gentooo:/bin/bash
fedore:x:5002:5002:fedore Core:/home/fedore:/bin/tcsh
jerry:x:5003:5003::/home/jerry:/bin/bash
jery2:x:5004:5004::/home/jery2:/bin/bash
nebula:x:5005:5005::/home/nebula:/bin/sh
jode:x:5006:5006:hello world! :/home/jode:/bin/sh
[root@localhost ~]# id jode
uid=5006(jode) gid=5006(jode) groups=5006(jode)
5).usedmod命令:
修改用户属性
-u UID | 修改用户的ID为此处指定的新UID |
---|---|
-g | 改用户所属的基本组 |
-G | 修改用户所属的附加组;原来的附加组会被覆盖 |
-a | 与-G一同使用,用于为用户追加新的附加组 |
-c | 修改注释信息 |
-d | 修改用户的家目录;用户原有的文件不会被转移至新位置 |
-m | 只能与-d选项一同使用,用于将原来的家目录移动为新的家目录 |
-l | 修改用户名 |
-s | 修改用户的默认shell |
-L | 锁定用户密码;即在用户原来的密码字符串之前添加一个"!" |
-U | 解锁用户的密码 |
userdel: 删除用户
-r | 和家目录一并删除 |
---|
6).passwd:
创建或者修改用户密码
- passwd:修改用户自己的密码
- passwd USERNAME:修改指定用户的密码,但仅root有此权限
-l, -u | 锁定和解锁用户 |
---|---|
-d | 清除用户密码串 |
-e | 密码立刻过期 |
-n days | 最短使用期限 |
-w days | 告警时间 |
-x days | 最长使用期限 |
–stdin: 非交互式创建密码
实例:
[root@localhost ~]# echo "111111" | passwd --stdin jerry
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
7).gpasswd命令:
创建或者修改组密码
用法:gpasswd groupname
-a username | 向组中添加用户 |
---|---|
-d username | 从组中删除用户 |
【(和usermod 不同)实例如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可。gpasswd groupname让使用者暂时加入成为该组成员,之后peter建立的文件group也会是groupname。所以该方式可以暂时让peter建立文件时使用其他的组,而不是peter本身所在的组。所以使用gpasswd groupname设定密码,就是让知道该群组密码的人可以暂时切换具备groupname群组功能的。gpasswd -A peter users这样peter就是users群组的管理员,就可以执行下面的操作:gpasswd -a mary usersgpasswd -a allen users注意:添加用户到某一个组 可以使用usermod -G group_name user_name这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作。】
8).newgrp命令:
临时切换指定的组为基本组
用法:newgrp - groupname
id: 显示用户的ID号
-u | 显示UID |
---|---|
-g | 显示GID |
-G | 显示所属组ID |
-n | 需要和-u -g -G 配合使用显示名字而非ID |
9).chage命令:
更改用户密码过期信息
用法:chage options 登录名
-d date | 指定密码最后修改时间 |
---|---|
-E date | 密码到期日期,过了时间后帐号不可用 |
-w days | 告警时间 |
-m days | 密码可以更改的最小天数 |
-M days | 密码有效的最大天数: |
三.解析库文件:
1). /etc/passwd
7个字段
root❌0:0:root:/root:/bin/bash(以冒号为一个字段)
- 用户名:是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成
- 口令: 存放着加密后的用户口令字。现在许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
- 用户的标识符UID
- 用户组的标识符GID
- 注释信息
- 用户的家目录
- 登录shell
2)./etc/shadow
/etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的一下基本属性。/etc/passwd只有系统管理员才可以修改的,该文件对所有用户可读。而/etc/shadow文件正如他的名字一样,他是passwd文件的一个影子, /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。 但是/etc/shadow其他用户看不了,/etc/shadow文件只有系统管理员才能够进行修改和查看。)
[root@localhost ~]# vi /etc/shadow
root:$6$d9W9DLliJ3hzy0z9$luCn8Krt1O7zOs/AzjagY97ozAq4UPhOP3G299GmNvQMz3CXGPiN15Qk.MB/4.jylRE7dUJwnvQtJlZ5YOEp20:18321:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
vcsa:!!:18321::::::
saslauth:!!:18321::::::
postfix:!!:18321::::::
sshd:!!:18321::::::
apache:!!:18322::::::
gentoo:!!:18328:0:99999:7:::
gentooo:!!:18328:0:99999:7:::
fedore:!!:18328:0:99999:7:::
jerry:$6$U36uAM.o$/f3MT7P7vIu7VC6lno38VUMmVoFJGHTnfCsBpZDUdXmg2uyI6Vp7vn56dHyKubBSHr9ygaRaUkN7jbCwugTu./:18331:0:99999:7:::
jery2:!!:18329:0:99999:7:::
nebula:!!:18331:0:99999:7:::
jode:!!:18331:0:99999:7:::
文件以冒号为分隔符
第一列:账户名称
第二列:用户的加密口令,*,被锁定,!!代表过期,$6$加密算法,$rxtW5qBw$加密因子
第三列:上次修改密码的时间距离1970年01月01日多少天
第四列:两次修改口令最小的时间间隔
第五列:口令有效的最大天数/密码最长有效天数(默认位99999天,可以理解为永不过期)
第六列:到期前的提醒天数
第七列:到期后的宽限时间
第八列:账号失效时间
第九列:预留
root:$ 6 rxtW5qBw$yNHpzQxqF61aBP.4EgWwdZG32DiaRg537VnUFV0x947zXHs3VLgEiToxwCQB1YsdqgTBlaQuP.gYirQQABoYB.:18312:0:99999:7:::
- 6开头的,表明是用SHA-512加密
- 1表明是用MD5加密
- 2 是用Blowfish加密
- 5 是用 SHA-256加密
3)./etc/group
Linux /etc/group文件与==/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件==。linux /etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件
组名:口令:组标识号(GID):组内用户列表
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
floppy:x:19:
vcsa:x:69:
cdrom:x:11:
tape:x:33:
dialout:x:18:
- 组名: 组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
- 口令: 口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
- 组标识号: 组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID
- 组内用户列表: 是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
四.sudo命令:
- 设置用户在某台机器上运行某些命令
- sudo提供了丰富的日志,详细记录每个用户干了什么
- 通行证作用,免验证时间
- /etc/sudoers
1、编辑/etc/sudoers, 使用visudo编辑
2、用户需要是登录用户,并且启用密码
3、在普通用户下 sudo commond username
创建新用户 user1, 让它能够使用useradd命令添加用户user2
1.在root用户下输入 visudo
2.找到如下图
[root@localhost ~]# su - user1
[user1@localhost ~]$ sudo useradd user2
[sudo] password for user1:
[user1@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
gentoo:x:4001:4001::/home/gentoo:/bin/bash
gentooo:x:5001:6001::/var/tmp/gentooo:/bin/bash
fedore:x:5002:5002:fedore Core:/home/fedore:/bin/tcsh
jerry:x:5003:5003::/home/jerry:/bin/bash
jery2:x:5004:5004::/home/jery2:/bin/bash
nebula:x:5005:5005::/home/nebula:/bin/sh
jode:x:5006:5006:hello world! :/home/jode:/bin/sh
user1:x:5007:5007::/home/user1:/bin/bash
user2:x:5008:5008::/home/user2:/bin/bash
账户名 主机名称=(可切换的身份) 可用的指令
比如root账户
root ALL=(ALL) ALL
对于新增的账户就在下面加上
test ALL=(root) ALL
允许test用sudo命令执行root的所有命令
(如果是其他的命令需要用locate,whereis,which先找到命令的路径)
需要注意的是 每次切换 你都需要密码才可以,使用如下命
令可以避免输入密码
test ALL=(root) NOPASSWD: ALL