账号管理

来源:互联网 发布:石某鹏情杀网络女主播 编辑:程序博客网 时间:2024/04/30 10:15

一、新增用户:useradd

1、useradd 命令介绍

useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明栏] [-d 主文件夹绝对路径] [-s shell] 用户账号名参数:-u :后面接的是 UID,是一组数字。直接指定一个特定的 UID 给这个账号;-g :后面接的是那个用户组名,初始的用户组。        该用户组的GID 会被放置到 /etc/passwd 的第四个字段内。-G :后面接的组名则是这个账号还可以加入的用户组。         这个参数会修改 /etc/group 内的相关数据。-M :强制!不要创建用户主文件夹(系统账号默认值)!-m :强制!要创建用户主文件夹(一般账号默认值)!-c  :这个就是 /etc/passwd 的第五列的说明内容。可以随便我们设置的。-d  :指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径!-r  :创建一个系统的账号,这个账号的 UID 会有限制。-s :后面接一个 shell,若没有指定则默认是 /bin/bash 。-e :后面接一个日期,格式为“YYYY-MM-DD”,此选项可写入 shadow 第八字段,即账号失效日的设置选项。-f :后面接 shadow 的第七字段选项,指定密码是否会失效。0为立刻失效,-1为永远不失效(密码只会过期而强制于登录时重新设置而已)。

2、案例一:完全使用默认值新建一个用户,名称为 flysheep

[root@www ~]# useradd flysheep[root@www ~]# ll -d /home/flysheepdrwx------ 3 flysheep flysheep 74 97 08:22 /home/flysheep# 默认会创建用户主文件夹,且权限为700!这是重点![root@www ~]# grep flysheep /etc/passwd /etc/shadow /etc/group/etc/passwd:flysheep:x:1003:1003::/home/flysheep:/bin/bash/etc/shadow:flysheep:!!:17416:0:99999:7:::/etc/group:flysheep:x:1003:

主要设置了以下默认值:
- 在 /etc/passwd 里面创建一行与账号相关的数据,包括创建 UID/GID/主文件夹等;
- 在 /etc/shadow 里面将此账号的密码相关参数写入,但是尚未有密码;
- 在 /etc/group 里面加入一个与账号名称一模一样的组名;
- 在 /home 下面创建一个与账号同名的目录作为用户主文件夹,且权限为700

3、案例二:假设我已知道我的系统当中有个用户组名为 flysheep,且 UID 1004 并不存在,请用 flysheep 为初始用户组,以及 UID 为 1004 创建一个名为 flysheep2 的账号

[root@www ~]# useradd -u 1004 -g flysheep flysheep2[root@www ~]# ll -d /home/flysheep2drwx------ 3 flysheep2 flysheep 74 97 08:40 /home/flysheep2[root@www ~]# grep flysheep2 /etc/passwd /etc/shadow /etc/group/etc/passwd:flysheep2:x:1004:1003::/home/flysheep2:/bin/bash/etc/shadow:flysheep2:!!:17416:0:99999:7:::# UID 与 初始用户组确实改变成我们需要的了!

4、案例三:创建一个系统账号,名称为 flysheep3

[root@www ~]# useradd -r flysheep3[root@www ~]# ll -d /home/flysheep3ls: 无法访问/home/flysheep3: 没有那个文件或目录        <== 不会主动创建主文件夹[root@www ~]# grep flysheep3 /etc/passwd /etc/shadow /etc/group/etc/passwd:flysheep3:x:984:984::/home/flysheep3:/bin/bash/etc/shadow:flysheep3:!!:17416::::::/etc/group:flysheep3:x:984:

二、设置账号的密码:passwd

使用 useradd 创建了账号之后,在默认的情况下,该账号是无法登陆的,需要设置新密码才可以登陆。设置密码就使用 passwd。

passwd [--stdin]         <== 所有人均可使用来改自己的密码passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号          <== root 功能参数:--stdin:可以通过来自前一个管道的数据,作为密码输入,对 shell script 有帮助!-l:是 Lock 的意思,会将 /etc/shadow 第二列最前面加上 ! 使密码失效。-u:与 -l 相对,是 Unlock 的意思!-S:列出密码相关参数,即 shadow 文件内的大部分信息。-n:后面接天数,shadow 的第4字段,多久不可修改密码天数。-x:后面接天数,shadow 的第5字段,多久内必须要改动密码。-w:后面接天数,shadow 的第6字段,密码过期前的警告天数。-i:后面接“日期”,shadow 的第7字段,密码失效日期。

1、案例一:请 root 给予 flysheep 密码

[root@www ~]# passwd flysheep更改用户 flysheep 的密码 。新的 密码:                       <== 这里直接输入新的密码,屏幕不会有任何反应无效的密码: 密码少于 8 个字符              <== 密码太简单或过短的错误!重新输入新的 密码:                  <== 再输入一次同样的密码passwd:所有的身份验证令牌已经成功更新。          <==竟然还是成功修改了!

