Linux 系统里用户管理

简介:

用户管理命令

useradd 
-u uid 创建用户时指定uid
-g gid 指明用户所属基本组
-c 用户的注释信息
-M 不建家目录
-s 指定用户的默认shell
-e 用户过期时间
-G 为用户指明附加组,组须事先存在
案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为”Gentoo Distribution”。

[root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c “Gentoo Distribution”
[root@centos7 ~]#cat /etc/passwd|tail -n1  #查看/etc/passwd最后一行
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)

创建用户时默认值设定存放于/etc/default/useradd 
[root@centos7 ~]#cat /etc/default/useradd 
# useradd defaults file
GROUP=100                        
HOME=/home #把用户的家目录建在/home中          
INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用
EXPIRE= #帐号终止日期,不设置表示不启用
SHELL=/bin/bash #新用户默认所用的shell类型
SKEL=/etc/skel #配置新用户家目录的默认存放路径。当我们用useradd添加用户时,

用户家目录下的文件,都是从这里配置的目录中复制过去的。下面会详细解释一下/etc/skel
CREATE_MAIL_SPOOL=yes #创建mail文件


/etc/login.defs文件是用来定义创建用户时所需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。

下面是centos7版本的/etc/login.defs文件内容

#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
#MAIL_FILE      .mail
# Password aging controls:
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.

PASS_MAX_DAYS   99999 #一个密码最长可以使用的天数
PASS_MIN_DAYS   0 #更换密码的最小天数
PASS_MIN_LEN    5 #密码的最小长度
PASS_WARN_AGE   7 #密码失效前提前多少天开始警告
# Min/max values for automatic uid selection in useradd
UID_MIN                  1000 #最小UID为1000,也就是说添加用户时,UID从1000开始分配 
UID_MAX                 60000 #最大UID为60000
# System accounts
SYS_UID_MIN               201 #系统用户UID最小为201
SYS_UID_MAX               999 #系统用户UID最大为999
# Min/max values for automatic gid selection in groupadd
GID_MIN                  1000 #GID的范围为1000-60000。同上面UID情况
GID_MAX                 60000

# System accounts
SYS_GID_MIN               201 #系统GID的范围是201-999
SYS_GID_MAX               999 
# useradd command line. 
CREATE_HOME     yes #是否创建家目录,默认要求创建;可用-m参数控制
# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077 #默认权限
# This enables userdel to remove user groups if no members exist.
USERGROUPS_ENAB yes #删除用户同时删除用户组
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 #SHA512密码加密

补充一点

/etc/skel的作用:/etc/skel目录使用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的文件都是隐藏文件;用过修改、添加、删除/etc/skel目录下的问及爱你,我们可以为新创建的用户提供统一的,标准的、初始化用户环境。

usermod
-u UID: 新UID
-g GID: 新主组
-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s 新的默认SHELL
-c 新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加!
-U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁
案例:修改gentpp的默认shell和描述信息
[root@centos7 ~]#cat /etc/passwd | tail -n1

gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
[root@centos7 ~]#usermod -s /bin/sh gentpp
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh


userdel
-r 删除用户时,连同其家目录,mail一同删除

getent passwd ==cat /etc/passwd #查看用户信息,后面可直接跟用户名
[root@centos7 ~]#getent passwd ma
ma:x:1000:1000:ma:/home/ma:/bin/bash

id 
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
案例:
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
[root@centos7 ~]#id -u gentpp
1007
[root@centos7 ~]#id -g gentpp
1008
[root@centos7 ~]#id -G gentpp
1008 0 1
[root@centos7 ~]#id -nG gentpp
gentpp root bin

su 切换用户或以其他用户身份执行命令
1、su 非登录式切换,不会读取目标用户的部分配置文件,不改变当前工作目录
2、su – 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
3、root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码

passwd 修改指定用户的密码,仅root用户权限
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
–stdin:从标准输入接收用户密码

案例:修改ma的密码
[root@centos7 ~]#echo maguofu |passwd –stdin ma
Changing password for user ma.
passwd: all authentication tokens updated successfully.
注意:一次只能修改一个用户密码,不能批量修改。

组帐号管理命令

groupadd
-g 创建指定gid的组
-r 创建系统组 CentOS 6: ID<500
CentOS 7: ID<1000

groupmod 

-n newgrpname oldgrpname 修改组名
-g newgid groupname 修改gid

groupdel
groupdel 组名 删除组

gpasswd
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
例如: [root@centos7 ~]#gpasswd -a ma -g zhu
Adding user ma to group zhu #将用户ma添加到组zhu中
[root@centos7 ~]#gpasswd -d ma -g zhu 
Removing user ma from group zhu #将用户ma从组zhu中删除

groupmems[options] [action]
options
-g 更改为指定组
actions
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表
案例:
[root@centos7 ~]#groupmems -g admins -a ma
[root@centos7 ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中
[root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表
ma  zhu
[root@centos7 ~]#groupmems -g admins -d ma #将ma从admins中删除

[root@centos7 ~]#groupmems -g admins -l
zhu 
[root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员
[root@centos7 ~]#groupmems -g admins -l

groups 查看用户所属组列表
[root@centos7 ~]#groups ma
ma : ma
root@centos7 ~]#groups zhu
zhu : zhu




本文转自 游骑兵vtx 51CTO博客,原文链接:http://blog.51cto.com/qibingtuan/1970877

相关文章
|
4天前
|
Ubuntu 安全 Linux
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
36 1
|
11天前
|
资源调度 JavaScript 搜索推荐
Linux系统之部署envlinks极简个人导航页
【4月更文挑战第11天】Linux系统之部署envlinks极简个人导航页
52 2
|
14天前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
72 0
|
14天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
29 0
|
21天前
|
存储 前端开发 Linux
Linux系统之部署ToDoList任务管理工具
【4月更文挑战第1天】Linux系统之部署ToDoList任务管理工具
63 1
|
22天前
|
存储 传感器 运维
linux系统资源统计工具
【4月更文挑战第1天】Linux系统监控工具如dstat、htop、glances、vmstat、top、iostat、mpstat、sar和atop,用于跟踪CPU、内存、磁盘I/O、网络和进程性能。这些工具提供实时、交互式和历史数据分析,助力管理员优化系统性能和故障排查。例如,dstat是vmstat等工具的增强版,htop提供彩色界面的进程管理,而atop则结合了多种功能并记录历史数据。
28 5
linux系统资源统计工具
|
12天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
32 6
|
22天前
|
Ubuntu 架构师 Java
Linux系统常用命令非常详细建议收藏
Linux系统常用命令非常详细建议收藏
49 0
|
1天前
|
资源调度 JavaScript Ubuntu
Linux系统之部署briefing视频聊天系统
【4月更文挑战第21天】Linux系统之部署briefing视频聊天系统
19 2
|
2天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0