菜鸟笔记
提升您的技术认知

菜鸟教程

rapidjson 构造数组将函数实现放在头文件中RapidJSON解析和生成Json绝对路径和相对路径gcc 优化选项 -O1 -O2 -O3 -Os 优先级Python求一个整数位数的方法python中判断数字位数的几种方法python计算分位数查看hive的版本如何查看hadoop的版本elasticsearch查看所有indexsublime 列模式 列编辑shell遍历目录下所有文件http-parser解析http报文详解supervisor守护工具配置lnmp为已有站点手动更新ssl证书记录java 最长回文、最长回文子串ssh免密码登录为Linux内核开启BBR加速frp服务开机自启x86架构下,页面大小为什么是4K?如何限制对象只能建立在堆上或者栈上进程间通信的方式SyntaxError: Non-ASCII character '\xe5'TCP 连接半关闭问题ucontext 协程库代码分析python中yield的用法详解为PHP7.0安装redis扩展ucontext 简单协程库ImportError: No module named cv2的完美解决方法HashMap扩容全过程关于HashMap常见面试考点(底层原理+扩容机制)DOS批处理中的字符串处理详解(字符串截取)Linux下如何查找.sh后缀的文件core文件出现“is not a core dump: File format not recognized”的原因和解决方法(看/proc/pid/limits)记一次docker问题定位(perf,iostat等性能分析)Protocol Buffers 2.5.0 安装python 使用thrift序列化与反序列化对象PHP的base64_decode乱码linux中后台运行 java -jarLinux常用命令--文件搜索Linux常用命令--文件基础操作与文件权限变更Linux常用命令--软件包管理之(RPM包管理)Linux常用命令--文件编辑与查看Linux常用命令--文件压缩与挂载Linux常用命令--系统管理Linux常用命令--系统管理之(用户管理、用户组管理)Linux常用命令--系统管理之(进程管理、定时任务、系统监控)Linux常用命令--软件包管理之(服务管理)Linux常用命令--软件包管理之(yum与源码包安装)Linux初窥:Linux下SSH免密码登录配置如何查看CentOS7的版本信息Linux环境变量文件介绍Linux下Tomcat的安装与配置CentOS解决-bash: vim: command not found10 个提高效率的 Linux 命令别名shell比较浮点数和整数crontab 30秒执行一次Python中字典合并的四种方法shell查看CPU 硬盘 内存使用率Python 四大主流 Web 编程框架python:web后台框架简单实现如何使用 BRPC Dummy Serverlist、vector使用erase()时需要注意的地方——迭代器失效容器删除元素后迭代器失效_STL源码剖析——vector容器STL的erase()陷阱-迭代器失效总结.bashrc中定义实用的别名和函数

Linux常用命令--系统管理之(用户管理、用户组管理)

阅读 : 178

目录

配置文件

用户信息文件

用户密码文件

组信息文件

组密码文件

用户管理命令

useradd

passwd

usermod

chage

userdel

id

su

who

 w

用户组管理命令

groupadd

groupmod

groupdel

gpasswd

配置文件

在Linux系统中主要是通过配置文件来实现对用户和用户组的管理,比较重要的有以下四个配置文件:
/etc/passwd(用户信息文件)、/etc/shadow(用户密码文件、影子文件)、/etc/group(组信息文件)、/etc/gshadow(组密码文件)。

用户信息文件

在/etc/passwd文件中保存了Linux系统中所有用户的基本信息,使用man 5 passwd命令查看该配置文件的帮助,可知该配置文件中的每条记录都包含以下七个字段:account:password:UID:GID:GECOS:directory:shell,各个字段的含义如下图所示。 

用户密码文件

/etc/shadow文件中存储了用户的密码信息,包含的内容如下图所示。 

在/etc/shadow配置文件中日期字段需使用时间戳来表示,即从1970年1月1日到指定日期之间所经历的天数,下面给出其换算方法。  

//把时间戳换算为日期:14781为需要换算的时间戳
date -d "1970-01-01 14781 days" "+%Y/%m/%d %H:%M:%S" 
//把日期换算为时间戳:2017/09/10为需要换算为时间戳的日期
echo $(($(date --date="2017/09/10" +%s)/86400+1))

组信息文件

在/etc/group文件中保存了Linux系统中所有用户组的信息,其内容各字段及其含义如下图所示。 

组密码文件

在/etc/gshadow文件中保存了用户组的密码信息,其内容各字段及其含义如下图所示。 

用户管理命令

useradd

命令用途:添加新用户。
           命令语法:useradd[选项][用户名]
           常用选项:
           -u:指定用户的UID;
           -d:指定用户的家目录;
           -c:指定用户的描述内容;
           -g:指定用户的初始组;
           -G:指定用户的附加组;
           -s:指定用户的登录shell,默认为/bin/bash; 

//新添加一个用户user1,并指定其UID、家目录、描述内容、附加组
useradd -u 567 -d /user1 -c "this is a test user" -G group1 user1
//执行以上命令以后会在/etc/passwd配置文件中增加以下user1内容
user1:x:567:567:this is a test user:/user1:/bin/bash

