用户和组

2018-06-05  本文已影响0人  毛利卷卷发

3A认证

Authentication:认证,传统的认证方式比如密码,其他的比如使用公钥和私钥来认证
Authorization:授权,给予用户相应的权限
Accouting:审计,对用户的行为进行审查等等

用户和组

在Linux系统中,有用户和组两个概念,用户是被包含在组里面的

用户

分为两大类

管理员:就是root,UID:0

普通用户:系统用户(为了能够让有些后台进程以非管理员的身份运行,通常为此创建很多的系统用户,该类用户不用登陆系统),UID:1-499(centos6),1-999(centos7)。登录用户,UID:500+(centos6),1000+(centos7)

组也有自己的GID,不同类型组的取值范围也是不一样的,同样也是16位二进制。组按照不同的分类可以分为以下3种类型的组:

按管理员组和普通用户组

管理员组:对系统有着管理权限的组,GID为0

普通用户组:系统用户组: 1-499(centos6),1-999(centos7)。登陆用户组:500+(centos6),1000+(centos7)

按主要组和附加组

主要组:用户在创建的时候,都会默认创建一个与其名字相同的基本组

附加组:一个用户属于一个基本组后,也可以添加多个其他的组,这些其他的组就成为附加组

按用户数目

私有组:组名同用户名且只包含一个用户

公有组:组内包含多个用户

用户和组的相关配置文件

/etc/passwd

用户及其属性信息

