Linux学习日记 7.1 (用户)

MOOC链接

一。什么是用户和用户组

1.用户

UID (User‘s ID)是识别用户权限的标识,用户登陆系统所处的角色是通过UID来实现的,而非用户名,因此,每个用户的UID必须是唯一的。

Linux中的用户分成三类
※ 系统管理员用户:拥有整个系统所有的权限,只能有一个,即根用户root,根用户UID固定为0

※ 虚拟用户:不具有登陆系统的能力,但是系统运行中不可或缺的,例如bin、daemon、ftp、mail等,这些用户一般给系统中的程序使用。1~499的UID预留给虚拟用户使用。

※普通用户:也是最常用的用户,可以登陆系统,对系统只有有限的权限,在centos系统中,普通用户的UID从500开始

在这里插入图片描述

2.用户组

用户组:即具有相同特征的用户的一个集合体。

Linux通过GID(Group’s ID)来识别用户组,系统中的每个用户组都有一个独一无二的GID。


用户组和用户之间是多对多的关系,一个用户可以从属于多个用户组,一个用户组也可以包含多个用户。

一个用户虽然可以从属于多个用户组,但是它的主用户组只能有一个

二。查看用户

1.id [用户名]

id命令侧重用户、用户所属用户组、UID和GID的查看。

在这里插入图片描述
如上图,mag01用户的UID为10002,主用户组为mag01,GID为10005,
除了主用户组外,mag01还从属于用户组dev01和dev02,GID分别为10013和10014。

2.finger [用户名]

finger命令侧重用户信息的查询,比如用户名、家目录、SHELL类型等。

三。切换用户身份

su [用户名](switch user)

建议
在su后附带-l选项,表示在切换的时候,不仅切换了用户身份,同时也切换了用户的Shell运行环境。(-l也可简化为-)

例如 su -l root等同于su - root
在这里插入图片描述

四。创建、修改和删除用户

1.创建用户 useradd

useradd [用户名] 创建用户
passwd [用户名] 设置密码

在这里插入图片描述
注意:只有根目录才可以创建用户,只有根目录才能设置其他用户的密码,普通用户只能设置自己的密码。

除了用户名和密码外,用户的其他属性都由系统指定好了。新建用户的家目录将位于/home目录下,目录名和用户名同名,在centos中第一个新建用户的默认UID是500,接下来的新建用户UID默认是上一个新建用户UID加一,系统将为用户创建一个独立的用户组,作为其主用户组。用户组与用户同名,除主用户组外,用户一般不属于其他用户组,新建用户组GID默认是上一个新建用户组GID加一 。

在这里插入图片描述


选项 说明
-c 指定用户备注
-u 指定与用户UID
-d 指定用户家目录
-g 指定主用户组
-G 指定除主用户组外所从属的用户组

在这里插入图片描述
指定用户信息,命令如下

useradd -c Linux服务器管理慕课用户01 -u 601 -d/tmp/stu01 -g moocers -G stu,s_group01 -s bin/tcsh nbstu01

注意事项
※ 用-u选项为用户指定UID时,必须确保UID未曾被别人使用
※ 用 -g或-G指定用户组时,必须确保这些用户组确实存在


2.修改用户 usermod

usermod 的选项几乎与 useradd 一样。
-l 选项可以修改用户名

在这里插入图片描述

注意
在用户登陆系统时,是无法修改用户名和用户UID的。


3.删除用户 userdel

userdel [用户名]

在这里插入图片描述

用户虽然删除了,但用户的家目录仍然存在,可以在确认其中没有重要文件后,手动删除该目录。当然也可以在userdel命令后面加-r选项,使命令在删除命令的同时,将用户家目录也一并删除。(尽量不要使用-r选项,很容易误删用户文件)

正在登陆系统的用户时无法删除的。

五。创建、修改和删除用户组

1.创建用户组 groupadd

groupadd [用户组名]

只有根用户可以创建用户组。

2.修改用户组 groupmod

groupmod -g 8888 -n moocers nbmoocers
//将nmmoocers的gid修改为8888
//用户组名改为moocers

强调:不要随意修改用户组GID,修改组的GID很容易造成系统混乱。

3.删除用户组 groupdel

groupdel [用户组名]

只要有一个用户将该用户组作为其主用户组的话,这个用户组就无法删除。

六。让渡用户权限

sudo命令 无需根用户密码也能分享部分根用户权限

一开始系统默认仅有root可以执行sudo命令,我们需要通过修改/etc/sudoers文件来让别的用户能够执行sudo命令。

