Linux笔记05-用户管理命令

目录

查看登录用户信息:who

查看登录用户详细信息:w

用户管理简介

【用户管理相关文件】

【用户管理命令-useradd】

【用户管理命令-passwd】

【用户管理命令-usermod和chage】

【用户管理命令-userdel和su】

【用户组管理命令】


查看登录用户信息:who

命令名称:who

命令所在路径:/usr/bin/who

执行权限:所有用户

语法:who

功能描述:查看登录用户信息

范例: $ who

查看登录用户详细信息:w

命令名称:w

命令所在路径:/usr/bin/w

执行权限:所有用户

语法:w

功能描述:查看登录用户详细信息

范例: $ w

说明:第一行是本台Linux服务器的运行信息,up表示 连续运行了多久没关机了。也可以直接使用 uptime 命令查看本台服务器的运行信息:

load average 是一个负载均衡指数,后面的三个数值分别记录了过去的1分钟、5分钟、15分钟 系统的负载情况

IDLE 表示某个用户 登陆进来后,没有任何操作的空闲时间;

PCPU 表示某个用户登陆进来后,执行某些操作占用CPU的执行时间,后面的WHAT 就是 当前执行了什么操作

JCPU 是累计占用的时间

用户管理简介

越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要是通过用户配置文件来查看和修改用户信息。

/etc/passwd

使用vim /etc/passwd 打开这个文件的内容截图如下:

每一行都是用冒号分割成7个字段。

第1字段:用户名称

第2字段:密码标志

第3字段:UID(用户ID)

0:超级用户 (如果要将某个普通用户变成超级用户,只需要将第三个字段改成0即可)

1-499:系统用户(伪用户) (不能删,若删则系统崩溃)

500-65535:普通用户

第4字段:GID(用户初始组ID)

第5字段:用户说明

第6字段:家目录

普通用户:/home/用户名/

超级用户:/root/

第7字段:登录之后的Shell

初始组和附加组

初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。


Shell是什么

Shell就是Linux的命令解释器。在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin,/usr/bin/passwd等。

影子文件/etc/shadow

先看看这个文件的权限:000,使用vim /etc/shadow 打开这个文件的内容截图如下:

共有9个字段:

第1字段:用户名

第2字段:加密密码

* 加密算法升级为SHA512散列加密算法;

* 如果密码位是“!!”或“*”代表没有密码,不能登录

第3字段:密码最后一次修改日期,使用1970年1月1日作为标准时间,每过一天时间戳加1

第4字段:两次密码的修改间隔时间(和第3字段相比)

第5字段:密码有效期(和第3字段相比)

第6字段:密码修改到期前的警告天数(和第5字段相比)

第7字段:密码过期后的宽限天数(和第5字段相比)

0:代表密码过期后立即失效

-1:则代表密码永远不会失效。

第8字段:账号失效时间,要用时间戳表示 (如果设置了此项,则忽略第5、6、7个字段)

第9字段:保留

时间戳换算

把时间戳换算为日期 date -d "1970-01-01 16066 days"

把日期换算为时间戳 echo $(($(date --date="2013/12/27" +%s)/86400+1))

备注:PHP中的时间戳按照秒计算,Linux按照天计算。

组信息文件 /etc/group

第一字段:组名

第二字段:组密码标志

第三字段:GID

第四字段:组中附加用户

组密码文件 /etc/gshadow

第一字段:组名

第二字段:组密码

第三字段:组管理员用户名

第四字段:组中附加用户

【用户管理相关文件】

用户的家目录:

普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700

超级用户:/root/,所有者和所属组都是root用户,权限是550

说明:如果将普通用户变成了超级用户(root),虽然这个普通用户拥有了超级用户的权限,但是他的家目录不会改变。

怎么改? 打开 /etc/passwd ,找到renxing 这个用户,修改其 UID :

然后,用 renxing 用户 登录进去:

用户的邮箱 /var/spool/mail/用户名/

