2.0 Cenos7用户管理(useradd、adduser、userdel、chage、usermod和shadow文件)

用户和组的相关配置

用户一般来说是指使用计算机的人,计算机对针使用其的每一个人给了一个特定的名称,用户就可以使用这些名称来登录使用计算机,除了人之外,一些系统服务也需要含有部分特权的用户账户运行;因此出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root在计算机中用拥有至高特权,所以一般只作管理用,非特权用户可以通过SU或SUDO程序来临时获得特权
GNU/Linux 通过用户和用户组实现访问控制----包括对文件访问、设备使用的控
个人可以拥有很多账户,只不是彼此名称不同,比如root名称已经占用就不能再用了,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获得该组的特权
GNU/Linux
系统中的每一个文件都有属一个用户(属主)和一个用户组(属组)。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。再次,我们可以通过
ls | stat命令查询文件属主、属组和权限。

[root@CHENDAJIE ~]# ll 
总用量 8
-rw-------. 1 root root 1764 9月  24 21:34 anaconda-ks.cfg
-rw-r--r--. 1 root root 1812 9月  24 21:38 initial-setup-ks.cfg
drwxr--r--  2 root root   34 10月 10 20:51 test
[root@CHENDAJIE ~]# ll | head -2
总用量 8
-rw-------. 1 root root 1764 9月  24 21:34 anaconda-ks.cfg
[root@CHENDAJIE ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1764            块:8          IO 块:4096   普通文件
设备:803h/2051d        Inode:16797762    硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2019-09-24 21:37:33.188998953 +0800
最近更改:2019-09-24 21:34:39.716543905 +0800
最近改动:2019-09-24 21:34:39.716543905 +0800
创建时间:-

用户账号

Linux用户的三种角色

超级用户: root 拥有对系统的最高管理权限 ID=0
普通用户:
系统用户 UID:1-999(Centos7 版本) 1-499(Centos6 版本)
本地用户 UID:1000+(Centos7 版本)500+(Centos6 版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码.
虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp,apache
UID:即每个用户的身份标示,类似于每个人的身份证号码.
虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp,apache

下图是用户和组的关系:
一对一:一个用户可以存在一个组中; 一对多:一个用户可以存在多个组中
多对一:多个用户可以存在一个组中; 多对多:多个用户可以存在多个组中
在这里插入图片描述

配置文件

用户配置文件
/etc/passwd:记录了每个用户的一些基本属性,并且对所有用户可读,每一行记录对应一个用户,每行通过冒号进行分隔。

[root@CHENDAJIE ~]# head -3 /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

用户组文件:
/etc/group: 用户组的所有信息存放地,并且组名不能重复

[root@CHENDAJIE ~]# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

用户对应的密码信息:
/etc/shadow: 因为passwd文件对所有用户是可读的,为了安全起见把密码从passwd文件中分离出来放入了shadow文件中,该文件只有root用户拥有读写权限,从而保证密码的安全性。

用户管理

1、用户命令

useradd

-d:-d 用户主目录,可以指定用户家目录
-M: 不创建用户的主目录
-g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组,GID 等于 UID.
-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)
-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将shell设置成 /sbin/nologin 就可以禁止用户登录。

2、添加登录用户

例:添加一个名为harry的用户,并使用bash作为登录的shell

[root@CHENDAJIE ~]# useradd harry
[root@CHENDAJIE ~]# tail -1 /etc/passwd
harry:x:1001:1001::/home/harry:/bin/bash

说明:此命令会自动创建harry组,并成为harry用户的默认主组,同时默认的登录shell是bash
用户帐户的全部信息被保存在/etc/passwd文件。这个文件以如下格式保存了每一个系统帐户的所有信息 (字段以“:”分割)

harry❌1001:1001::/home/harry:/bin/bash
在这里插入图片描述

harry:用户名
x:密码占位符
1001:用户的UID
1001:用户组的GID
用户描述信息(此处为空)对用户功能的简要描述
/home/harry:用户主目录
/bin/bash:用户登录系统后使用的shell

指定用户UID:-u 用户ID

[root@CHENDAJIE ~]# useradd -u 1100 oracle
[root@CHENDAJIE ~]# id oracle
uid=1100(oracle) gid=1100(oracle)=1100(oracle)
[root@CHENDAJIE ~]# tail -1 /etc/passwd
oracle:x:1100:1100::/home/oracle:/bin/bash
[root@CHENDAJIE ~]# ls /home/oracle -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

上述代码块中创建了一个UID为1100的用户oracle

指定用户主目录

[root@CHENDAJIE ~]# useradd -d /opt/cdj cdj
[root@CHENDAJIE ~]# tail -1 /etc/passwd
cdj:x:1101:1101::/opt/cdj:/bin/bash

上述代码块创建了一个家目录为/opt/cdj的用户cdj

指定用户的主组

[root@CHENDAJIE ~]# useradd xuegod
[root@CHENDAJIE ~]# id xuegod
uid=1102(xuegod) gid=1102(xuegod)=1102(xuegod)
[root@CHENDAJIE ~]# useradd -g xuegod xuegod2
[root@CHENDAJIE ~]# id xuegod2
uid=1103(xuegod2) gid=1102(xuegod)=1102(xuegod)

第一个代码块创建了一个UID、GID都为1102的用户xuegod,第二个代码块创建新用户xuegod2(UID=1103)时指定其属组为xuegod(GID=1102)

指定用户的附属组

我们也可以把这个附属组称为补充组,用户可以有0个或多个附加组的成员
如果一个组有多个成员,我们是可以在/etc/group文件中最后一个字段看到的

[root@CHENDAJIE ~]# useradd -G xuegod,harry,root xuegod3
[root@CHENDAJIE ~]# id xuegod3
uid=1104(xuegod3) gid=1104(xuegod3)=1104(xuegod3),0(root),1001(harry),1102(xuegod)

在这里插入图片描述
可以看到此时root组中就有xuegod3

创建用户的另一个命令:adduser

不常用

[root@CHENDAJIE ~]# adduser xuegod4
[root@CHENDAJIE ~]# id xuegod4
uid=1105(xuegod4) gid=1105(xuegod4)=1105(xuegod4)
[root@CHENDAJIE ~]# which adduser
/usr/sbin/adduser
[root@CHENDAJIE ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 9月  24 21:28 /usr/sbin/adduser -> useradd

:adduser是useradd的软链接

删除用户: userdel

格式:userdel [options] LOGIN
选项:-r 删除的时候,会同时删除用户的家目录和/var/mail下的目录

密码文件 shadow

[root@CHENDAJIE ~]# head -3 /etc/shadow
root:$6$QUHq687XvcKuj70y$Qy9EVwURCk6qbCkFG8GWXVZPzyBkIY0hDu5CsrSjw4C6Q0K9ZD2jnOvPzxS4spNBMfZh.TN2fImz/j7usK6IP1::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::

以:为分隔,所代表的含义如下:

1:用户名,(RHEL5使用MD5加密/RHEL6使用SHA512加密)
2:被加密后的密码
3:最近更改密码的日期,从19700101开始计算
4:密码不能更改的天数:最近被改过几天以后才可以再次更改。0代表随时可以修改
5:密码过期时间,即多少天后必须更改
6:密码需要更改期限到来前7天发出警告
7:宽限天数:密码过期几天后还能改密码
8:账号过期时间
9:保留位
格式如下图:
在这里插入图片描述
给用户添加密码:
1、交互式添加密码

[root@CHENDAJIE ~]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

此时因为我使用的是root用户,所以可以不遵守密码复杂性原则。

2、不交互式添加密码(脚本时可以使用到)

[root@CHENDAJIE ~]# echo 78910.. | passwd --stdin xuegod
更改用户 xuegod 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@CHENDAJIE ~]# echo 78910.. | passwd --stdin harry
更改用户 harry 的密码 。
passwd:所有的身份验证令牌已经成功更新。

不交互的实现方法大致来说是echo加密码通过管道传给passwd命令加–stdin选项加用户名

控制添加用户规则文件的两个文件

/etc/default/useradd 和 /etc/login.defs

[root@CHENDAJIE ~]# egrep -v "^$|^#" /etc/login.defs 
MAIL_DIR        /var/spool/mail
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000			#用户ID开始的数字
UID_MAX                 60000			#用户ID结束的数字
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000			#组ID结束的数字
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes			# 是否为用户建立home目录
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 		#shadow文件的加密算法

/etc/default/useradd

[root@CHENDAJIE ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

文件内容解释:
GROUP=100:表示可以创建普通组。users组ID为100。如果没有这一条,或者把“users”这个组删除了,当你创建用户时,将提示:useradd: group ‘100’ does not exist
HOME=/home : #哪个目录作为用户主目录存放目录。如果你不想让用户家目录在/home下,可以修改这个地方。
INACTIVE=-1 : #是否启用帐号过期。passwd文件中第7栏。即:密码过期后是否会失效的设定值 。INACTIVE:无效。-1表示启用
EXPIRE= :   #帐号终止日期 shadow中第8栏。账号失效的日期 就是 shadow 内的第八字段,你可以直接设定账号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设定此项目,但如果是付费的会员制系统,或许这个字段可以设定!
SHELL=/bin/bash:  #默认shell使用哪个
SKEL=/etc/skel:  #模板目录
CREATE_MAIL_SPOOL=yes:  #是否创建邮箱文件

命令chage

-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-W:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期,为0表示强制在下次登录时更新密码

例:修改用户cdj密码信息:让这个用户cdj首次登录系统时必须更改其密码

[root@CHENDAJIE ~]# chage -d 0 cdj
[root@CHENDAJIE ~]# ssh cdj@172.17.2.70
cdj@172.17.2.70's password: 

此时密码要遵循密码复杂性原则

查看用户相关命令:
#id 用户和组的信息
#whoami   #查看当前有效用户名
#who #显示目前登入系统的用户信息。
#w # w命令用于显示已经登陆系统的用户列表
#users #用于显示当前登录系统的所有用户的用户列表

修改用户信息:usermod

格式: usermod [选项] 登录名
-u UID
-d 宿主目录
-g 起始组 #只能有一个
-G 附加组 #可以有多个
-s 登录shell
-L 锁定

例1:修改UID

[root@CHENDAJIE ~]# id oracle
uid=1100(oracle) gid=1100(oracle)=1100(oracle)
[root@CHENDAJIE ~]# usermod -u 1111 oracle
[root@CHENDAJIE ~]# id oracle
uid=1111(oracle) gid=1100(oracle)=1100(oracle)

例2:修改shell

[root@CHENDAJIE ~]# usermod -s /sbin/nologin oracle
[root@CHENDAJIE ~]# grep oracle /etc/passwd
oracle:x:1111:1100::/home/oracle:/sbin/nologin

例3:更改用户主目录

[root@CHENDAJIE ~]# usermod -m -d /mnt/market market

-m 选项会自动创建新目录并且移到内容到新目录里面

例子4:添加说明信息

[root@CHENDAJIE ~]# usermod -c "hello world" market
[root@CHENDAJIE ~]# grep market /etc/passwd          
market:x:1112:1112:hello world:/mnt/market:/bin/bash

如果记不住这些密码的话,可以直接修改/etc/passwd文件。

解决模板文件被删之后显示不正常的问题

[chendajie@CHENDAJIE root]$ rm -rf /home/chendajie/.bash*
[chendajie@CHENDAJIE root]$ su chendajie
密码:
bash-4.2$ cp /etc/skel/.bash* /home/chendajie
bash-4.2$ chown chendajie:chendajie /home/chendajie/.bash*
bash-4.2$ su chendajie
密码:
[chendajie@CHENDAJIE root]$ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值