vi /etc/sudoers打开/etc/sudoers文件,在文件中找到下图这行:
在这里插入图片描述
其中,第一字段表示可使用sudo命令的用户;第二字段等号前面表示登录用户的来源主机名,等号后面是可让渡权限的用户列表;第三字段是用户可使用的命令列表。

此行表示:root用户可以在任意主机地址登录,并且以任意用户身份执行所有的命令。

在此行下面添加一行:

nboocer 	ALL=(ALL) 		ALL
//nboccer用户可以在任意主机地址登录,并且以任意用户身份执行所有的命令。

保存sudoers文件,退出vim。

sudo -u root passwd stu
//以根用户身份执行passwd命令来修改stu用户的密码

修改之后需要输入nboocer自身的密码,而不是root密码。


用sudo命令以root身份执行命令的时候,可以省略-u选项,命令时默认转换为root身份,就相当于给了用户等同于root的权限。


若将sudoers文件处添加下行

stu 	mooc=(root)		/sbin/shtdown -h 5
//stu从本主机登录时,可以用root用户身份,执行/sbin/shtdown -h 5命令
//注意命令需要以绝对路径方式指定

stu 	mooc=(root)		NOPASSWD:/sbin/shtdown -h 5
//功能与上一行一致,不需要输入密码验证

//%group_p	mooc=(root)		/sbin/shtdown -h 5
//从属于group_p用户组的用户…………

七。用户配置文件

Linux用户管理中涉及的四个配置文件,可以分为两组。
在这里插入图片描述
第一组文件(上)中存放着用户相关配置文件
第二组文件(下)中存放着用户组相关配置数据

1. /etc/passwd
是系统用户的花名册,系统所有的用户都在文件中有记录。

用vim打开/etc/passwd,每一行都表示一个用户的信息,一行有7个字段,每个字段用“:”分隔。

在这里插入图片描述
2. /etc/shadow

/etc/shadow是/etc/passwd的影子文件,内容包括用户及被加密的密码以及其他passwd不能包括的信息,比如用户的有效期等,这个文件只有root权限可以读取和操作。

/etc/shadow文件的内容包括9个字段,每个字段之间用“:”分隔。

在这里插入图片描述
在这里插入图片描述
3. /etc/group

系统中用户组的花名册

/etc/group 的内容有4个字段
在这里插入图片描述

4. /etc/gshadow

是/etc/group的影子文件,内容拥有4个字段。

在这里插入图片描述

热门文章

暂无图片
编程学习 ·

kubectl源码分析之config delete-context

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373…
暂无图片
编程学习 ·

Scanner对象

Scanner对象 作为输入使用,主要有两种接收键盘输入字符的方法,next()方法和nextLine()方法,下面介绍一下 import java.util.Scanner;public class demo01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输…
暂无图片
编程学习 ·

linux安装nginx及https化

