用户和用户组管理

1. 用户配置文件

1.1 用户信息文件 /etc/passwd

/etc/passwd 文件的权限是644,它的部分内容如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

共有7个字段,中间用冒号分割。

第1个字段:用户名称

第2个字段:密码标志(密码存放在 /etc/shadow 文件中)

第3个字段:UID(用户ID)

0 : 超级用户(一般为root)
1-499 : 系统用户(伪用户,不可删除和登陆)
500-65535 : 普通用户(自行添加的用户)

如果把普通用户的UID改为0,则该普通用户就会拥有超级用户的权限,但家目录不会变。

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

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

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

第5个字段:用户说明(备注)

第6个字段:用户的家目录

超级用户: /root
普通用户:/home/用户名

第7个字段:登录之后的shell

shell就是linux的命令解释器。

在 /etc/passwd 文件中,除了标准shell是 /bin/bash 之外,还可以写成 /sbin/nologin(不可登录)。
1.2 影子文件 /etc/shadow

影子文件 /etc/shadow 的文件权限是000,其中保存了加密后的用户密码。

它的部分内容如下:

root:$6$AM4DdsqkD09LYvbq$ljcjuHOAz8oAowhIhqx6eYnUeER4zQPiTNr44p1GTK/MJmnpHbMSbmKdXa5EOVk/ssQt.y46XTqMRQB5Hw2Uj0:17116:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
halt:*:15980:0:99999:7:::
mail:*:15980:0:99999:7:::
uucp:*:15980:0:99999:7:::
operator:*:15980:0:99999:7:::
games:*:15980:0:99999:7:::
gopher:*:15980:0:99999:7:::
ftp:*:15980:0:99999:7:::
nobody:*:15980:0:99999:7:::
dbus:!!:17116::::::
vcsa:!!:17116::::::

共有9个字段,中间用冒号分割。

第1个字段:用户名

第2个字段:加密后的密码

加密算法升级为SHA512散列加密算法。

如果密码是 "!!""*" ,表示没有密码,不能登录。

第3个字段:密码最后一次的修改日期

时间戳表示,使用1970年1月1日作为标准时间,每过一天,它的值加1。

第4个字段:禁止修改密码的时间间隔(和第3个字段相比,0表示没有限制)

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

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

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

0 : 表示密码过期后,立即失效,没有指明也等同于0。
-1 :表示密码过期后,永远不会失效。

第8个字段:账号失效时间(时间戳表示)

第9个字段:保留字段

时间戳(以天为单位)的换算:

时间戳换算为日期:
date -d "1970-01-01 17116 days"

日期换算为时间戳:
echo $(($(date --date="2017/01/25" +%s)/86400+1))
1.3 用户组信息文件 /etc/group

组信息文件 /etc/group 的权限为644,它的部分内容如下:

root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:

共有4个字段,中间用冒号分割。

第1个字段:组名称

第2个字段:组密码标志

第3个字段:GID(组ID)

第4个字段:组中的附加用户

1.4 用户组密码文件 /etc/gshadow

组密码文件 /etc/gshadow 的权限是000,它的部分内容如下:

root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon
tty:::
disk:::
lp:::daemon
mem:::

共有4个字段,中间用冒号分割。

第1个字段:组名称

第2个字段:组密码(很少用)

第3个字段:组中的管理员用户名称

第4个字段:组中的附加用户

2. 用户管理相关文件

2.1 用户的家目录
  • 超级用户:/root,所有者和所属组都是root,权限是550
  • 普通用户:/home/用户名,所有者和所属组都是该用户名,权限是700
2.2 用户的邮箱
  • /var/spool/mail/用户名
2.3 用户模板目录
  • /etc/skel

当创建一个新用户时,用户模板目录中的文件(包括隐藏文件),会自动出现在用户的家目录中。

3. 用户管理命令

3.1 添加用户 useradd

命令格式:useradd [选项] 用户名

常见选项:

-u 用户ID:手工指定用户的UID(不推荐手工指定)
-d 家目录:手工指定用户的家目录(不推荐手工指定)
-c 用户说明:手工指定用户的说明(不推荐手工指定)
-g 组名:手工指定用户的初始组(不推荐手工指定)
-G 组名:指定用户的附加组(多个附加组中间用逗号分隔)
-s shell:手工指定用户的登录shell。默认是/bin/bash。
-r :创建一个系统用户

常见用法:

useradd user01
useradd -r -g mysql -s /bin/false mysql

添加了一个新的用户之后,系统会默认自动创建用户的家目录、用户的初始组(组名和用户名相同)、用户的邮箱,而且 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 文件的内容也会随之自动更新。

添加一个新用户时,如果没有指定选项,则使用默认值。

