一、id命令

可以用来查看用户的UID、GID和附加组信息

id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。

1.格式

id [OPTION]... [USER]
id [-gGnru][--help][--version][用户名称]

2.参数:

  -a        忽略,为了与其他版本的兼容性
  -Z, --context  只打印当前用户的安全上下文

  -u, --user    只打印用户有效的ID
  -g, --group     只打印有效的组ID
  -G, --groups  打印所有的组【附加组】ID
  -n, --name     打印名称而不是数字。适用于 -ugG
  -r, --real      打印真实的ID替代有效的ID。 对-ugG 而言
  -z, --zero delimit entries with NUL characters, not whitespace;
not permitted in default format
--help display this help and exit
--version output version information and exit

4.使用

[root@VM_0_10_centos shellScript]# id root
uid=(root) gid=(root) groups=(root)

PS:能看到uid(用户ID)、gid(初始组ID), groups是用户所在组,这里既可以看到初始组,如果有附加组,则也能看到附加组

5.案例

[root@VM_0_10_centos shellScript]# id -nug root
id: cannot print "only" of more than one choice
[root@VM_0_10_centos shellScript]# id -ng root
root
[root@VM_0_10_centos shellScript]# id -nu root
root
[root@VM_0_10_centos shellScript]# id -n root
id: cannot print only names or real IDs in default format
[root@VM_0_10_centos shellScript]# id -r
id: cannot print only names or real IDs in default format
[root@VM_0_10_centos shellScript]# id -ru [root@VM_0_10_centos shellScript]# id -ru root [root@VM_0_10_centos shellScript]# id -rg root [root@VM_0_10_centos shellScript]# id -rG root [root@VM_0_10_centos shellScript]# id -ruG root
id: cannot print "only" of more than one choice

PS: -nr 不能和ugG连用,只能使用-nu或-nG、-ng。-r同理

6.查看命令所在位置和类型

[root@VM_0_10_centos shellScript]# whereis id
id: /usr/bin/id /usr/share/man/man1/id..gz
[root@VM_0_10_centos shellScript]# type id
id is hashed (/usr/bin/id)

二、usermod命令

  修改系统帐户文件来反映通过命令行指定的变化(修改用户账户的各项设置)

  /etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的基本属性。该文件对所有用户可读。

  /etc/shadow文件是passwd文件的一个影子,/etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。但是/etc/shadow文件只有系统管理员才能够进行修改和查看。

1.格式

usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

2.参数

-a | --append      ##把用户追加到某些组中,仅与-G选项一起使用
-c | --comment ##修改/etc/passwd文件第五段comment
-d | --home ##修改用户的家目录通常和-m选项一起使用
-e | --expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f | --inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-
-u | --uid         ##修改用户的uid,该uid必须唯一
-g | --gid         ##修改用户的gid,改组一定存在
-G | --groups ##把用户追加到某些组中,仅与-a选项一起使用
-l | --login ##修改用户的登录名称
-L | --lock ##锁定用户的密码
-m | --move-home ##修改用户的家目录通常和-d选项一起使用
-s | --shell ##修改用户的shell
-u | --uid ##修改用户的uid,该uid必须唯一
-U | --unlock ##解锁用户的密码

3.案例

1)新建test1账户,密码自己设置,添加用户组gtest1

[root@VM_0_10_centos shellScript]# useradd test1
[root@VM_0_10_centos shellScript]# echo "密码" | passwd --stdin test1
[root@VM_0_10_centos shellScript]# groupadd gtest1

2)将test1用户加入到用户组gtest1中(多个组之间用空格隔开)

[root@VM_0_10_centos shellScript]# usermod -aG gtest1 test1
[root@VM_0_10_centos shellScript]# id test1
uid=(test1) gid=(test1) groups=(test1),(gtest1)

3)修改用户的家目录为usertest

[root@VM_0_10_centos shellScript]# usermod -md /home/usertest1 test1
[root@VM_0_10_centos shellScript]# ll /home/
drwx------ test1 test1 Oct : usertest1

4)修改用户名称

[root@VM_0_10_centos shellScript]# usermod -l usertest1 test1
[root@VM_0_10_centos shellScript]# id usertest1
uid=(usertest1) gid=(test1) groups=(test1),(gtest1)

5)锁定usertest1的密码

