美文网首页
用户和组

用户和组

作者: 毛利卷卷发 | 来源:发表于2018-06-05 16:53 被阅读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

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

  • -u:创建用户时指定用户的ID
  • -o:配合-u选项,不检查UID的唯一性
  • -g:指定用户所属的基本组,可以为组名,也可以是GID
  • -c:指定用户的注释信息
  • -d:以指定的路径为家目录
  • -s:指定用户的默认shell
  • -G:指定用户附加组,组必须事先存在,多个组以逗号分隔
  • -N:不创建私有组为主组,使用users(默认存在的组,GID为100)
  • -r:创建系统用户
  • -m:创建家目录,属于系统用户
  • -M:不创建家目录,用于非系统用户
[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

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

  • -u:指定新的用户ID
  • -g:指定新的组
  • -G:指定新的附加组
  • -s:指定新的shell
  • -c:指定新的注释信息
  • -d:指定新的家目录不会自动创建,若要自动创建并移动原始家目录的数据,需要配合-m选项来使用
  • -l:修改登录名
  • -L:锁定用户,也就是在/etc/shadow密码栏前面加上!
  • -U:解锁用户,也就是拿掉!
[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

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

  • -u:显示UID
  • -g:显示GID
  • -G:显示所有的组ID
  • -n:显示名称,需要配合ugG使用
[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

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

  • -l:锁定指定的用户
  • -u:解锁用户
  • -e:强制用户下次登录修改密码
  • --stdin:从标准输入接受用户的密码
# 强制用户下次登录修改密码
[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

新增组,常用选项:

  • -g:指定GID
  • -r:创建系统组

groupmod

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

  • -g:修改GID
  • -n:修改组名称

groupdel

删除组

gpasswd

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

  • -a:添加单个用户到指定组(组管理员可执行)
  • -d:删除指定的组中单个用户(组管理员可执行)
  • -r:将指定的组密码删除(组管理员可执行)
  • -R:禁止切换该组,该组的密码被设置为了!,仅仅只有组成员才可以使用newgroup切换到该组
  • -M:可以一次性设置多个组成员,但会覆盖掉原来的组成员信息,组管理员不可执行,仅仅只有root用户可以执行,用逗号分隔成员,若不想覆盖,直接追加,可以配合-a选项
  • -A:设置组管理员的列表,用逗号分隔

newgrp

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

groupmems

  • -g:指定组的名字,配合以下选项使用
    • -a:将指定的用户加到指定的组
    • -d:将指定的用户从组中删除
    • -p:清除该组的所有成员
    • -l:列出组成员列表

groups

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

chown

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

  • -R:递归修改
  • ./::修改属组
  • --reference=目标名 待修改的文件名:将指定文件的从属关系设置为目标文件的从属关系
[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递归删除

相关文章

  • Linux操作系统--用户和用户组(八)

    一、用户和用户组 用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。 Linux用户和组的...

  • Linux用户及用户组

    用户、组和权限管理 组 Linux用户和组管理

  • Linux学习第五天

    用户账户的管理 一、用户账户和组账户概述 用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作...

  • 第3章 用户和用户组管理

    1.Linux用户和用户组管理 用户和用户组 Linux用户归属于用户组,归属于同一用户组的Linux用户对一些公...

  • 用户和组

    3A认证 Authentication:认证,传统的认证方式比如密码,其他的比如使用公钥和私钥来认证Authori...

  • 用户和组

    1、配置文件/etc/passwd中存放着用户名和用户ID对应关系的数据库 2、用户的加密密码通常被存放在/etc...

  • 用户和组

    用户和组 一:安全3A 二:用户user Linux用户:Username/UID 管理员:root,UID=0 ...

  • 用户和组

    每个用户都有一个唯一的用户ID,且每个用户可以属于多个组;每个组都有唯一一个名称和一个组ID 用户和组ID是为了确...

  • 用户和组

    工作组管理 创建工作组 语法 groupadd [options] GROUP 代码示例 删除工作组 语法 gro...

  • 用户和组

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,...

网友评论

      本文标题:用户和组

      本文链接:https://www.haomeiwen.com/subject/tskmsftx.html