2、案例二:用 flysheep 登录后,修改 flysheep 自己的密码

[flysheep@www ~]$ passwd            <== 后面没有加账号,就是改自己的密码!

3、案例三:使用 standard input 新建用户的密码

[root@www ~]# echo "123456" | passwd --stdin flysheep更改用户 flysheep 的密码 。passwd:所有的身份验证令牌已经成功更新。

这个动作会直接更新用户的密码而不用再次手动输入!

4、案例四:管理 flysheep 的密码,使其具有60天更改、10天密码失效的设置

[root@www ~]# passwd -S flysheepflysheep PS 2017-09-11 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)# 上面说明密码新建时间(2017-09-11)、最小天数(0)、更改天数(99999)、警告天数(7)、密码不会失效(-1)[root@www ~]# passwd -x 60 -i 10 flysheep调整用户密码老化数据flysheep。passwd: 操作成功[root@www ~]# passwd -S flysheepflysheep PS 2017-09-11 0 60 7 10 (密码已设置,使用 SHA512 算法。)

5、案例五:让 flysheep 的账号失效,查看完毕后再让他生效

[root@www ~]# passwd -l flysheep锁定用户 flysheep 的密码 。passwd: 操作成功[root@www ~]# passwd -S flysheepflysheep LK 2017-09-11 0 60 7 10 (密码已被锁定。)# 状态变成“LK,Lock”,就无法登陆了。[root@www ~]# grep flysheep /etc/shadowflysheep:!!$6$AcmFrTq4$K0xLQSZeBoAICIqWVBfQHGjP12.1dWGS/KJidAfQP8NNjsIoEWDZ.vG.FvS4jSWYJatkvtxT8k4nBu18XK1zz0:17420:0:60:7:10::# 其实只是在这里加上!!而已![root@www ~]# passwd -u flysheep解锁用户 flysheep 的密码。passwd: 操作成功[root@www ~]# grep flysheep /etc/shadowflysheep:$6$AcmFrTq4$K0xLQSZeBoAICIqWVBfQHGjP12.1dWGS/KJidAfQP8NNjsIoEWDZ.vG.FvS4jSWYJatkvtxT8k4nBu18XK1zz0:17420:0:60:7:10::

三、列出账号的详细密码参数:chage

chage [-ldEImMW] 账号名参数:-l:列出该账号的详细密码参数。-d:后面接日期,修改 shadow 的第三字段(最近一次更改密码的日期),格式:YYYY-MM-DD-E:后面接日期,修改 shadow 的第八字段(账号失效日),格式:YYYY-MM-DD-I:后面接天数,修改 shadow 的第七字段(密码失效日期)。-m:后面接天数,修改 shadow 的第四字段(密码最短保留天数)。-M:后面接天数,修改 shadow 的第五字段(密码多久需要进行更改)。-W:后面接天数,修改 shadow 的第六字段(密码过期前警告日期)。

1、案例一:列出 flysheep 的详细密码参数

[root@www ~]# chage -l flysheep最近一次密码修改时间                                    :911, 2017密码过期时间                                    :1110, 2017密码失效时间                                    :1120, 2017帐户过期时间                                            :从不两次改变密码之间相距的最小天数          :0两次改变密码之间相距的最大天数          :60在密码过期之前警告的天数        :7

2、案例二:新建一个名为 flysheep2 的账号,该账号第一次登录后使用默认密码,但必须更改过密码后使用新密码才能够登录系统使用 bash 环境

[root@www ~]# useradd flysheep2[root@www ~]# echo "flysheep2" | passwd --stdin flysheep2[root@www ~]# chage -d 0 flysheep2# 此时此账号的密码新建时间会被修改为 1970/1/1,所以会有问题![root@www ~]# chage -l flysheep2最近一次密码修改时间                                    :密码必须更改密码过期时间                                    :密码必须更改密码失效时间                                    :密码必须更改帐户过期时间                                            :从不两次改变密码之间相距的最小天数          :0两次改变密码之间相距的最大天数          :99999在密码过期之前警告的天数        :7

四、修改账号数据:usermod

usermod [-cdegGlsuLU] username参数:-c:后面接账号的说明,即 /etc/passwd 第五列的说明,可以加入一些账号的说明。-d:后面接账号的主文件夹,即修改 /etc/passwd 的第六列。-e:后面接日期,格式是 YYYY-MM-DD,也就是在/etc/shadow 内的第八个字段数据。-f:后面接天数,为 shadow 的第七字段。-g:后面接初始用户组,修改 /etc/passwd 的第四个字段,即是 GID 的字段!-G:后面接次要用户组,修改这个用户能够支持的用户组,修改的是 /etc/group。-a:与 -G 合用可增加次要用户组的支持而非设置。-l:后面接账号名称,即是修改账号名称,/etc/passwd 的第一列!-s:后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等。-u:后面接 UID 数字,即 /etc/passwd 第三列的数据。-L:暂时将用户的密码冻结,让他无法登陆。其次仅改 /etc/shadow 的密码。-U:将 /etc/shadow 密码列的 ! 去掉。

