用户管理--借鉴技术大牛ken
本节内容
useradd
userdel
usermod
groupadd
groupdel
用户管理
为什么需要有用户?
1. linux是一个多用户系统
2. 权限管理(权限最小化)
用户:存在的目录是为了对系统中的资源做归属
密码:存在的目的是为了对用户做身份认证
用户和用户组
用户组,在用户组中可以包含一个或者多个用户
方便对多个用户进行授权操作
用户管理相关文件
/etc/passwd:用户基本信息
/etc/shadow:用户密码信息、过期时间等
/etc/group:用户组信息
/etc/gshadow:用户组密码
/etc/default/useradd:创建用户的默认配置信息
/etc/skel/:用户家目录模板
/etc/login.defs:全局用户设定信息
/etc/passwd: 每行是一个用户,用来记录用户的基本信息,每行的格式
account:password:UID:GID:GECOS:directory:shell
accout:用户名
password:用户密码,密码位置默认是x
UID:用户身份id,用来唯一的标识一个用户
GID:用户组id,用来在系统中唯一的标识一个用户组(这里指的是其基本组的组ID)
GECOS:用户描述信息,可以空白,也可以随意写(useradd -c )
directory:用户家目录
shell:用户所使用的shell类型
/bin/bash-->可以登录系统
/sbin/nologin-->该用户一定无法登录系统
比如
root : x : 0 : 0 : newuser : /root : /bin/bash
用户名 密 码 用户id 用户所在组的id 描述信息 家目录 shell类型
/etc/group
用户组信息
linux,用户一定是属于一个组的
在linux中,创建用户的时候,
会自动创建一个组,组名和组id都和所创建的用户相同
而且,该用户会自动加入到这个组中
c:x:1007:
组成:groupname:password:GID: [user1, user2.....]
groupname:组名
password:组密码
GID:组id
[user1, user2.....]:改组中的用户列表
概念
用户的基本组(主组):当前用户具有哪个组的权限
用户的附加组:用户额外属于的组
zx
主组:gp02
附加组:gp01、gp03
/etc/default/useradd
Linux中的用户类别
可以登录系统的用户
管理员用户:uid为0的用户
普通用户:就是可以登录系统,但是没有管理员权限的用户
不能登录系统的用户:
系统用户:用来运行一个程序,而不是用来登录系统
各类用户的id
管理员用户:0
系统用户:1-999
普通用户:1000-6000
系统用户的特点
1. 因为不需要登录,所以shell类型通常为/sbin/nologin
2. 系统用户没有家目录
3. 系统用户id通常是小于1000
Useradd命令
useradd [options] username
options:
-d, --home HOME_DIR:指定用户家目录
-c, --comment COMMENT:用户说明信息
-e, --expiredate EXPIRE_DATE:指的账号的过期时间,时间格式 YYYY-MM-DD
-g, --gid GROUP:指的用户的基本组的组id
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指的用户的附加组列表
-u,--uid UID:指的用户的uid
-m, --create-home:创建用户的时候自动创建用户家目录(默认就已经使用)
-M:不自动创建用户家目录
-o, --non-unique:通常和-u一起使用,用来让两个用使用相同的uid
-r, --system:创建一个系统用户
-s, --shell SHELL:在创建用户的时候,指定用户的shell类型
(/bin/bash/,/sbin/nlogin)
创建一个系统用户
# useradd -s /sbin/nologin -M -r t17
passwd命令
passwd [[options] username]
(如果不指定用户名,那么就是修改当前用户的密码)
options:
--stdin
-l:锁定用户
-u:解锁用户
-d:删除用户密码
-e:让用户密码过期
echo “ 123“ | passwd --stdin ken
表示给ken用户设置密码123 (ken用户必须存在)
设置密码的原则
1. 长度要够
2. 密码复杂度(数字+字母+特殊符号)
Userdel命令
删除用户 userdel
userdel [options] username
options:
-r:在删除用户的时候,连同用户数据一并删除
创建用户组 groupadd
groupadd [options] groupname
options:
-g GID:
-o:
删除用户组 groupdel
groupdel groupname
Shadow文件详解
zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
第一段:用户名:
第二段:加密后的密码
第三段:上次修改密码举例元年经过的天数(如果该字段空,意味着该用户密码被禁用)
第四段:密码最短使用时间(0表示不限制)
第五段:密码最长有效期(99999表示不限制)(如果第5的值小于第四段,那么用户无法修改自己的密码)
第六段:密码到期前几天开始发送告警,提示密码即将过去,请立即修改
第七段:非活动期间,密码到期后的宽限时间(登录系统的时候必须先修改密码,才能登录)
第八段:密码过期时间(也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)
第九段:保留字段
Usermod命令
usermod [options] username
options
-g, --gid GROUP: 更 新 使 用 者 新 的 起 始 登 入 群 组 。 群 组 名 须 已 存 在 。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 定 义 使 用 者 为 一 堆 groups 的 成 员 。 每 个 群 组 使 用 ,区 格 开 来
-u, --uid UID: 用 者 ID 值 。必 须 为 唯 一 的 ID 值
-s, --shell SHELL: 指 定 新 登 入 shell 。 如 此 栏 留 白 , 系 统 将 选 用 系 统 预 设 shell 。
-L, --lock: 锁定用户的密码
-U : 解锁用户的密码
-l, --login NEW_LOGIN : 变 更 使 用 者 login 时 的 名 称 为 login_name 。
-e, --expiredate EXPIRE_DATE:加 上 使 用 者 帐 号 停 止 日 期 。 日 期 格 式 为 MM/DD/YY.
-d, --home HOME_DIR:更 新 使 用 者 新 的 登 入 目 录 。
-m, --move-home:移动用户家目录至新的位置
练习
1. 创建用户java,uid 1000 基本组是gp001 附加组 gp002 gp003
useradd -u 1000 -g gp001 -G gp002,gp003 java
2. 修改用户java,
将名称修改为python,
将uid修改为 2000,
修改主组是cats,
shell类型改为 /sbin/nologin
让该用户在10月1号到期
#######################
id命令
作用:用来查看指定的用户的信息(或判断用户是否存在)
格式:id [-u|-g|-G] username
选项
-u:仅仅显示用户uid
-g:仅仅显示用户gid
-G:仅仅显示用户全部组id
su命令(switch user)
作用:进行切换用户
格式:su - 目标用户
su命令和su -命令最大的本质区别就是:
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成
root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有
何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令
用户管理--借鉴技术大牛ken的更多相关文章
- 用户及用户组管理(week1_day4)--技术流ken
本节内容 useradd userdel usermod groupadd groupdel 用户管理 为什么需要有用户? 1. linux是一个多用户系统 2. 权限管理(权限最小化) 用户:存在的 ...
- Linux权限管理(week1_day5)--技术流ken
权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3种身 ...
- rpm和yum软件管理(week2_day5)--技术流ken
rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package ...
- 分布式系统监视zabbix讲解三之用户和用户组--技术流ken
概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...
- Linux磁盘管理及LVM讲解(week2_day2)--技术流ken
硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上,价 ...
- zabbix实现QQ邮件报警通知--技术流ken
前言 前几天搜了下网上使用zabbix邮件报警通知的文章,大多数还是使用mailx的方法,过程配置起来比较冗余繁琐,这几天想着把自己平时用到的qq邮件报警的方法分享出来供大家参考,以此减少不必要的步骤 ...
- Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken
前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+A ...
- Jenkins凭证及任务演示-pipeline(二)--技术流ken
Jenkins前言 在上一篇博客<Jenkins持续集成介绍及插件安装版本更新演示(一)--技术流ken>中已经详细介绍了jenkins的插件安装以版本更新等,本篇博客将再深入探究jenk ...
随机推荐
- mybatis源码解析7---MappedStatement初始化过程
上一篇我们了解到了MappedStatement类就是mapper.xml中的一个sql语句,而Configuration初始化的时候会加载所有的mapper接口类,而本篇再分析下是如何将mapper ...
- JS神经网络deeplearn.js:浏览器端机器智能框架
JS神经网络deeplearn.js:浏览器端机器智能框架 通过 deeplearn.js,可以实现在浏览器中训练神经网络模型,也可在推理阶段运行预训练模型. deeplearn.js 以 TypeS ...
- PHP 取302跳转后真实 URL 的两种方法
1 . 第一种,CURL形式[感觉处理略慢,代码偏多] $url = '将跳转的URL'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url) ...
- php_study progress(1)
PHP是一种语法简单.功能强大的网络编程语言.在语法格式上,PHP借鉴了广泛流行的C.Java和Perl等编程语言的特点,非常类似于C语言,但比C语言更简单,易学和易用,因此特别适合于学习过C语言,有 ...
- 面试必问之JVM篇
前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干 ...
- eclipse 的版本及下载地址
eclipse 的各个版本号: 版本号 代号 代号名 发布日期 Eclipse 3.1 IO 木卫一,伊奥 2005 Eclipse 3.2 Callisto 木卫四,卡里斯托 2006 Eclips ...
- Opencv改变图像亮度和对比度以及优化
https://blog.csdn.net/u013139259/article/details/52145377 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- Linux查看机器和硬盘的SN
查看硬件RAID中某块硬盘SN # sas 口: [root@ ~]$ smartctl -a /dev/sda -d megaraid,n *** Serial number: 6RJ974SR * ...
- Golang获取int数组里的最大值和下标
package main import ( "fmt" ) func main() { //获取一个数组里最大值,并且拿到下标 //声明一个数组5个元素 ], , , ,} //假 ...
- Linux 添加网卡
Linux 添加网卡 1.写入网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth1 # 网卡名字 DEVICE=eth1 # 网卡类型 TYPE=Eth ...