用户模板目录 /etc/skel/

进入用户 renxing 的家目录下,查看后发现没有文件,但是ls -a 会看到一些隐藏文件:

这些文件是创建这个用户的时候默认添加进去的。

在 /etc/skel 下如果手动创建一个模板文件warning.txt ,并写入一些文字:

然后,再创建一个用户 user1,并进入到这个用户的家目录下:

【用户管理命令-useradd】

添加新用户:useradd

命令名称:useradd

命令所在路径:/usr/sbin/useradd

执行权限:root

语法:useradd 用户名

功能描述:添加新用户

范例: $ useradd yangmi

useradd 添加用户

案例:添加一个用户 rxx : useradd rxx

接下来看看,创建了一个用户,实际上添加或更改了哪些文件:

[root@localhost ~]# grep rxx /etc/passwd 用户信息

[root@localhost ~]# grep rxx /etc/shadow 用户密码内容

[root@localhost ~]# grep rxx /etc/group 用户组信息

[root@localhost ~]# grep rxx /etc/gshadow 用户组密码内容

[root@localhost ~]# ll -d /home/rxx 查看用户rxx的家目录

[root@localhost ~]# ll /var/spool/mail/rxx 查看用户rxx 的邮箱目录

指定选项添加用户

[root@localhost ~]#useradd [选项] 用户名

选项:

-u UID: 手工指定用户的UID号

-d 家目录: 手工指定用户的家目录

-c 用户说明: 手工指定用户的说明

-g 组名: 手工指定用户的初始组(一般不要改变这个,可以改变下面的 -G )

-G 组名: 指定用户的附加组

-s shell: 手工指定用户的登录shell。默认是/bin/bash

案例演示:

接下来,可以按照上面的方法查看更改了哪些地方:

用户默认值文件

◇ 第一个文件 /etc/default/useradd

GROUP=100 #用户默认组

HOME=/home #用户家目录

INACTIVE=-1 #密码过期宽限天数(shadow文件的第7个参数)

EXPIRE= #密码失效时间(shadow文件的第8个参数)

SHELL=/bin/bash #默认shell

SKEL=/etc/skel #模板目录

CREATE_MAIL_SPOOL=yes #是否建立邮箱

◇ 第二个文件 /etc/login.defs

PASS_MAX_DAYS 99999 #密码有效期(shadow文件的第5个参数)

PASS_MIN_DAYS 0 #密码修改间隔(shadow文件的第4个参数)

PASS_MIN_LEN 5 #密码最小5位(PAM)

PASS_WARN_AGE 7 #密码到期警告(shadow文件的第6个参数)

UID_MIN 500 #最小和最大UID范围

GID_MAX 60000

ENCRYPT_METHOD SHA512 #加密模式

【用户管理命令-passwd】

◆ 设置用户密码:passwd

命令名称:passwd

命令所在路径:/usr/bin/passwd

执行权限:所有用户

语法:passwd 用户名

功能描述:设置用户密码

范例: $ passwd yangmi

说明:root可以更改任何用户的密码,并且密码可以是比较简单的。但是普通用户只能更改自己的密码,并且密码要求必须复杂。

如果直接使用 passwd ,则表示更改当前登录的用户的密码。

◇ 修改密码

说明:root 用户可以修改任何用户的密码(包括root用户自己),而且可以不用符合密码规范原则。

如下案例,使用root 修改 用户user1 的密码为 123456

普通用户只能修改自己的密码,格式为:直接 passwd 即可,而且需要符合密码规范原则。

如下案例,使用普通用户 rxx 登录,然后修改自己的密码(需要先提供当前密码)。

◇ passwd命令格式

[root@localhost ~]#passwd [选项] 用户名

选项:

-S 查询用户密码的密码状态。仅root用户可用。

-l 暂时锁定用户。仅root用户可用

-u 解锁用户。仅root用户可用

--stdin 可以通过管道符输出的数据作为用户的密码。