# 查看usertest1用户的密码
# $p:匹配$最后一行  /$/p:匹配带$的所有行
[root@VM_0_10_centos shellScript]# sed -n '$p' /etc/shadow
usertest1:$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::
[root@VM_0_10_centos shellScript]# usermod -L usertest1
[root@VM_0_10_centos shellScript]# sed -n '$p' /etc/shadow
usertest1:!$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::
# 查看用户密码锁定状态
[root@VM_0_10_centos shellScript]# passwd -S usertest1
usertest1 LK -- - (Password locked.)

或使用passwd锁定密码

[root@rhel7 ~]# passwd -l usertest1    --- -l 锁定
Locking password for user usertest1.
passwd: Success
[root@rhel7 ~]# passwd -S usertest1 --- 查看状态
usertest1LK -- - (Password locked.)
[root@rhel7 ~]# passwd -u usertest1 --- 解锁
Unlocking password for user usertest1.
passwd: Success
[root@rhel7 ~]# passwd -S usertest1
usertest1 PS -- - (Password set, SHA512 crypt.)

6)解锁usertest1的密码

[root@VM_0_10_centos usertest1]# usermod -U usertest1
[root@VM_0_10_centos usertest1]# sed -n '$p' /etc/shadow
usertest1:$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::

7)修改用户的shell

# $!d:最后一行不删除($表示最后一行)  d: 删除pattern中的所有行,并读入下一新行到pattern中
[root@VM_0_10_centos usertest1]# sed -n '$p' /etc/passwd
usertest1:x::::/home/usertest1:/bin/bash
[root@VM_0_10_centos usertest1]# sed '$!d' /etc/passwd
usertest1:x::::/home/usertest1:/bin/bash
[root@VM_0_10_centos usertest1]# usermod -s /bin/sh usertest1
[root@VM_0_10_centos usertest1]# sed '$!d' /etc/passwd
usertest1:x::::/home/usertest1:/bin/sh

手动编辑 vi /etc/passwd 找到usertest1编辑保存即可

8)修改用户的UID、GID

[root@VM_0_10_centos usertest1]# usermod -u  usertest1
[root@VM_0_10_centos usertest1]# usermod -g test1

9)指定账户过期日期

[root@VM_0_10_centos usertest1]# sed -n '$p' /etc/shadow  
usertest1:$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::
[root@VM_0_10_centos usertest1]# usermod -e -- usertest1
[root@VM_0_10_centos usertest1]# sed -n '$p' /etc/shadow
usertest1:$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::

10)指定用户帐号密码过期多少天后,禁用该帐号

[root@VM_0_10_centos usertest1]# usermod -f  usertest1
[root@VM_0_10_centos usertest1]# sed -n '$p' /etc/shadow
usertest1:$$iXyz/MbY$7gYSO3kumZXgiH.jYVkst/:::::::

PS:  usermod不允许你改变正在线上的使用者帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序

三、用户文件详解

1./etc/passwd、/etc/shadow

1)/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段

其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

字段解释:

  用户名(login_name):代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  口令(passwd):存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
  用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  组标识号(GID):用户所属的用户组。它对应着/etc/group文件中的一条记录。
  注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
  主目录(home_directory):用户的起始工作目录(家目录),它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

2)/etc/shadow文件格式与/etc/passwd文件格式类似,同样由若干个字段组成,字段之间用“:”隔开。

字段主要含义为:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

字段解释:

  登录名:是与/etc/passwd文件中的登录名相一致的用户账号
  口令:存放的是加密后的用户口令:

    如果为空,则对应用户没有口令,登录时不需要口令;
    星号代表帐号被锁定;
    双叹号表示这个密码已经过期了;
    $6$开头的,表明是用SHA-512加密;
    $1$表明是用MD5加密;
    $2$ 是用Blowfish加密;
    $5$ 是用 SHA-256加密;
  最后一次修改时间:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日

  最小时间间隔:指的是两次修改口令之间所需的最小天数。
  最大时间间隔:指的是口令保持有效的最大天数。
  警告时间:表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  不活动时间:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  失效时间:给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

2./etc/group、/etc/gshadow文件

1)/etc/group

  包括用户组(Group):用户组口令:GID及该用户组所包含的用户(User):每个用户组一条记录

格式如下:

group_name:passwd:GID:user_list

2)/etc/gshadow

  /gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。

格式如下,每个用户组独占一行;

