内容提要:

1. 掌握用户的 增/删/改 命令:useradd
2. 掌握组的 增/删/改 命令:groupadd

useradd 用户名          # 添加新用户
useradd -g 组名 用户名   # 添加新用户到某个组

passwd 用户名           # 设置用户密码
cat /etc/passwd        # 查看用户密码文件      

# id命令, 查看用户是否存在
id 用户名
id uid

# 示例: Linux中,uid、gid 和 groups 分别代表用户ID、组ID 和 附加组
#
# id mimvp
uid=1000(mimvp) gid=1000(mimvp) groups=1000(mimvp)
#
# id 1000
uid=1000(mimvp) gid=1000(mimvp) groups=1000(mimvp)

## su(switch user )切换用户、exit 回退到上一个用户
su    用户名称      # 切换用户,只能获得用户的执行权限,不能获得环境变量
su -  用户名称      # 切换用户, 并获得该用户的环境变量及执行权限
exit               # 回退到上一个用户
echo $PATH         # 查看当前用户的环境变量

## who 查看登录用户信息
whoami              # 显示自身用户名称
who am i            # 显示登录用户的用户名
## 示例
$ whoami
mimvp-blog
$ 
$ who am i
mimvp-blog    pts/1        2014-06-30 12:18 (120.244.221.111)

 

groupadd 组管理

1)groupadd 用于添加组账号

格式如下: groupadd [-g GID] GROUP

其中:

GROUP:是要添加的组名
-g:用于指定 GID,默认为使用当前最大的 GID 加1
举例: 添加一个新组 leader
# groupadd mimvp-blog
# grep mimvp-blog /etc/group
mimvp-blog:x:1001:
# grep mimvp-blog /etc/gshadow
mimvp-blog:!::

2)groupmod 修改系统已存在的组账号

格式如下: groupmod [options] GROUP
其中:
GROUP:为要修改的组账户名
常用选项:
-g GID:重新指派 GID
-n NEW_GROUP:更改组名为 NEW_GROUP
举例: 将 mimvp-blog 组更名为 mimvp-blogs
# groupmod -n mimvp-blogs mimvp-blog
# grep mimvp-blog /etc/group
mimvp-blogs:x:1001:
mimvp-blogs 组的 GID 改为 3000
# groupmod -g 3000 mimvp-blogs
# grep mimvp-blog /etc/group
mimvp-blogs:x:3000:

3)groupdel 删除系统已存在的组账号

格式如下: groupdel GROUP
其中:GROUP 为要删除的组账户名
例如:删除 mimvp-blogs
# groupdel mimvp-blogs
# grep mimvp-blog /etc/group       # 无结果
# grep mimvp-blog /etc/gshadow   # 无结果

 

useradd 用户管理

1)useradd 添加用户账号或设置添加用户使用的默认信息

格式如下:
格式1:useradd [options] mimvp-blog
格式2:useradd -D
格式3:useradd -D [options]

说明:

格式1:用于添加用户账号,其中 mimvp-blog 为用户登录账号

## 添加新用户
# useradd mimvp-blog
#
## 查询新用户所在的组
# cat /etc/group | grep "mimvp-blog"
mimvp-blog:x:1001:
#
## 查询新用户
# cat /etc/passwd | grep "mimvp-blog"          
mimvp-blog:x:1001:1001::/home/mimvp-blog:/bin/bash
# 
# 根据用户名查询新用户
# id mimvp-blog
uid=1001(mimvp-blog) gid=1001(mimvp-blog) groups=1001(mimvp-blog)
#
# 根据用户uid查询新用户
# id 1001
uid=1001(mimvp-blog) gid=1001(mimvp-blog) groups=1001(mimvp-blog)
#
## 查看新增用户的根目录
# ls -l /home/mimvp-blog/
total 20
drwx------  2 mimvp-blog mimvp-blog 4096 Jun 30 11:23 .
drwxr-xr-x. 6 root       root       4096 Jun 30 11:23 ..
-rw-r--r--  1 mimvp-blog mimvp-blog   18 Nov 25  2021 .bash_logout
-rw-r--r--  1 mimvp-blog mimvp-blog  193 Nov 25  2021 .bash_profile
-rw-r--r--  1 mimvp-blog mimvp-blog  231 Nov 25  2021 .bashrc

格式2:useradd -D 用于显示添加用户使用的默认信息

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

 

格式3:useradd -D [options] 用于设置添加用户使用的默认信息