Linux安装nginx安装操作系统:centos 安装前先确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件yum install gcc-c++ yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel上传nginx安装包nginx-1.13.0.tar.gz至linux指定位置(/usr/loc…
暂无图片
编程学习 ·

Java语言基础之基础语法&流程控制语句&数组

Java语言概述 Java语言是一款面向对象的高级语言,是由Sun Microsystems公司(现已被oracle公司收购)。由James Gosling和同事们共同研发,并在1995年正式推出,据oracle官方数据指数,目前全球已有上亿的系统是使用Java开发的。Java是一门面向对象编程语言,不仅吸收了C++语言…
暂无图片
编程学习 ·

前端项目如何管理

前端项目的管理分为两个维度:项目内的管理与多项目之间的管理。1. 项目内的管理在一个项目内,当有多个开发者一起协作开发时,或者功能越来越多、项目越来越庞大时,保证项目井然有序的进行是相当重要的。一般会从下面几点来考证一个项目是否管理得很好:可扩展性:能够很方便…
暂无图片
编程学习 ·

程序员翻车时的 30 种常见反应!

**软件开发工作充满了挑战性。人无完人,对于程序员来说,写出有 bug 的代码是在所难免的。有些人很淡定,也有一些人会感到生气、沮丧、不安或气馁。在修复 bug 的过程中我们都经历了什么?这个值得我们一探究竟。 本文列出了程序员在修复 bug 时可能会说的一些话或者想法。我…
暂无图片
编程学习 ·

Linux 通过关键字查询文档内容

命令grep keyword test.log -C500 --colorgrep -C500 keyword test.log --color说明:第一个命令和第二个命令都可以keyword:是要查询的关键字,关键字可以不用引号引起来test.log:是文件名称,即要查询的文件-C500:显示的行数,显示500行,可以没有--color:颜色,给关键字…
暂无图片
编程学习 ·

zabbix(三)对服务的监控

文章目录zabbix(三)对服务的监控httpd/nginxmysql zabbix(三)对服务的监控 httpd/nginx 1>给 server2 添加 httpd 监控 但是这个 http 监控的监控项只有一个,下面在 server3 上自定义 nginx 的监控#源码编译 nginx,关闭 debug,添加监控模块 [root@server3 nginx-1.15.8]#./c…
暂无图片
编程学习 ·

通讯录管理系统一般包括通讯录结点信息的插入、查询、删除、更新以及通信录信息的输出等功能。而通讯录的信息一般包括编号、姓名、性别、电话以及地址等项。本题主要考查用链式结构来实现通讯录管理系统(链表)

通讯录管理 题目要求: 通讯录管理系统一般包括通讯录结点信息的插入、查询、删除、更新以及通信录信息的输出等功能。而通讯录的信息一般包括编号、姓名、性别、电话以及地址等项。本题主要考查用链式结构来实现通讯录管理系统(链表的操作)。 需求分析: 将通讯录设置为6个模…
暂无图片
编程学习 ·

2020.7.1总结

前端知识: API: 判断是否为空: $.common.isEmpty() modal框: $.common.alertError() 弹层组件:layer layer.open({ title:false, type:1, closeBth:true, shadeClose:true,//阴影区域关闭 area:[‘auto’,‘atuo’]//宽,高 }) 以下是一些参数截图:layer组件:web弹层组…
暂无图片
编程学习 ·

c# 日期的常见用法

//获取当前时间queryBean.EndTime = DateTime.Now;获取当前时间30天之前的时间 queryBean.StartTime = DateTime.Now.AddDays(-30);
暂无图片
编程学习 ·

request.getParameter()与request.getSession().getAttribute类型比较

以下内容作为个人学习记录,如果给原作者造成不便,请私信,会立即删除。 区别: getParameter是获取表单提交的数据,或者post和get拼接提交的。获得的类型是String类型的。 request.getSession().getAttribute是获取session中的数据,和session.setAttribute搭配使用。获取的…
暂无图片
编程学习 ·

自学python第三天

if 、while、for的使用 1、if条件 1.1、简单if if 条件:条件成⽴立执⾏行行的代码1条件成⽴立执⾏行行的代码2 ......例如 if True:print(条件成⽴立执⾏行行的代码1)print(条件成⽴立执⾏行行的代码2) # 下⽅方的代码没有缩进到if语句句块,所以和if条件⽆无关 print(我是⽆无…
暂无图片
编程学习 ·

适配国内主流消防主机的CAN光纤转换器

适配国内主流消防主机的CAN光纤转换器 1、适配国内主流消防主机 产品已配套海湾、利达、北大青鸟、西门子、飞繁、依爱等公司消防报警主机大 量长期使用。 不管哪家的消防主机,不管消防主机CAN通道的通讯波特率是什么, 不管消防主机CAN通道是非标CAN、标准CAN还是遵循高层协议…
暂无图片
编程学习 ·

STL常用函数底层原理

sort 在数据量大时采用快排,递归将数据分段,快速排序对“几近排序”的数据效率会下降;当分段后数据长度小于16时,为避免递归带来过大的额外负荷,采用插入排序,插入排序对“几近排序”的数据表现更好;当递归层次过深,采用堆排序,因为快排时间最差是O(N^2),堆排时间最差…
暂无图片
编程学习 ·

高校合同管理方法风险与递信智能合同信息化解决方案

一、引言 在现代社会,高等教育学校除发挥原有的教学和研究的社会功能之外,越来越多地参与市场经济之中,发挥其支撑社会经济发展的重要作用。在这一过程中,高校实现内部管理和处理外部关系多需要依靠确定化的法律文本,从而高校的社会活动涉及众多的合同,以此来确定签约主体…
暂无图片
编程学习 ·

java基础day4

idea下载安装破解? 中国人思考出要说的(源代码),通过嘴(jdk,开发工具包)生成中文(class文件),日本翻译(jvm)通过 查字典(类库,jre)进行翻译给其它日本人(机器,二进制)。 keymap设置快捷键,改了alt+/用来提示,默认是别的,默认会和输入法重复。 editor用来设…
暂无图片
编程学习 ·

Java 推送消息到企业邮箱的机器人。

@RequestMapping("/sendPostToRoot")@ResponseBodypublic String qwRoot() {//推送消息到企业邮箱的机器人。JSONObject j=new JSONObject();j.put("msgtype", "text");JSONObject j1=new JSONObject();j1.put("content","本地项…