Linux用户和组的概念
目
录
3.1 使用useradd命令新增账户,注意:adduser命令软链接指向useradd命令 1
用户和组存在的关系
我们现在所使用的操作系统都是多用户操作系统
1、系统上的每一个进程(运行程序)都需要特定的用户运行=
2、每一个文件都有特定的用户拥有
3、访问文件或目录受用户限制
3、进程能够以任何方式访问某个文件或者目,进程所关联的用户有关
id命令查看当前登陆的用户信息
[root@majinhai ~]# id root
uid=0(root) gid=0(root) 组=0(root)
用户UID的分类
- UID范围是0-65535及2的16次方
- 超级管理员的UID是0
- 1-200是系统用户,有系统分配给进程使用
- 201-999是系统用户,用来运行服务账户,不需要登录系统(动态分配)
- 1000-65535是普通用户
- 注意:在Linux7之前的惯例是UID1-499是系统用户,UID500+是普通用户
组类别
- 基本组:优先使用基本组,由系统分配给系统进程使用
- 附加组:基本组不能满足授权要求,创建附加组,用户可以属于多个附加组
- 私有组:创建用户时如果没有指定属组,系统会创建同名的组
用户管理*****
配置文件
用户信息存放在/etc/passwd文件中,账户密码信息保存在/etc/shadow这个文件中,这两个文件是Linux系统中最重要的文件之一。如果这两个文件损坏或者丢失,将导致用户无法登陆Linux系统。
用户的账户文件
账户文件路径/etc/passwd
[root@majinhai ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
账户信息是由:分割成7个字段,每个字段的含义如下:
|
序号 |
字段名称 |
注释说明 |
|
1 |
用户名称 |
用户的账户名称 |
|
2 |
密码占位符 |
存放账户的口令,暂时是x表示,密码保存在/etc/shadow中 |
|
3 |
用户的UID |
用户标识号 |
|
4 |
用户基本组GID |
组标识号 |
|
5 |
用户注释 |
用户的详细信息 |
|
6 |
用户家目录 |
用户家目录,root家目录是/root普通用户的家目录在/home/username,可自定义 |
|
7 |
用户登陆的shell |
用户登陆的linux使用的shell cat/etc/shells |
用户的密码文件
密码文件路径/etc/shadow
[root@majinhai ~]# head -1 /etc/shadow
root:$6$xX6yVcKAazqMGA77$.bKMJECopM3l4CvaS8::0:99999:7:::
密码文件由:分割成9段,每个字段具体含义如下:
|
序号 |
字段名称 |
注释说明 |
|
1 |
用户登录名 |
用户的账户名称 |
|
2 |
加密后的密码 |
用户密码,这是加密过的口令(未设置密码为!!) |
|
3 |
最后一次密码更改时间 |
从1970年到最近一次更改密码时间之间过了多少天 |
|
4 |
密码最少使用几天 |
密码最少使用几天才可以更改密码(0表示无限制) |
|
5 |
密码最长使用几天 |
密码使用多少天需要修改密码(默认99999永不过期) |
|
6 |
密码到期前警告期限 |
密码过期前多少天提醒用户更改密码(默认过期提前7天警告) |
|
7 |
密码到期后保持活动的天数 |
在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定 |
|
8 |
账户到期时间 |
从1970年起,账户在这个日期前可使用,到期后失效 |
|
9 |
标志 |
保留 |
密码格式$a$b$c
a:表示加密算法
b:表示salt 随机值
c:表示加密后的值
使用chage更改用户密码使用情况
-d 设置最近一次更改密码时间, 0下次登陆系统强制修改密码
-m 设置用户两次改变密码之间使用"最小天数"
-M 设置用户两次改变密码之间使用"最大天数"
-W 设置密码更改警告时间 将过期警告天数设为"警告天数"
-I 设置密码过期天数后, 密码为失效状态
-E 设置用户过期时间, 账户失效后无法登陆
-l 显示用户信息
练习
设置时间为2010年5月15日
[root@majinhai ~]# date -s 20100515
2010年 05月 15日 星期六 00:00:00 CST
新建一个普通用户admin
[root@majinhai ~]# useradd admin
设置密码为123456
[root@majinhai ~]# echo "123456" | passwd --stdin admin
更改用户 admin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
查看admin的密码信息
[root@majinhai ~]# tail -1 /etc/shadow
admin:$6$f11exkhB$8e. 9KZkJ2p9MZiFQLC9DCvS/K2U1:14743:0:99999:7:::
设置最近一次修改密码时间
[root@majinhai ~]# chage -d 2010-05-18 admin
[root@majinhai ~]# tail -1 /etc/shadow
admin:$6$f11exkhB$8e.MCZkzHDqrqrTeHSAJXUmlbPsiWIYnHXphdm2tjjoNFHvinyq0AMlRfAsyj9KZkJ2p9MZiFQLC9DCvS/K2U1:14747:0:99999:7:::
设置最短使用密码时间
[root@oldboy ~]# chage -m 1 admin
[root@oldboy ~]# tail -1 /etc/shadow
admin:$6$cpHfgk6q$BJp0n.gIT4T1pI7vKDeM9xeEsLBov4d36u/whLWxXHh6xjoJdQ.AOwERGS5b1seQ4BvkGUbERGFVN4JLkOWLo1:17757:1:99999:7:::
WARNING: Your password has expired. #警告:你的密码已过期
You must change your password now and login again! #您必须立即修改密码并重新登录
更改用户 admin 的密码 。
为 admin 更改 STRESS 密码。
(当前)UNIX 密码:
设置最长时间
[root@oldboy ~]# chage -M 20 admin
[root@oldboy ~]# tail -1 /etc/shadow
admin:$6$cpHfgk6q$BJp0n.gIT4T1pI7vKDeM9xeEsLBov4d36u/whLWxXHh6xjoJdQ.AOwERGS5b1seQ4BvkGUbERGFVN4JLkOWLo1:17757:1:20:7:::
设置密码警告时间
[root@oldboy ~]# chage -W 1 admin
[root@oldboy ~]# tail -1 /etc/shadow
admin:$6$cpHfgk6q$BJp0n.gIT4T1pI7vKDeM9xeEsLBov4d36u/whLWxXHh6xjoJdQ.AOwERGS5b1seQ4BvkGUbERGFVN4JLkOWLo1:17757:1:20:1:::
设置密码过期后使用时间
[root@oldboy ~]# chage -I 1 admin
[root@oldboy ~]# tail -1 /etc/shadow
admin:$6$cpHfgk6q$BJp0n.gIT4T1pI7vKDeM9xeEsLBov4d36u/whLWxXHh6xjoJdQ.AOwERGS5b1seQ4BvkGUbERGFVN4JLkOWLo1:17757:1:20:1:1::
设置用户过期时间
[root@oldboy ~]# chage -E 2018-8-13 admin
[root@oldboy ~]# tail -1 /etc/shadow
admin:$6$cpHfgk6q$BJp0n.gIT4T1pI7vKDeM9xeEsLBov4d36u/whLWxXHh6xjoJdQ.AOwERGS5b1seQ4BvkGUbERGFVN4JLkOWLo1:17757:1:20:1:1:17756:

显示用户信息
[root@oldboy ~]# chage -l admin
最近一次密码修改时间 :8月 14, 2018
密码过期时间 :9月 03, 2018
密码失效时间 :9月 04, 2018
帐户过期时间 :8月 13, 2018
两次改变密码之间相距的最小天数 :1
两次改变密码之间相距的最大天数 :20
在密码过期之前警告的天数 :1
Linux用户命令****
添加用户前需要确定
确定用户的默认组是否有特殊要求
确定用户是否允许登陆
确定用户的密码策略
确定用户的有效期
确定用户的uid是否有特殊要求
使用useradd命令新增账户,注意:adduser命令软链接指向useradd命令
'-u' 指定用户的UID,不能和现有ID冲突
'-g' 指定用户用户默认基本组
'-G' 指定用户附加组,用逗号隔开添加多个附加组
'-d' 指定用户家目录
'-c' 指定用户注释信息
'-M' 不建立家目录
'-s' 指定用户默认shell
'-r' 创建系统账户, 没有家目录
创建一个名为oldboy的用户,指定UID5001,基本组为students,附加组为sa,dba,注释信息为:2018 new student ,shell为bash
[root@oldboy ~]# groupadd students
[root@oldboy ~]# groupadd sa
[root@oldboy ~]# groupadd dba
[root@oldboy ~]# useradd -u 5001 -g students -G sa,dba -c "2018 new student" -d /home/oldboy -s /bin/bash oldboy
正在创建信箱文件: 文件已存在
//创建系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
[root@oldboy ~]# useradd -M -s /sbin/nologin mysql
[root@oldboy ~]# useradd -r -s /sbin/nologin dba
使用usermod命令修改用户组
'-u' 修改用户的UID
'-g' 修改用户所属的基本组GID
'-G' 修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组
'-a' 追加更多的附加组, 必须和-G使用: -aG 追加附加组
'-md' 家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置
'-d' 指定用户的家目录新位置
'-c' 修改用户的注释信息
'-s' 更改用户使用的shell
'-l' 更改用户登录名
'-L' 锁定用户
'-U' 解锁用户
1、更改oldboy的UID为6001,基本组为network,附加组为devops
[root@oldboy ~]# groupadd -g 5008 network
[root@oldboy ~]# guoupadd -g 5009 devops
[root@oldboy ~]# usermod -u 6001 -g network -a -G devops -c "2019 new student" -md /home/oldstudent -s bin/sh -l oldstudent oldboy
[root@oldboy ~]# tail -1 /etc/passwd
oldstudent:x:6001:5008:2019 new student:/home/oldstudent:bin/sh
[root@oldboy ~]# id oldstudent
uid=6001(oldstudent) gid=5008(network) 组=5008(network),1003(sa),1004(dba),5009(devops)
2、锁定用户
[root@oldboy ~]# echo "123" |passwd --stdin oldstudent
[root@oldboy ~]# usermod -L oldstudent
//无法正常登录系统
➜ ~ ssh oldstudent@10.0.0.200
oldstudent@10.0.0.200's password:
Permission denied, please try again.
3、解锁用户
[root@oldboy ~]# usermod -U oldstudent
//正常登录系统
4、使用finger命名查询用户信息以及登录信息
//安装finger命令
[root@oldboy ~]# finger oldstudent
Login: oldstudent Name: 2019 new student
Directory: /home/oldstudent Shell: bin/sh
Never logged in.
No mail.
No Plan.
- 使用finger修改用户信息
[root@oldboy ~]# chfn oldstudent
Changing finger information for oldstudent.
名称 [2019 new student]: hellow i am 2020 student
办公 []: 13369565161
办公电话 []: 6465135
住宅电话 []: 165465
Finger information changed.
验证修改过的用户信息
[root@oldboy ~]# finger oldstudent
Login: oldstudent Name: hellow i am 2020 student
Directory: /home/oldstudent Shell: bin/sh
Office: 13369565161, 646-5135 Home Phone: 165465
Never logged in.
No mail.
No Plan.
- 使用chsh命令更改用户登录shell
New shell [bin/sh]: /bin/bash
Shell changed.
[root@oldboy ~]# tail -1 /etc/passwd
oldstudent:x:6001:5008:hellow i am 2020 student,13369565161,6465135,165465:/home/oldstudent:/bin/bash
6、使用userdel删除用户
语法:userdel [-r] username
-r:同时删除用户家目录
用户创建的原理***
Linux创建用户默认会读取/etc/defaults/useradd的配置文件,如果当我指定参数时,使用指定参数,如果不指定参数,默认使用/etc/defaults/useradd中的配置。当我们使用useradd命令新建用户时,用户家目录下会产生相应的.bash_*文件,这些文件默认是从/etc/skel目录中复制。如需变更环境拷贝目录站点可修改:/etc/defaults/useradd的配置文件。
注意:如果执行useradd命令新建用户时,指定了参数,就会覆盖/etc/default/useradd默认的配置。
两个配置文件 第一个
[root@student ~]# egrep -v "^#|^$" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
第二个
[root@student ~]# cat /etc/default/useradd
GROUP=100
HOME=/home //把用户的家目录建在/home中。
INACTIVE=-1 //是否启用账号过期停权,-1表示不启用。
EXPIRE= //账号终止日期,不设置表示不启用。
SHELL=/bin/bash //新用户默认所有的shell类型。
SKEL=/etc/skel //配置新用户家目录的默认文件存放路径。
CREATE_MAIL_SPOOL=yes //创建mail文件。
//用户登录linux操作系统,环境变量被误删,出现-bash-4.2$,如何解决!
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ exit
[root@student ~]# su - oldboy
[oldboy@student ~]$
密码管理***
创建完账户后,默认是没有设置密码的,所以该账户是没有办法登陆操作系统。只有使用passwd设置好密码后方可登录系统。
使用passwd为用户创建密码时,为了安全起见,请尽量设置复杂一些。可以按照如下规则设置密码:
密码的设置
1.长度大于10位字符;
2.密码中包含大小写字母数字以及特殊字符 '!','@','$'等;
3.不规则性(不要出现自己名字、公司名字、自己电话、等等简单的密码)
需要注意:
1.普通用户只能更改自己的密码
2.管理员root能更改任何人密码
使用passwd命令修改用户密码
语法 : passwd [username]
// 'passwd' 后面不加username则是修改当前账户的密码。
//如果你登陆的是root账户,后面可以指定要修改密码的账户。
//只有root才可以修该其他账户的密码,普通账户只能修改自己的密码,普通用户没有修改其他用户的权限
//root用户登陆,修改root账户密码
[root@oldboy ~]# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
//root用户登陆,修改oldboy1账户密码
[root@oldboy ~]# passwd oldboy
更改用户 user11 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
//普通用户修改root密码
[oldstudent@oldboy ~]$ passwd root
passwd: Only root can specify a user name.
//无需用户交互修改密码, 将前者的输出结果, 成为后者的输入
[root@oldboy ~]# echo "123" | passwd --stdin oldstudent
Changing password for user oldstudent.
passwd: all authentication tokens updated successfully.
随机密码生成工具几种方式
//1.系统内置变量生成随机密码
[root@oldboy ~]# echo $RANDOM|md5sum|cut -c 1-10
d09fe9b1xs
//2.mkpasswd密码生成工具
//-l密码长度默认7位, -d数字, -c小写字母,-C大写字母
[root@oldboy ~]# yum install -y expect //需要安装扩展包
[root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5
yB7LpqIM31>ktpB
推荐密码保存工具客户端,支持windows、MacOS、手机、以及浏览器插件
Lastpass官方网站
组命名管理**
身份切换*****
sudo提升权限*****
Linux用户和组的概念的更多相关文章
- linux学习16 Linux用户和组管理命令演练和实战应用
一.上集回顾 1.bash globing,IO重定向及管道 glob:*,?,[],[^] IO重定向: >,>>, 2>,2>> &>,& ...
- linux用户和组 之 用户管理
一. linux 用户和组的基本介绍 1.linux下 有三种用户: 1. root: 权限最大的. 2. 系统用户: UID小于1000的.系统服务管理用户,一般是不允许登录系统的.(比如mysql ...
- 用户与安全 -(1)Linux用户及组管理
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登 ...
- Linux —用户和组
Linux 用户和组 1.用户和组的概念 用户的作用: Authentication:认证 Authorization:授权 Accouting:审计 用户存在的最终目的: 为了实现资源的分派 组的作 ...
- linux 用户和组操作
linux用户操作 查看登陆用户:whoami (结果最简洁) 或者who mom likes 或者who am i查看所有用户:cat /etc/passwd 添加:sudo adduser lil ...
- Linux 用户与组
在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux ...
- linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group 文件内容解释
与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码口令的加密保存等: /etc/passwd 和/etc/s ...
- linux用户、组管理及权限(一)
一.用户管理 1.为什么需要用户 1)计算机及网络资源的合理分配 2)可以控制用户访问系统的权限.3)身份认证 4) 进程 以某个用户的身份来运行 2.用户分类 用户的角色是通过UID(用户ID)来 ...
- linux用户及组管理
useradd 添加用户 passwd 修改用户密码 userdel 删除用户,默认不删除用户主目录和email,如果想删除可加 –r 参数 groupadd 添 ...
随机推荐
- TensorFlow图像预处理完整样例
参考书 <TensorFlow:实战Google深度学习框架>(第2版) 以下TensorFlow程序完成了从图像片段截取,到图像大小调整再到图像翻转及色彩调整的整个图像预处理过程. #! ...
- Python基础知识(1)
Python 3 1:print:输出信息 例子: ( 所有的标点符号都要是英文状态下输入,要不然会报错) print(“hello world”) 2:注意 : python 和 pyth ...
- springMVC validator验证的使用
http://blog.csdn.net/miketom155/article/details/45058195 1. 实现Validator接口,对数据进行校验 @RequestMapping(va ...
- 跟我一起玩Win32开发(6):创建右键菜单
快捷菜单,说得容易理解一点,就是右键菜单,当我们在某个区域内单击鼠标右键,会弹出一些菜单项.这种类型的菜单,是随处可见的,我们在桌面上右击一下,也会弹出一个菜单. 右键菜单的好处就是方便,它经常和我们 ...
- nginx memcache缓存
1 基本 在一个lnmp架构中,nginx遇到动态资源,会反向代理,把请求发送到后端的php-fpm服务,php-fpm从mysql里读取数据,生产网页,然后返回给client. 如果流量大,php- ...
- Mysql常用命令行大全(转)
第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...
- C51之数据范围
在C51中各数据类型的范围如下:如果宏常量大于65536,则要加UL后缀:乘法运算不能只将结果强制类型转换,而应在被乘数前加(unsigned long)强制转换. 2 因为RAM有限,所以运算量大的 ...
- ping localhost出现地址::1
近期发现本机的localhost不好用了. 症状: 自己本机部署服务器时,浏览器地址栏访问localhost:8080不通: 禁用网络连接,未果: 拔出网线,OK. cmd里ping之,返回结果如下: ...
- [ Luogu 3709 ] 大爷的字符串题
\(\\\) Description 原题题面太过混乱出题人语文凉凉 给出一个长为 \(n\) 的数列 \(A\) ,多次询问: 对于一个区间 \([L_i,R_i]\),把区间内的所有数最少划分成多 ...
- RPC之远程过程调用
一. 简介 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 1. 类比: 将计算机服 ...