linux用户,组管理


登入系统,系统解析用户的时候,并不能直接的去解析用户名 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(以冒号为一个字段)

  1. 用户名:是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成
  2. 口令: 存放着加密后的用户口令字。现在许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
  3. 用户的标识符UID
  4. 用户组的标识符GID
  5. 注释信息
  6. 用户的家目录
  7. 登录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$加密因子
第三列:上次修改密码的时间距离19700101日多少天

第四列:两次修改口令最小的时间间隔

第五列:口令有效的最大天数/密码最长有效天数(默认位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

猜你喜欢

转载自blog.csdn.net/qq_44944641/article/details/104730804