① 查看密码状态[仅root] passwd -S rxx

用户名|密码设定时间(2014-11-15)|密码修改间隔时间(0)|密码有效期时间戳(99999)|警告时间(7)|密码不失效(-1)

还记得 /etc/shadow 文件的信息吗?

② 锁定用户[仅root] passwd -l rxx

此时用户 rxx 就不能登录了。

③ 解锁用户[仅root] passwd -u rxx

此时用户 rxx 就又可以登录了。

④ 使用字符串作为用户的密码(在Shell脚本中会用到,以后详解)

echo "123" | passwd --stdin rxx

【用户管理命令-usermod和chage】

◆ 修改用户信息usermod

[root@localhost ~]# usermod [选项] 用户名

选项:

-u UID: 修改用户的UID号

-c 用户说明: 修改用户的说明信息

-G 组名: 修改用户的附加组

-L: 临时锁定用户(Lock)

-U: 解锁用户锁定(Unlock)

说明:其实这里跟添加用户时的那些参数都类似,可以参考。

usermod -c "test user" lamp (#修改用户的说明)

usermod -G root lamp (#把lamp用户加入root组)

usermod -L lamp (#锁定用户 Lock)

usermod -U lamp (#解锁用户)

案例 ① :

先创建一个用户 lamp,然后查看他的信息:

下面执行的语句代表:修改用户lamp 的 说明、附加组、用户uid

然后再查看刚才的用户的信息:

同时查看group文件,会看到 用户lamp 已经被放到 root 用户组里了:

案例 ② :锁定用户( 与之前的passwd -l [用户名] 一样 )

先查看 lamp 的 shadow 信息,看到结果显示密码正常:

现在来使用 usermod -L lamp 命令 锁定该用户,然后再查看 shadow:

会发现密码信息栏最前面多了个 感叹号 ( ! ) ,这个用户就不能正常登录了。

解锁用户:

usermod -U lamp 同理。很简单,不再演示。

◆ 修改用户密码状态chage

[root@localhost ~]# chage [选项] 用户名

选项:-l: 列出用户的详细密码状态

上面列出的其实就是 /etc/shadow 文件里面的对应用户的那几个字段。下面要修改的,其实也可以直接在 shadow 文件中进行修改,那样可能更加直观。

-d 日期: 修改密码最后一次更改日期(shadow文件的第3个字段)

-m 天数: 两次密码修改间隔(shadow文件的第4个字段)

-M 天数: 密码有效期(shadow文件的第5个字段)

-W 天数: 密码过期前警告天数(shadow文件的第6个字段)

-I 天数: 密码过后宽限天数(shadow文件的第7个字段)

-E 日期: 账号失效时间(shadow文件的第8个字段)

其实上面这些都不需要记住,需要的时候直接去shadow文件修改对应的字段即可。下面这个比较常用。

[root@localhost ~]# chage -d 0 lamp

说明:这个命令其实是把密码修改日期归0了(shadow第3个字段),这样用户一登录就要修改密码。

接下来,换做lamp登录,就会发现:

lamp修改过密码之后,再使用root 登进去查看 shadow 文件:

【用户管理命令-userdel和su】

◆ 删除用户userdel

[root@localhost ~]# userdel [-r] 用户名

选项:-r 删除用户的同时删除用户家目录(一般都会加上 -r)

上面可以看出,删除这个用户之后,这个用户的相关信息都没有了。

◇ 手工删除用户

 [root@localhost ~]# vi /etc/passwd

 [root@localhost ~]# vi /etc/shadow

 [root@localhost ~]# vi /etc/group

 [root@localhost ~]# vi /etc/gshadow

 [root@localhost ~]# rm -rf /var/spool/mail/lamp[用户名]

 [root@localhost ~]# rm -rf /home/lamp[用户名]

说明:一般情况下,不会这样进行手工删除。其实不管是添加用户,还是修改、删除用户,都是操作的这几个文件。

◇ 查看用户ID

[root@localhost ~]# id 用户名

重新创建一个用户 lamp,然后演示:

这里我们可以手动修改该用户的附加组,然后再查看:

◆ 切换用户身份su

[root@localhost ~]# su [选项] 用户名

选项:

-  选项只使用“-”代表连带用户的环境变量一起切换

-c 命令 仅执行一次命令,而不切换用户身份

先说说平时最常用的 su:

先使用lamp登录,然后使用 su root 切换到root

这里已经切换到root用户了,但是使用env 查看当前用户的环境变量:

会发现,其实当前环境下很多信息都还是之前的lamp 用户的。

那么,如果需要切换用户的时候同时切换用户的环境变量,就要使用 su - [用户名]

案例:还是按照之前,先从lamp用户开始登录,然后切换到root,使用 su - root

再使用 env 查看环境变量,就没问题了。

扩展说明:root切换为普通用户不需要输入密码;普通用户切换为root 或者 普通用户切换为其他普通用户 需要输入密码。

◇ 仅执行一次命令,而不切换用户身份:

[lamp@localhost ~]$ su - root -c "useradd user3" (#不切换成root,但是执行useradd命令添加user3用户 )

什么意思呢? 就是说,我现在是lamp用户在登录,但是我需要创建一个用户(注意:创建用户 useradd 只有 root 可以执行),

但是我又不想切换到root。这个时候就使用这样的命令。在以root的角色办完该办的事之后,就又回到了lamp用户。

那么,怎么知道刚才的 用户user3 是否添加成功呢?... 查看 /etc/passwd 文件。

【用户组管理命令】

◆ 添加用户组

groupadd [选项] 用户组名

选项: -g [GID] 指定组ID (意义不大,一般不需要指定)

◆ 修改用户组

groupmod [选项] 用户组名

选项:

-g [GID]: 修改组ID (一般不常用)

-n 新组名: 修改组名

案例:groupmod -n group1 tg (将组 tg 改名为 group1)

说明:一般情况下不建议修改组名,一般都是删除这个组,然后重新创建。

◆ 删除用户组

groupdel 用户组名

◇ 如果一个组中有用户,那么该是什么情况。

案例分析:新建一个用户组叫testgp,然后再新建一个用户 testuser并将其 初始组(-g) 赋给testgp,再创建一个新用户testuser1并将其 附加组(-G) 赋给testgp.

那么其实,用户testuser 的初始组就是 testgp;而testuser1用户的初始组是testuser1,附加组是 testgp.

打开 /etc/group 拉到最下面:

这时,删除这个用户组 testgp:

报错意思是,不能移除用户“testuser”的主用户组(即初始组)。

那么,现在来删除这个用户 testuser,再来尝试删除这个用户组:

结果显示,已经删除了这个组。虽然这个组还是用户 testuser1的附加组。

因此总结:要删除一个用户组,要保证这个用户组内没有初始用户存在,附加用户在不在无所谓。

◆ 将用户添加入用户组或从用户组中删除

gpasswd [选项] 用户组名

选项:

-a 用户名: 把用户加入组

-d 用户名: 把用户从组中删除

说明①:useradd -g groupname username 是添加用户的时候同时将这个用户加入到指定的用户组,操作的最终对象是用户;而gpasswd -a username groupname 是将一个已经存在的用户加入到指定的用户组中,操作的最终对象是用户组。注意区分!

说明②:这里所说的添加到用户组和从用户组移除,都是附加组。

◇ 案例演示:先查看 /etc/group 文件中 root组的情况:

接下来,再创建三个用户rx1、rx2、rx3,并且加入到root用户组中。

再来查看group文件中 root 组的情况:

其实,也可以直接打开 /etc/group 文件,在对应的用户组后面添加上指定的用户,也可以实现。

◇ 案例演示:将用户rx1从root组中移除:

【2014年11月16日】

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮尘笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值