用户默认值文件为 /etc/default/useradd,它的内容如下:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

相关说明:

GROUP:用户的默认组(现在的linux采用私有模式,该选项不会生效)
HOME:用户的默认一级家目录
INACTIVE:密码过期宽限天数(shadow文件的第7个字段)
EXPIRE:密码失效时间(shadow文件的第8个字段)
SHELL:默认的shell
SKEL:用户的模板目录
CREATE_MAIL_SPOOL:是否建立邮箱

还有一个用户默认值文件为 /etc/login.defs,内容较多,这里不作赘述。

3.2 设置用户密码 passwd

添加了用户后,一般都需要给该用户设置密码,否则,该用户就是不完整的,也就不能登录。

命令格式:passwd [选项] 用户名

该命令可用于设置或修改用户的密码,如果后面没有指定用户名,则表示给当前登录用户设置密码。

常见选项:

-S:查询用户密码的密码状态。仅root用户可用。
-l:暂时锁定用户。仅root用户可用。
-u:解锁用户。仅root用户可用。
--stdin:通过管道符将输出的字符串作为用户的密码。

常见用法:

passwd user01
只有超级用户才可以修改其他用户的密码,故只有超级用户才可以在后面指定用户名。

passwd
修改当前登录用户的密码。普通用户更改自己的密码时,必须遵守密码的复杂性原则。

echo "123456" | passwd --stdin user01
将user01的密码设置或修改为123456
3.3 修改用户信息 usermod

命令格式:usermod [选项] 用户名

常见选项:

-u 用户ID:修改用户的UID
-c 用户说明:修改用户的说明信息
-G 组名:修改用户的附加组
-L:临时锁定用户
-U:解锁

常见用法:

usermod -c "test user01" user01
修改user01用户的说明信息

usermod -G root user01
将user01用户加入附加组root
3.4 修改用户密码状态 chage

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

常见选项:

-l:列出用户的详细密码状态
-d 日期:修改密码最后一次的更改日期(shadow文件的第3个字段)
-m 天数:两次密码的修改间隔(shadow文件的第4个字段)
-M 天数:密码的有效期(shadow文件的第5个字段)
-W 天数:密码过期前的警告天数(shadow文件的第6个字段)
-I 天数:密码过期后的宽限天数(shadow文件的第7个字段)
-E 日期:账号失效时间(shadow文件的第8个字段)

其实,通过vi命令修改shadow文件会更加方便。

常见用法:

chage -l user01
查看user01用户的详细密码状态。

chage -d 0 user01
把密码最后一次的修改日期归0,这样用户一登录就必须修改密码。这条命令比较常用。
3.5 删除用户 userdel

命令格式:userdel [-r] 用户名

常见选项:

-r:删除用户的同时,删除用户的家目录

常见用法:

userdel -r user01
删除user01用户,同时删除它的家目录。

删除用户实际上是对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 文件中的相关行进行删除,同时还会删除用户的家目录和用户的邮箱。

3.6 查看用户ID信息 id

命令格式:id 用户名

常见用法:

id user01
查看用户的UID、GID和组名(包括初始组和附加组)。
3.7 切换用户身份 su

命令格式:su [选项] 用户名

常见选项:

-:连带用户的环境变量一起切换
-c 命令:仅执行一次命令,而不切换用户身份

超级用户切换为其他用户时不需要密码,而普通用户切换为其他用户时需要密码。

常见用法:

su user01
切换为user01用户,但并不同时切换环境变量。这种用法会出现一些问题,故不推荐。

su - user01
完全切换为user01用户,同时切换环境变量。推荐使用。

su - root -c "useradd user02"
仅执行一次添加用户的命令,而不切换为root。

4. 用户组管理命令

4.1 添加用户组 groupadd

命令格式: groupadd [选项] 组名

常见选项:

-g 组ID:手工指定组的ID

常见用法:

groupadd testgroup01
4.2 修改用户组 groupmod

命令格式:groupmod [选项] 组名

常见选项:

-g 组ID:修改组的ID
-n 新的组名:修改组的名称

常见用法:

groupmod -n testgroup02 testgroup01
把组名testgroup01修改为testgroup02
4.3 删除用户组 groupdel

命令格式:groupdel 组名

注意:如果组中有初始用户,则不可使用该方法删除组。附加用户不会影响组的删除。

4.4 修改组中的成员 gpasswd

命令格式:gpasswd [选项] 组名

常见选项:

-a 用户名:向组中添加附加用户
-d 用户名:把组中的附加用户删除

注意:gpasswd 只能对组中的附加用户进行添加或者删除操作。

常见用法:

gpasswd -a user01 root
向root组中添加附加用户user01

gpasswd -d user01 root
把root组中的附加用户user01删除
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值