添加用户选项 [opitons] 说明:
-u UID 指定新用户的 UID默认为使用当前最大的 UID 加1
-g GROUP 指定新用户的主组
-G GROUP1[,GROUP2,…[,GROUPN]]] 指定新用户的附加组
-d HOME_DIR 指定新用户的登录目录,默认为/home/xx
-s SHELL 指定新用户使用的 Shell,默认为 bash

改变用户默认值选项:
在配置文件 /etc/login.defs 和 /etc/default/useradd 中存放了用户默认数据。

## 此文件默认配置,可通过 useradd -D 查询
# cat /etc/default/useradd    
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

使用举例:
1、创建一个新用户 newuser,同时创建用户自家目录
# useradd newuser
2、创建一个新用户 tom,同时加入 staff 附加组中
# useradd -G staff tom
3、创建一个新用户 webmaster,不创建用户自家目录,指定登录目录 /www,同时加入 apache 附加组中
# useradd -d /www -M -G apache webmaster

 

2)usermod 修改系统已存在的组账号

格式如下: usermod [options] LOGIN

其中:
LOGIN:为要修改的用户账号名
选项:-c、-d、-e、-f、-g、-G、-s、-u 的含义与 useradd 选项的含义相同
添加了如下选项:
-l NEW_LOGIN:更改用户登录名为 NEW_LOGIN
-c COMMENT 说明用户的附加信息,如全名等
-e EXPIRE_DATE 指定用户的登录失效时间,格式为 YYYY-MM-DD
-f INACTIVE 指定在密码过期后多少天即关闭该账号, 默认值为 -1,即不做限制
-k SKEL_DIR 指定 skel 目录,默认存放在 /etc/skel/
-m 创建新用户的自家目录,默认值
-M 不创建新用户的自家目录

选项 说明
-b BASE_DIR
定义使用者所属目录的上级目录。用户名称会附加在BASE_DIR后面用来建立新使用者的目录。 当
然使用-d后则此选项无效。
-e
EXPIRE_DATE
定义使用者账号失效日期。
-f INACTIVE 定义在密码过期后多少天即关闭该账号。
-g GROUP 定义新账号起始组名或GID。组名必须为现已存在的组名。GID也必须为现已存在的GID。
-s SHELL 定义用户默认使用的 shell。
-L:锁定用户账号
-U:对用户账号解除锁定

举例:
1、将 newuser2 添加到组 staff 中
# usermod -G staff newuser2
2、修改 newuser 的用户名为 newuser1
# usermod -l newuser1 newuser
3、锁定账号 newuser1
# usermod -L newuser1
4、解除对 newuser1 的锁定
# usermod -U newuser1

 

3)userdel 删除系统已存在的组账号

格式如下: userdel [-r] LOGIN
其中:
LOGIN:为要删除的用户账号名
-r:同时删除用户的自家目录和 mail 的假脱机文件
例如:
1、删除用户 webmaster
# userdel webmaster
2、删除用户 newuser1,同时删除其自家目录   (推荐)
# userdel -r newuser1

 

id 查看用户和用户组

id 用户名
id uid

示例:

# 示例: Linux中,uid、gid 和 groups 分别代表用户ID、组ID 和 附加组
#
# id mimvp
uid=1000(mimvp) gid=1000(mimvp) groups=1000(mimvp)
#
# id 1000
uid=1000(mimvp) gid=1000(mimvp) groups=1000(mimvp)

说明:Linux中,uid、gid 和 groups 分别代表用户ID、组ID 和 附加组。

1)uid(User ID):用户ID是Linux系统中用于唯一标识每个用户的数值。系统内部使用这个ID来区分不同的用户。每个新创建的用户都会被分配一个唯一的uid。

2)gid(Group ID):组ID是用来标识用户初始群组的数值。当创建新用户时,系统会为其分配一个初始的组,并为该组分配一个gid。用户的初始组通常用于文件权限管理,用户创建的文件默认归属于其初始组。

3)groups:除了初始组外,用户可以被添加到一个或多个附加组。附加组使得用户能够在不改变其主组的情况下,访问其他组的资源或者执行特定的任务。

 

who 查看登录用户信息

whoami # 显示自身用户名称
who am i # 显示登录用户的用户名

示例:

$ whoami
mimvp-blog
$ 
$ who am i
mimvp-blog    pts/1        2014-06-30 12:18 (120.244.221.111)
$
$ who am i | awk '{print $1 "\t"  $5}'   
mimvp-blog   (120.244.221.111)

 

原文 账户管理命令useradd、groupadd