[root@centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
......
fanjie:x:1002:1002::/home/fanjie:/bin/bash

会看到一行从左到右被冒号分割成了7个部分,下面就这七个部分作出解释,我们以最后一行为例:

  1. fanjie:用户名
  2. x:密码位,默认使用了pwconv将密码映射到了/etc/shadow中,可以使用pwunconv将密码替代x,这样的话/etc/shadow文件就会被删除
  3. 1002:UID,用户的ID
  4. 1002:GID,用户的组ID
  5. GECOS:用户的全名或者注释
  6. /home/fanjie:用户的家目录
  7. /bin/bash:用户登陆后的默认shell,如果设置为/sbin/nologin,表示为不可交互式

/etc/shadow

用户密码及其相关属性

[root@centos7 ~]# cat /etc/shadow
root:$6$t7YfBMG2kWqZvykg$.nk3ovmX9ldIQVYHXtOxCr4nmjZqxrgRhIDLC1i1f2p2HNkGVD.DuFAUruVoCw2ceyx8QQN1QhEnm5BTLwE0X1::0:99999:7:::
......
fanjie:!!:17673:0:99999:7:::

会看到一行被冒号分为了9个部分,我们以root为例子来说明:

  1. fanjie:登陆的用户名
  2. 密码位:分为三个部分,$6为加密类型,$t7YfBMG2kWqZvykg为盐(salt),加盐的作用就是即使存在相同的密码,生成的密码也具有唯一性,$...为sha512加密后的密文,当密码前有!或者*代表这个用户被禁用了
  3. 17673:用户最近修改密码的日期,用天数表示,表示操你个1970年1月1日到被修改那天之间的天数
  4. 0:密码最短使用天数,0表示可以随时修改密码,如果为3,那么表示用户只能在当前日期的三天后才可以修改密码
  5. 99999:密码最长使用天数,相当于永久
  6. 7:密码失效前多少天提醒用户修改密码,默认为7天
  7. 密码过期多少天账户会被锁定
  8. 账号失效时间,也就是基于1970年1月1日的天数,当用户到了这个时间的时候,就无法在使用了
  9. 保留位

/etc/group

组及其信息

[root@centos7 ~]# cat /etc/group
root:x:0:
......
fanjie:x:1000:

每一行被冒号从左至右分割成了4个部分,还是以fanjie这一行来说明:

  1. fanjie:组名,默认创建一个用户,就会创建一个与其同名的组
  2. x:组密码占位符
  3. 1000:GID
  4. 是一个以逗号分隔的用户列表,为此组为附加组的用户列表

/etc/gshadow

组密码及其相关属性

[root@centos7 ~]# cat /etc/gshadow
root:::
......
fanjie:!::

每一行被冒号从左至右分割成了4个部分,还是以fanjie这一行来说明:

  1. fanjie:组名
  2. 如果为!或者是*,那么其他用户就不需要密码就可以加入到这个组中,如果组是设置密码的,则为一串密文,如果为空,则表示只有该组的成员可以获得组的权限
  3. 用户组的管理员,是一个以逗号分隔的用户列表,用户管理员可以修改密码和组成员,也跟组里其他成员拥有相同的权限
  4. 成员,是一个以逗号分隔的用户列表,以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样

用户和组常用的管理命令

pwck

校验密码文件的完整性

grpck

校验组文件的完整性

useradd

创建一个新的用户,常用选项:

[root@centos7 ~]# useradd -u 1009 fanjie8
[root@centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
fanjie8:x:1009:1009::/home/fanjie8:/bin/bash

用户在创建的时候会有一些默认值,默认值的设定在/etc/default/useradd中

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

在新建普通用户的时候,会为其创建一个家目录,我们会发现一个用户家目录下默认会有很多隐藏文件,这些隐藏文件就是来自/etc/skel下

[root@centos7 ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

还有其他的配置是保存在/etc/login.defs,比如是否创建家目录,UMASK,密码的时间的设置等等都在里面。

chage

查看和修改用户密码的相关时间,比如查看一个用户的时间

[root@centos7 ~]# chage -l fanjie
Last password change                    : May 22, 2018
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

getent

可以用来查看系统的数据库中的相关记录,比如查看用户的passwd信息或shadow信息

[root@centos7 ~]# getent passwd fanjie
fanjie:x:1000:1000::/home/fanjie:/bin/bash
[root@centos6 ~]# getent shadow fanjie
fanjie:!!:17678:0:99999:7:::

usermod

用户属性的修改,常用选项:

[root@centos7 ~]# getent shadow fanjie
fanjie:$6$e3uZLz9r$69IndMMaEizzorAUkxXbhO.Ns9eEa41jC0egRZpSPHxcmrAZ9GbwV1L00SppzYPaMhRSjsi2cLLlrpJONNKak/:17673:0:99999:7:::
[root@centos7 ~]# usermod -L fanjie
[root@centos7 ~]# getent shadow fanjie
fanjie:!$6$e3uZLz9r$69IndMMaEizzorAUkxXbhO.Ns9eEa41jC0egRZpSPHxcmrAZ9GbwV1L00SppzYPaMhRSjsi2cLLlrpJONNKak/:17673:0:99999:7:::

userdel

删除用户,默认情况下不删除用户的家目录,使用-r选项同时删除用户的家目录

[root@centos7 ~]# userdel fanjie
[root@centos7 ~]# useradd fanjie
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists

id

查看用户的相关信息,常用选项:

[root@centos7 ~]# id fanjie
uid=1002(fanjie) gid=1002(fanjie) groups=1002(fanjie),1003(test)
[root@centos7 ~]# id -u fanjie
1002
[root@centos7 ~]# id -g fanjie
1002
[root@centos7 ~]# id -G fanjie
1002 1003
[root@centos7 ~]# id -Gn fanjie
fanjie test

su

切换用户,root用户su到任何用户都不需要密码

su username:非登录切换,不会读取目标用户的配置文件,不会变更当前的工作目录

su - username:登录切换,会读取目标用户的配置文件。切换至目标用户的家目录

# 使用目标用户执行命令
[root@centos7 ~]# su - fanjie -c "mkdir /app/fanjie"
mkdir: cannot create directory ‘/app/fanjie’: Permission denied

passwd

修改用户密码,常用选项:

# 强制用户下次登录修改密码
[root@centos6 ~]# passwd -e fanjie
Expiring password for user fanjie.
passwd: Success
[root@centos6 ~]# su - fanjie1
[fanjie1@centos6 ~]$ su - fanjie
Password: 
You are required to change your password immediately (root enforced)
Changing password for fanjie.
(current) UNIX password: 
New password: 
Retype new password: 

# 从标准输入修改密码
[root@centos6 ~]# echo 123 |passwd --stdin fanjie
Changing password for user fanjie.
passwd: all authentication tokens updated successfully.

finger

用来显示用户的相关信息

[root@centos7 ~]# finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
root      root       pts/0          May 22 16:26                           (172.18.118.140)

练习

  1. 创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

    [root@centos7 ~]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
    
  2. 创建用户sarah,不可交互登录系统

    [root@centos7 ~]# useradd -s /sbin/nologin sarah
    [root@centos7 ~]# su - sarah
    This account is currently not available.
    

group

新增组,常用选项:

groupmod

修改组的信息,常用选项:

groupdel

删除组

gpasswd

设置组密码,也能添加或者删除组成员,常用选项:

newgrp

切换到一个新组,用户在切换到自己的附加组的时候,是不需要输入密码的,但是切换到其他的 组中的时候,需要验证密码。切换的时候会打开一个子shell

groupmems

groups

查看用户属于哪些组(包含主要组)

chown

修改文件的属主和属组,常用选项:

[root@centos7 app]# ll
total 0
-rw-r--r--. 1 root   root    0 May 24 09:25 b
dr-x------. 4 fanjie fanjie 87 May 23 20:46 test
[root@centos7 app]# chown wangcai.wangwu b
[root@centos7 app]# ll
total 0
-rw-r--r--. 1 wangcai wangwu  0 May 24 09:25 b
dr-x------. 4 fanjie  fanjie 87 May 23 20:46 test
[root@centos7 app]# chown --reference=test b
[root@centos7 app]# ll
total 0
-rw-r--r--. 1 fanjie fanjie  0 May 24 09:25 b
dr-x------. 4 fanjie fanjie 87 May 23 20:46 test

chgrp

修改文件的属组,所属人要修改时,所属人一定要属于目标组,可配合-R递归删除

上一篇 下一篇

猜你喜欢

热点阅读