如果你正在管理一台liunx服务器,最常用的操作应该是给同学分配账号。本篇将系统地说明如何分配账号给用户,如何赋予用户不同权限。整篇都是干货,看完一定会对你有帮助的。
目录
01 用户管理概述
Liunx最大的特点是一切皆文件,系统会根据用户身份决定该用户对文件的操作是否有效。
-
基于账户身份对资源访问进行控制
- 账号类别:用户账号,组账号
- 识别方式:UID、GID
-
用户账号:超级用户root、系统用户、普通用户
-
组账号:用来区分权限,不用于登录。Linux用户至少属于一个组
- 基本组(私有组):系统创建于用户同名
- 附加组(从属组):由管理员创建,由管理员加入
注意:UID 范围
- root 0
- 系统用户 1-999
- 普通用户 +1000 -60000
用户管理的命令都是对以下文件进行操作:
- /etc/passwd:存放用户基本信息
hzq: x :1001:1001:,:/home/hzq:/bin/bash
[用户名]: [密码]: [UID]: [GID]:[描述信息]:[home]: [解释器]
- /etc/shadow:存放用户密码
格式: [用户名]: [加密后密码]: [上一次修改时间(从1970-1-1开始算)]: [密码最短有效期]: [最长有效期]
示例:utest:$6$7.Vi5ANM.J28mXbx$LlKdd0A5ceuuc0m9HQPoKyO:19684:0:99999:7:::
- /etc/group:组信息
格式: 【组名】:x:【GID】:
示例:utest: x:1010:
- /etc/gshadow:组管理员信息
格式:【组名】:*:【组管理员】:【用户】
示例:sudo:*::aa
如果使用命令不管用的时候,也可以直接修改配置文件。当然,肯定是不推荐这样的,如果对于linux没有很深的了解,就直接修改配置文件的话,可能会出现系统崩坏的情况。例如,在直接对/etc/shadow 文件进行修改时,不小心把删了 root 用户密码的一个字符,这就导致root用户无法登录而且你也没有办法还原到原始密码,只能重装系统了QAQ。
02 对用户进行操作
2.1 创建用户 useradd
- 格式
useradd [选项] [参数]
- 选项
- -u:指定uid
- -d:指定家目录,缺省默认为
/home/用户名
- -G:指定所属附加组
- -s:指定用户登录解释器
- 示例
# 创建普通用户 utest
aa@mc:~$ sudo useradd -u 1003 utest
[sudo] password for aa:
# home目录下没有utest家目录,原因是该用户不是root创建
aa@mc:~$ ls /home
bb aa
# 查看utest是否创建
aa@mc:~$ id utest
uid=1010(utest) gid=1010(utest) groups=1010(utest)
# 查看utest的家目录
aa@mc:~$ grep utest /etc/passwd
utest:x:1010:1010::/home/utest:/bin/sh
# nln不能登录操作系统
aa@mc:~$ sudo useradd -s /sbin/nologin nln
- 单独创建组:groupadd
用法和useradd
命令类似。
2.2 修改用户信息
2.2.1 修改信息 usermod
- 格式
usermod [选项] [参数]
- 选项
- -u:指定uid
- -d:指定家目录,缺省默认为
/home/用户名
- -G:指定所属附加组(重置附加组)
- -s:指定用户登录解释器
- 示例
aa@mc:/home$ sudo usermod -u 1014 utest
aa@mc:/home$ id utest
uid=1014(utest) gid=1010(utest) groups=1010(utest)
aa@mc:/home$ sudo usermod -d /home/aa utest
aa@mc:/home$ sudo usermod -G aa utest
aa@mc:/home$ sudo usermod -s /sbin/nologin utest
2.2.2 修改密码 passwd
该命令修改用户密码,支持非交互式设置密码(–stdin)。
- 示例
$ passwd
Changing password for utest.
Current password:
New password:
Retype new password:
Password unchanged
New password:
Retype new password:
Bad: new and old password are too similar
New password:
Retype new password:
passwd: password updated successfully
$ echo 122 | passwd --stdin sdk
- 强制初次登录用户修改密码
将[上一次修改时间]的值改为 0 :
utest:$6$7.Vi5ANM.J28mXbx$LlKdd0A5ceuuc0m9HQPoKyO: 0: 0: 99999: 7:::
2.3 删除用户 userdel
- 命令格式
userdel -r [用户名]
03 对组进行操作
3.1 添加组账号 groupadd
- 命令格式
groupadd [-g 组号] 组名
- 示例
$ groupadd stugrp # 单独创建一个组
$ grep stugrp /etc/group
3.2 管理组成员 gpasswd
- 命令格式
gpasswd [选项] 组名
- 选项
-A 定义组管理员
-a 添加组成员(一个)
-d 删除组成员(一个)
-M 定义组成员列表(多个)
- 示例
$ gpasswd -A ldx stugrp
$ gpasswd -a xdx stugrp
$ gpasswd -d xdx stugrp
$ gpasswd -M adx,bdx,cdx stugrp
3.3 删除组 groupdel
- 命令格式
groupdel 组名
- 示例
$ groupdel stugrp
04 总结
相信大家对于用户管理命令有了更深的了解,对相关命令也熟悉了。在这些命令中,用户相关的命令一定要熟悉,这些都是我们日常使用linux时常常使用到的。