1、案例一:修改用户 flysheep 的说明列,加上“flysheep’s test”的说明

[root@www ~]# usermod -c "flysheep's test" flysheep[root@www ~]# grep flysheep /etc/passwdflysheep:x:1003:1003:flysheep's test:/home/flysheep:/bin/bash

2、案例二:用户 flysheep 密码在 2017/12/31失效。

[root@www ~]# usermod -e "2017-12-31" flysheep[root@www ~]# grep flysheep /etc/shadowflysheep:$6$AcmFrTq4$K0xLQSZeBoAICIqWVBfQHGjP12.1dWGS/KJidAfQP8NNjsIoEWDZ.vG.FvS4jSWYJatkvtxT8k4nBu18XK1zz0:17420:0:60:7:10:17531:

3、案例三:我们新建 flysheep3 这个系统账号时并没有给予主文件夹,请新建他的主文件夹

[root@www ~]# ll -d ~flysheep3ls: 无法访问/home/flysheep3: 没有那个文件或目录     <==确认一下,确实没有主文件夹的存在![root@www ~]# cp -a /etc/skel /home/flysheep3[root@www ~]# chown -R flysheep3:flysheep3 /home/flysheep3[root@www ~]# chmod 700 /home/flysheep3[root@www ~]# ll -a ~flysheep3总用量 16drwx------. 3 flysheep3 flysheep3   74 1019 2016 .      <==用户主文件夹权限drwxr-xr-x. 9 root      root      4096 912 08:33 ..-rw-r--r--  1 flysheep3 flysheep3   18 83 2016 .bash_logout-rw-r--r--  1 flysheep3 flysheep3  193 83 2016 .bash_profile-rw-r--r--  1 flysheep3 flysheep3  231 83 2016 .bashrcdrwxr-xr-x. 4 flysheep3 flysheep3   37 714 2016 .mozilla

五、删除用户数据:userdel

用户的数据包括:
- 用户账号/密码相关参数:/etc/passwd,/etc/shadow
- 用户组相关参数:/etc/group,/etc/gshadow
- 用户个人文件数据:/home/username,/var/spool/mail/username..

userdel [-r] username参数:-r:连同用户的主文件夹也一起删除

如果想要完整地将某个账号删除,最好可以在执行 userdel -r username 之前,先以“find / -user username”查出整个系统内属于 usernamed 文件,然后再进行删除。

1、案例一:删除 flysheep ,连同主文件夹一起删除

[root@www ~]# userdel -r flysheep

六、新增用户组:groupadd

groupadd [-g gid] [-r] 用户组名参数:-g:后面接某个特定的 GID,用来直接给予某个 GID-r:新建系统用户组。与 /etc/login.defs 内的 GID_MIN 有关。

1、案例一:新建一个用户组,名称为 group1

[root@www ~]# groupadd group1[root@www ~]# grep group1 /etc/group /etc/gshadow/etc/group:group1:x:1003:/etc/gshadow:group1:!::

七、修改用户组:groupmod

跟 usermod 类似,这个命令仅是在进行 group 相关参数的修改而已。

groupmod [-g gid] [-n group_name] 用户组名参数:-g:修改既有的 GID 数字;-n:修改既有的组名。

1、案例一:将刚才上个命令新建的 group1 名称改为 mygroup,GID 为 201

[root@www ~]# groupmod -g 201 -n mygroup group1[root@www ~]# grep mygroup /etc/group /etc/gshadow/etc/group:mygroup:x:201:/etc/gshadow:mygroup:!::

八、删除用户组:groupdel

groupdel [groupname]

1、案例一:将刚才的 mygroup 删除

[root@www ~]# groupdel mygroup

九、用户组管理员:gpasswd

# 关于系统管理员(root)做的动作:gpasswd groupnamegpasswd [-A user1,...] [-M user3,...] groupnamegpasswd [-rR] groupname参数:若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)-A:将 groupname 的主控权交由后面的用户管理(该用户组的管理员)。-M:将某些账号加入这个用户组当中!-r:将 groupname 的密码删除。-R:让 groupname 的密码栏失效。# 关于用户组管理员做的操作gpasswd [-ad] user groupname参数:-a:将某位用户加入到 groupname 这个用户组当中!-d:将某位用户删除出 groupname 这个用户组当中!