Linux----用户管理相关知识简介

目录

[TOC]

相关文件

/etc/passwd文件

在/etc/passwd中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,比如下面是/etc/passwd的一行:

beinan:\x:500:500:beinan sun:/home/beinan:/bin/bash
  • 第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是beinan 和linuxsir;

  • 第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;

  • 第三字段:UID

  • 第四字段:GID;用户的私有组号

  • 第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户没有设置全称;

  • 第六字段:用户的主目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;

  • 第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是bash ;所以设置为/bin/bash (若为nologin,不能用账号和shell交互,只能通过应用程序登录)

/etc/shadow文件

/etc/shadow文件的内容包括9个段位,每个段位之间用:号分割

beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::

linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
  • 第一字段:用户名(也被称之为登录名),在例子中有峡谷两条记录,也表示有两个用户beinan和linuxsir

  • 第二字段:被加密的密码,如果有的用户在此字段中是x,表示这个用户不能登录系统,也可以看作是虚拟用户,不过虚拟用户和真实用户都是相对的,系统管理员随时可以对任何用户 操作;

  • 第三字段:表示上次更改口令的天数(距1970年01月01日),上面的例子能说明beinan和linuxsir这两个用户,是在同一天更改了用户密码,当然是通过passwd 命令来更改的,更改密码的时间距1970年01月01日的天数为13072;

  • 第四字段:密码的最小生存期,两次口令修改之间最小天数的功能。至少在这些天数之内不能修改密码。设置为0

  • 第五字段:密码的最大生存期,两次修改口令间隔最多的天数,在这些天数之后必须修改密码。在例子中都是99999天;永远不需要更改密码。

  • 第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;在例子中的值是7 ,表示在用户口令将过期的前7天警告用户更改期口令;

  • 第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;在例子中,此字段两个用户的都是空的,表示禁用这个功能;

  • 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;在例子中,我们看到beinan这个用户在此字段是空的,表示此用户永久可用;而linuxsir这个用户表示在距1970年01月01日后13108天后过期,算起来也就是2005年11月21号过期。(此字段用的少,可用于收费会员服务)

  • 第九字段:保留字段,目前为空,以备将来Linux发展之用;
    注意:密码过期≠密码失效≠账号失效

/etc/group文件

/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:group_name:passwd:GID:user_list在/etc/group 中的每条记录分四个字段:

  • 第一字段:用户组名称

  • 第二字段:用户组密码,由于安全原因,已经不使用该字段保存密码,用”x”占位

  • 第三字段:GID

  • 第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名(在group文件中,用户的主要组并不把该用户本身作为成员列出,只有附加组才把该用户作为成员列出。)

/etc/gshadow/文件

etc/gshadow是/etc/group的加密信息文件,/etc/gshadow 格式如下,每个用户组独占一行:

groupname:password:admin,admin,...:member,member,...

  • 第一字段:用户组名称

  • 第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;

  • 第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分隔;

  • 第四字段:组成员,如果有多个成员,用,号分隔

注意:组管理员可以不是组成员。

相关命令

添加用户 - useradd命令

添加新的用户账号使用useradd命令,其语法如下:
useradd [选项] 用户名
其中各选项含义如下:

OPTION form Description
-c全称 指定一段注释性描述
-d目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g用户组 指定用户所属的私有组,用户组名须为现有存在的名称。<若不指定,则用户私有组名就是该用户名。用-g参数指定用户私有组
有利于对用户进行分组管理。
-G用户组 用户组指定用户所属的附加组。如有多个附加组,则用逗号分开
-u 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-p 后面直接指定密码
-s shell文件 指定用户的登录Shell

修改用户 - usermod命令

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主
目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod [选项] 用户名

该命令大部分常用选项与useradd命令基本相同。另有如下新选项:

  • usermod -l 新用户名当前用户名:这个选项指定一个新的账号,即
    将原来的用户名改为新的用户名。
  • usermod -L 用户名:锁定用户帐户,使之不能登录系统。
  • usermod -U 用户名:对已锁定用户帐户解锁,使之能登录系统
操作举例:

usermod -l user2 