使用useradd命令在添加用户时对于那些未设置值的字段,系统会根据/etc/default/useradd文件中指定的默认值进行设置。  

新用户在创建时一般情况下会自动创建以下用户相关文件:

1、用户的家目录

  • 普通用户:/home/用户名/,默认所有者和所属组为此用户及其初始组,权限700;

  • 超级用户:/root/,默认所有者和所属组为root用户和root组,权限550;

2、用户的邮箱文件,默认文件名:/var/spool/mail/用户名

3、用户模板目录/etc/skel/,添加新用户时,会自动将模板目录下的文件复制到添加的新用户的家目录。

passwd

命令用途:设置用户密码。
           命令语法:passwd[选项][用户名]
           常用选项:
           -S:查询用户的密码状态,仅root用户可用;
           -l:暂时锁定用户,仅root用户可用;
           -u:解锁用户,仅root用户可用;
           --stdin:将管道符输出的内容作为用户密码;

//修改用户user1的密码为123
echo "123" | passwd --stdin user1
//暂时锁定user1用户
passwd -l user1
//解锁user1用户
passwd -u user1

usermod

命令用途:修改用户信息。
           命令语法:usermod[选项][用户名]
           常用选项:
           -u:修改用户的UID;
           -d:修改用户的家目录;
           -c:修改用户的描述内容;
           -g:修改用户的初始组;
           -G:修改用户的附加组;
           -s:修改用户的登录shell;
           -L:临时锁定用户;
           -U:解锁用户; 

//修改user1用户的UID、家目录、描述内容三个字段的值
 usermod -u "666" -d /home/user1 -c "user1" user1
//暂时锁定user1用户
usermod -L user1
//解锁user1用户
usermod -U  user1

chage

命令用途:修改用户密码状态。
           命令语法:chage[选项][用户名] 
           常用选项:
           -l:列出用户的详细密码状态;
           -d:修改密码的最后一次修改日期;
           -m:修改密码的最小修改时间间隔天数;
           -M:修改密码有效期;
           -W:修改密码过期前警告天数;
           -I:修改密码过期后宽限天数;
           -E:修改密码失效日期; 

//修改密码的最后修改日期为1970年1月1日
chage -d 0 user1

userdel

命令用途:删除用户。
           命令语法:userdel[选项][用户名] 
           常用选项:
           -r:删除用户的同时删除用户家目录; 

//删除用户user1
userdel -r user1

id

命令用途:查看用户的UID和GID。

命令语法:id[用户名]  

//查看用户user1的UID和GID信息
id user1

su

命令用途:切换用户。
           命令语法:su[选项][用户名] 
           常用选项:
           -:连带用户的环境变量一起切换;
           -c:仅执行一次命令; 

//切换到root用户身份
su - root
//切换到root用户身份添加一个用户user1
su - root -c "useradd user1"

who

命令用途:显示当前登录系统的所有用户的信息。

命令语法:who 

//查看当前登录系统的用户信息(登录用户+登录终端+登录时间[+远程主机的IP地址])
who
root			tty1          2013-08-19 13:29
root			pts/0	      2013-08-19 15:04 (192.168.0.134) 
pengjunlee	        pts/1	      2013-12-20 10:37 (180.111.155.40)

注:tty表示本地终端登录,pts表示远程终端登录。  

 w

命令用途:与who类似,显示当前登录系统的所有用户的更为详细的信息。

命令语法:w 

//显示当前登录系统的用户的详细信息
w
18:18:18 up  8:37,  3 users,  load average: 0.00, 0.00, 0.00
USER        TTY          FROM              LOGIN@     IDLE    JCPU   PCPU    WHAT
root        tty1          -                18:18      16.00s  0.01s  0.01s   -bash
root        pts/0    192.168.12.1          09:46      20:47   0.55s   0.55s   -bash
pengjunlee  pts/1    192.168.12.1          18:05      0.00s   0.12s   0.09s    w

注:使用w命令显示的内容依次为:登录用户、登录终端、登录IP、登录时间、空闲时间、累计占用CPU时间、当前操作占用的CPU时间和当前正在执行的操作。  

用户组管理命令

groupadd

命令用途:创建新的用户组。
           命令语法:groupadd[选项][组名]
           常用选项:
           -g:指定用户组的GID; 

//添加一个default_group组,并指定其GID为600
groupadd -g 600 default_group

groupmod

命令用途:修改用户组信息。
           命令语法:groupmod[选项][组名]
           常用选项:
           -g:修改用户组的GID;
           -n:修改用户组的组名; 

//修改组group1的组名为default_group
groupmod -n  default_group group1

groupdel

命令用途:删除用户组。

命令语法:groupdel[组名] 

//删除group1用户组
groupdel group1

gpasswd

命令用途:gpasswd命令用于向组中添加或删除用户。
           命令语法:gpasswd[选项][组名]
           常用选项:
           -a:添加用户;
           -d:删除用户; 

//将用户user1添加到goup1组中
gpasswd -a user1 group1