用户管理
概述
Linux是一个多用户管理的操作系统,但是很少有非常多的用户(不同用户名)同时操作一个系统的情况。对于一个标准的Linux系统来说,就是一个普通用户和一个root用户。
通常除了root用户外,建议专户专用:比如应用部署用户,查询用户,数据库用户,文件传输用户等,用户管理和权限管理息息相关,专户专用方便权限分离。
用户的操作需要使用root用户权限
相关配置文件
用户信息都是存放在/etc/passwd,用户密码信息存放在/etc/shadow。
创建用户时参照/etc/lgoin.defs文件中的配置,对用户的创建添加了一些默认的行为
主要操作
- 增加用户:useradd
- 删除用户:userdel
- 修改用户:usermod
- 查看用户:
1)通过命令: id
2)通过配置文件 /etc/passwd
- 用户密码管理
命令详解
useradd命令
使用useradd
命令添加用户,会在/etc/passwd 产生一条用户信息。/etc/passwd里面的信息分为7列,被6个:隔开。
- 第一列表示username(login name)
- 第二列表示密码列,但是已经移除,用x表示,密码信息存放再/etc/shadow文件
- 第三列表示用户的UID(user ID),和身份证号差不多,绝对不会重复
- 第四列表示用户所属组的ID,用户的primary group ID。任何用户都是要属于一个用户组的。
- 第五列表示描述信息,邮箱,电话等(默认为空)
- 第六列表示用户的家目录
- 第七列表示用户的登录的shell信息
用法:
useradd abc -u 5000 -d /abc -s /bin/sh
- 创建用户时,默认创建家目录,因为默认参照了/etc/lgoin.defs文件中的配置,对用户的创建添加了一些默认的行为。
- 创建用户成功之后的默认行为是创建用户的家目录和邮箱。
常用参数:
- g:添加primary group
- G:添加attached group
添加用户的时候指定附加组:
useradd username -G attached-group
userdel命令
使用userdel
命令删除用户。
常用参数
f
:强制删除用户,即使用户当前已登录;r
:删除用户的同时,删除与用户相关的所有文件。- 删除用户时,默认不会删除家目录和邮箱。
- 创建一个用户后,删除了该用户,如果没用
-r
参数将用户路径删除,再用useradd
添加的时候会报错,家目录已存在。
示例
userdel abc
id命令
使用id
命令查看用户。id 用户名
,与下面命令差不多,也是通过查看/etc/passwd来实现的。
grep name /etc/passwd
usermod命令
使用usermod
命令修改用户的信息。
常用参数
L
:锁定用户U
:解锁用户
示例
usermod wjx -u 5001 -d /wjx -s /bin/bash
usermod -G group user
将一个现有的用户添加到附加组
usermod -G group user
只能指定一个附加组
usermod -aG group1,group2 user
继续添加附加组,不覆盖原有的,且参数顺序不可变。
用户密码管理
密码信息存放在/etc/shadow,每一列密码信息以“:”分割:
- 第一列表示存放是的那个用户的密码信息(username)
- 第二列存放的是密码,该密码不是明文的,而是使用加密算法加密的,具体算法是在/etc/login.defs配置文件中指定
- 第三列存放的是上次修改密码的时间,从1970.1.1 到现在的天数
- 第四列存放的是密码的最小有效期,0表示随时可以修改,1表示间隔1天才能修改密码
- 第五列存放的是密码的最大有效期,默认是99999,如果是3,则表示3天后失效
- 第六列存放的是密码到期前,提前多少天警告的时间信息。如果是7,表示密码失效前7天发警告,告诉你密码即将到期。
- 第七列用户密码到期后宽限日期。如果数字是2,则表示密码过期后两天内还能正常使用,两天后就失效了。
- 第八列表示账号失效日期。如果到了这个日期,该账户密码直接失效,不能用了。
- 第九列保留
使用passwd
命令来修改密码信息。passwd
不能修改上次修改密码的时间信息。
d
:删除用户的密码n
:密码最小有效期x
:密码最大有效期。默认是99999,如果是3,则表示3天后失效。e
:加用户名,将该用户直接设置为过期,常用于新用户设置,设置初始密码后,登录后必须修改密码才可正常使用。再Windows中默认就是0。l
:账号锁定,锁定后只有root用户可以切换到该账号,切只有root用户可以解锁u
:解锁账号
root
用户可以用passwd
命令修改任何用户的密码。其他用户只能用passwd
命令修改自己的密码。
示例
在脚本中使用以下命令将tgb
的密码直接设置成123
:
echo 123 | passwd --stdin tgb
(只能root
用户使用)。
chage命令
chage
命令是相比于passwd
更灵活的修改密码信息。
m
:密码可更改的最小天数。为零时代表任何时候都可以更改密码。M
:密码保持有效的最大天数。w
:用户密码到期前,提前收到警告信息的天数。E
:帐号到期的日期。过了这天,此帐号将不可用。d
:上一次更改的日期。i
:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。l
:列出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。d
:上次修改日期
示例
chage -d 1300 -m 2 -M 4 -W 7 -I 2 -E 2021-12-31 tgb