user1usermod -L 

user1usermod -U user1
另外,其他常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些
选项的意义与useradd命令中的选项一样,可以为用户指定新的属
性值。只不过这里是对已有用户修改其属性。

删除用户 - userdel命令

删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户
账号就是要将/etc/passwd等系统文件中的该用户记录删除,必
要时还删除用户的主目录。删除一个已有的用户账号使用
userdel命令,其格式如下:
userdel [选项] 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:

  • userdel –r sam

此命令删除用户sam在系统文件中(主要是/etc/passwd,
/etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

修改口令 - passwd命令

  • 在用useradd创建用户后,下一步就是用passwd来指定其用户口令。

  • 用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没
    有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以
    使用,即使是指定空口令。

  • 指定和修改用户口令的Shell命令是passwd。

  • 超级用户可以为自己和其他用户指定口令,普通用户只能用它修改
    自己的口令。命令的格式为:

    passwd [选项] 用户名

  • passwd可使用的选项:

    Option form Description
    -l 锁定口令,即禁用账号。使其不能登录
    -u 口令解锁
    -d 移去指定用户的口令,使之再登录系统时系统不询问口令,如需恢复该用户登录,要重新设置口令
    -S 查看用户账户口令状态

    以上选项只有root用户可以使用。

修改口令失效 - chage命令

  • 命令格式:chage [选项][用户帐户名]

  • 功能描述:用于更改与口令生存期(口令时效)有关的信息。口令时效是系统管理员用来防止机构内不良口令的一种技术。

  • 口令时效意味着过了一段预先设定的时间后(通常是90天),用户会被提示创建一个新口令。

  • 强制用户在一段时间之后更改口令的机制称为口令时效。命令格式

  • chage [<选项>] <用户名>

  • 常用选项:

    Option form Description
    -d days 指定自从1970年1月1日起,口令被改变的天数。
    -m days 口令的最小生存期,指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期。
    -M days 口令的最大生存期,指定口令有效的最多天数。当该选项指定的天数加上
    -d 选项指定的天数小于当前的日期,用户在使用该账号前就必须改变口令。
    -I days 指定口令过期后,账号被锁前不活跃的天数。如果值为0,账号在口令过期后就不会被锁。
    -E date 指定账号被锁(过期)的日期,日期格式为YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。
    -W days 指定口令过期前要警告用户的天数。
    -l 列出指定用户当前的口令时效信息,以确定账号何时过期。只有该选项可供普通用户使用。

chage操作举例:
用户user1两天内不能更改口令,并且口令最长的存活期
为30天, 并在口令过期前5天通知user1。

chage -m 2 -M 30 -W 5 user1

查看用户user1当前的口令时效信息。

chage -l user1

(passwd –S也可以查看用户口令信息)
规定用户第一次登录时需修改密码。

chage –d 0 user1

注意:上面涉及到的日期采用YYYY-MM-DD格式,但是
实际系统中是用自1970年1月1日后经过的天数来表示这个
日期,并将设置结果保存在/etc/shadow文件中。

修改用户信息工具 - chfn命令

chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的。

最简单的格式是:chfn 用户名

复杂的格式如下:chfn [ -f full-name ][ -o office ][ -p office-phone ][ -h home-phone ][ -u ][ -v ][ username ]

更改文件所属用户 - chown命令

格式:

chown [-c|--changes] [-v|--verbose] [-f|--silent|--quiet] [--dereference][-h|--no-dereference]
 [--preserve-root][--from=currentowner:currentgroup] [--no-preserve-root][-R|--recursive]
 [--preserve-root] [-H] [-L] [-P]{new-owner|--reference=ref-file} file ...
  • [user[:group]]指定了新的ownership ,用五种指定方式:

    new-owner form Description
    user 拥有此文件主权限的新用户名所属用户组未改变
    user:group 新的用户名和用户组
    :group 指定新的组名
    user: 新用户名,所属组也改为和其相同
    : 无改动
  • 选项

    OPTION Description
    -c,
    --changes
    Similar to --verbose mode, but only displays information about files that are actually changed. For example:
    changed ownership of 'dir/dir1/file1' from hope:neil to hope:hope
    -v,
    --verbose
    changed ownership of 'dir/dir1/file1' from hope:neil to hope:hope
    changed ownership of 'dir/dir1/file1' from hope:neil to hope:hope ownership of 'dir/dir1' retained as hope:hope
    -f,
    --silent,--quiet
    Quiet mode. Do not display output.
    --dereference Dereference all symbolic links. If file is a symlink, change the owner of the referenced file, not the symlink itself. This is the default behavior.
    -h,
    --no-dereference
    Never dereference symbolic links. If file is a symlink, change the owner of the symlink rather than the referenced file.
    --from=currentowner:currentgroup Change the owner or group of each file only if its current owner or group match currentowner and/or currentgroup. Either may be omitted, in which case a match is not required for the other attribute.
    --no-preserve-root Do not treat / (the root directory) in any special way. This is the default behavior. If the --preserve-root option is previously specified in the command, this option will cancel it.
    --reference=ref-file Use the owner and group of file ref-file, rather than specifying ownership with new-owner.
    -R,
    --recursive
    Operate on files and directories recursively. Enter each matching directory, and operate on all its contents.****

    来自 https://www.computerhope.com/unix/uchown.htm

添加用户组命令-groupadd命令

格式:

groupadd [<参数>] <组账号名>

常用选项:

-r <系统组账号名> :用于创建系统组账号(该帐号对应的GID小于500 )

-g 后接GID值:用于指定GID (GID必须唯一且大于500 )

修改用户组的属性—groupmod命令

  • 命令格式:# groupmod [<参数>] <组账号名>

  • 常用选项:

    • -g:改变组账号的GID ,组账号名保持不变。
    • -n:改变组账号名。但组帐号名不变。

管理用户组中的用户—gpasswd命令

  • 命令格式:# gpasswd [<参数>] <组账号名>

  • 常用选项:

    • -a 用户帐号:将指定用户添加到指定的用户组(组管理员有权执行)

    • -A 组管理员用户帐号列表:将指定用户设置为用户组的管理员

    • -d 用户帐号:将指定用户从指定的用户组中删除(组管理员有权执行)

  • 操作举例:

    • gpasswd –a user1 group1gpasswd –A user2 group1
    • gpasswd –A ‘’ group1 //取消group1的管理员
    • gpasswd –d user1 group1

    将一个用户user1加入一个组usergroup的两种方法?

    gpasswd –a user1 usergroup (一般由组管理员)

    usermod –G usergroup user1 (一般由root)

删除用户组—groupdel 命令

命令格式:

groupdel <组账号名>

  • 注意事项:
    • 被删除的组账号必须存在
    • 当有用户使用组账号作为私有组并且该用户还存在时,不能删除。
    • 如果用户组中的用户在线,也不能删除。
    • 通常,应当将组中用户移出后再将它删除。
    • 与用户名同名的私有组账号在使用userdel命令删除用户时被同时删除。操作举例:# groupdel mygroup

将用户从当前组转换到指定组命令 - newgrp

格式:

# newgrp <组账号名>

注意事项:

  • 这条命令将当前用户切换到指定用户组,前提条件是指定用户必须属于该组,即该组确实是该用户的主组或附加组。

  • 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。

  • 切换的目标变为当前组(或称有效组)

  • 有效组影响新建文件的权限操作举例:# newgrp bin

其他用户和组状态命令

  • id :显示用户当前的uid、gid和用户所属的组列表
  • whoami: 显示当前用户的名称
  • who: 主要用于查看当前在线上的(也就是登录的)所有用户情况。这个命令非常有用。如果用户想和其他用户建立即使通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登陆的用户此时此刻的所作所为,也要使用who命令。
  • w: 主要用于查看当前在线上的所有用户,以及用户当前执行的命令。
  • groups 用户名:显示指定用户所属的组,如未指定用户则显示当前用户所属的组。
  • su: su /su -/ su zhangshan / su -zhangshan
    其他的用户和组状态命令

你可能感兴趣的:(Linux----用户管理相关知识简介)