groupname:password:admin,admin,…:member,member,…

字段解释:

  第一字段:用户组
  第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
  第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
  第四字段:组成员,如果有多个成员,用,号分割;

【Linux命令】id,usermod用户管理命令(包括/etc/passwd、shadow、group、gshadow文件)的更多相关文章

  1. lesson - 5 课程笔记 which/ type / whereis /locate /pwd / etc/passwd/ shadow/ group / gshadow /useradd /usermod /userdel /passwd / su sudo

    一.which 作用: which 命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录, which 命令会在环境变量$PATH 设置的目录里查找符合条件的文件.也 ...

  2. Linux系列教程(七)——Linux帮助和用户管理命令

    上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...

  3. Linux常用命令之帮助和用户管理命令

    目录 1.帮助命令 一.获得命令或配置文件帮助信息:man 二.获得shell内置命令的帮助信息:help 三.获得命令的中文帮助信息:--help 2.用户管理命令 一.添加新用户:useradd ...

  4. Linux系列教程(七)——Linux常用命令之帮助和用户管理命令

    上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...

  5. Linux 用户篇——用户管理命令之id、whoami、su、chage

    一.浅谈id.whoami.su.chage 本篇是续写上一篇<Linux 用户篇——用户管理命令之useradd.passwd.userdel.usermod>. (1)id命令 命令格 ...

  6. Linux 用户篇——用户管理命令之useradd、passwd、userdel、usermod

    一.用户重要,用户管理命令同样重要 用户是Linux系统安全的核心,每个登录Linux系统的用户都会分配相应的权限,这些权限取决于能否访问系统中各种对象.而管理这些用户的相关信息离不开用户管理命令,比 ...

  7. Linux用户管理命令大全

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: $ adduser tommy //添加一个名为tommy的用户 $ passwd tommy //修改密码 Changing pa ...

  8. Linux学习之用户管理命令与用户组管理命令(十五)

    Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...

  9. linux笔记:用户管理命令和用户组管理命令

    用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...

随机推荐

  1. spring @Transaction事务回滚失败

    今天客户提出一个新问题,出库一批商品,提示失败了,但是库存数量却减少了.看了一下代码一头雾水,我们的代码加了事物,且捕获异常. 经过调试代码发现就是两个原因导致的 第一.在当前方法的catch中处理了 ...

  2. spring boot 加入mail邮件支持

    一.添加依赖 <!-- 邮件整合 --> <dependency> <groupId>org.springframework.boot</groupId> ...

  3. 华为eNSP路由交换实验-生成树之RSTP

    RSTP基础配置 实验拓扑图 实验步骤 1.基本配置 根据实验编址表进行相应的基本IP配置. 2.配置RSTP基本功能. (1)把生成树模式由默认的MSTP(华为交换机默认开启)改为RSTP. [FW ...

  4. 截取字符串substr和substring两者的区别

    两者有相同点: 如果只是写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段. 不同点:第二个参数: substr(startIndex,lenth): 第二个参数是 ...

  5. 关于AttributeError: 'NoneType' object has no attribute 'send_keys'

    在学web自动化测试时,通过PO模型将特定页面的一些元素及元素操作放在特定页面模块中, 然后提取公共的部分, 如元素等待WebDriverWait, 元素操作send_keys, click, 获取元 ...

  6. 剑指Offer-39.把数组排成最小的数(C++/Java)

    题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 分析: 将数组 ...

  7. 最强Linux shell工具Oh My Zsh 指南

    引言 笔者已经使用zsh一年多了,发现这个东东的功能太强大了.接下来,给大家推荐一下. 以下是oh-my-zsh部分功能 命令验证 在所有正在运行的shell中共享命令历史记录 拼写纠正 主题提示(A ...

  8. python3 连接 zookeeper

    zookeeper的增 删 改 查 watch监听. from kazoo.client import KazooClient import time,os import timeit os.chdi ...

  9. go语言之goto语句和函数和defer语句

    1.goto关键字 import "fmt" func main() { for i := 0;i <11;i++{ if i == 2{ //关键字,goto跳转到某个位置 ...

  10. ETCD:实验特性和APIs

    原文地址:Experimental features and APIs 大多数情况下,etcd项目是稳定的,但我们仍在快速发展! 我们相信快速发布理念. 我们希望获得有关仍在开发和稳定中的功能的早期反 ...