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个字段。

在这里插入图片描述

热门文章

暂无图片
编程学习 ·

C++数据结构第16课、线性表存储结构的抽象实现

课程目标 — 完成顺序存储结构线性表的抽象实现SeqList 设计要点 — 抽象类模板,存储空间的位置和大小由子类完成 — 实现顺序存储结构线性表的关键操作(增、删、查、等) — 提供数组操作符,方便快速获取元素SeqList.h #ifndef SEQLIST_H #define SEQLIST_H#include "…
暂无图片
编程学习 ·

UDP通信关于recvfrom问题

server端bind自己的IP后和client端通信,再recvfrom后,打印源地址和目的地址一致,那个大神帮忙解释一下,附上两端的代码
暂无图片
编程学习 ·

GPU与深度学习

GPU与深度学习一.为什么深度学习要使用CPU 深度学习:深度学习是模拟人脑神经系统而建立的数学网络模型,最大特点是需要大数据来训练,也就需要大量的并行的重复计算。 GPU:CPU的全称是Central Processing Unit,GPU的全称是Graphics Processing Unit。在命名上,这两种器件…
暂无图片
编程学习 ·

异步FIFO学习

这里写自定义目录标题一、概述二、异步FIFO的设计基础2.1 FIFO指针2.2 格雷码的使用2.2.1 二进制码存在的问题2.2.2 格雷码计数器2.3 空满条件的判断三、异步FIFO设计实现3.1 fifo13.2 fifomem3.3 sync_r2w3.4 sync_w2r3.5 rptr_empty3.6 wptr_full 一、概述 在大规模ASIC或FPG…
暂无图片
编程学习 ·

Windows安装Nacos1.1.4

Windows安装Nacos1.1.4下载GIT 地址: https://github.com/alibaba/nacos/tags解压测试PS:如图,说明启动成功,启动不成功会闪退,可以再次尝试或者检查端口占用或者关闭杀毒软件以管理员权限启动。然后打开浏览器访问http://localhost:8848/nacos/出现如下界面,说明成功,账…
暂无图片
编程学习 ·

qtdesigner-尝试连接数据库

参考教程:基于PyQt5的数据库可视化操作界面MainWindow:生成的一个类,下面有setupUi和retranslateUi两个方法。 接下来是登录操作。教程中用的是pymssql,我们用pyodbc,目测应该差不多。 import pyodbc cnxn = pyodbc.connect(DRIVER={SQL Server};SERVER=localhost;DATABASE…
暂无图片
编程学习 ·

单调栈解决Next Greater Number一类题

单调栈是什么? 单调栈使得每次新元素入栈后,栈内元素都保持有序(单调递增或者单调递减)。 单调递增栈:栈中数据出栈的序列为单调递增序列。 单调递减栈:栈中数据出栈的序列为单调递减序列。 注意:这里所说的递增递减是出栈的顺序,不是栈中数据的顺序。 单调栈的应用 通…
暂无图片
编程学习 ·

ECharts雷达图详细配置说明

// 指定图表的配置项和数据 var option = {backgroundColor: rgba(204,204,204,0.7 ),// 背景色,默认无背景 rgba(51,255,255,0.7)title: {text: 各教育阶段男女人数统计,link: https://www.xxx.com,target: blank,top: 5%,left: 3%,textStyle: {color: #fff,fontSize: 20,…
暂无图片
编程学习 ·

jar包用ftp协议去获取图片无法成功(IDEA可以成功)

jar包用ftp协议去获取图片无法成功(IDEA可以成功)同样的代码 在同一个服务器上运行,用idea去获取图片 可以成功,但是打成jar包去远程获取图片无法成功,拉回来的图片是0kb 同样的代码 在同一个服务器上运行,用idea去获取图片 可以成功,但是打成jar包去远程获取图片无法成…
暂无图片
编程学习 ·

MYSQL字符类型字段判断是否包含某个字符N种方法

方法一:使用LIKE关键字SELECT * FROM 表名 WHERE 字段名 LIKE "%字符%";方法二:使用INSTR函数SELECT * FROM 表名 WHERE INSTR(字段,字符);方法三:使用FIND_IN_SET函数SELECT * FROM 表名 WHERE FIND_IN_SET(字符, 字段名);方法四:使用LOCATE函数SELECT * FROM 表…
暂无图片
编程学习 ·

k8s(1)

k8s-集群搭建的三种方式,目前主流的搭建k8s集群的方式有kubeadm、minikube,二进制包。kubeadm 是一个工具,用于快速搭建kubernetes集群,目前应该是比较方便和推荐的,简单易用 kubeadm是Kubernetes 1.4开始新增的特性 kubeadm init 以及 kubeadm join 这两个命令可以快速创…
暂无图片
编程学习 ·

创新实践记录二

创新实践记录二 一、设置菜单的制作1.1菜单切换 制作设置菜单时,为防止之前的开始菜单影响显示和操作,可以先隐藏起来关于在开始菜单和设置菜单之间的切换,可以点击设置setActive控制显示隐藏。 MainMenu的Options按钮的点击事件OptionMenu的Back按钮的点击事件 这样就完成了…
暂无图片
编程学习 ·

spring-data-rest快速实现增删改查

spring-data-rest实现增删改查 - 项目相关依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/> </parent>…
暂无图片
编程学习 ·

json从立地到成佛

文章目录诞生于JavaScript,json的前世今生json含义json诞生搞清json兄弟姐妹,看清区别json VS xml小小翻译官,json的应用前端ajax+json异步传输:跨平台webservice:非关系数据库存储(Nosql)拒绝四不像,json语法有要求json语法规则json名称/值json对象json数组JavaScript对象…
暂无图片
编程学习 ·

js 的类

js的函数和类的区别,自以为就是调用方式的不同,并且函数中写入属性、方法,就必须实例化后,才能外部调用var Func = function(){var fu = this;var a=1, // 外部调用不到b=2;this.c=3;fu.test=function(){console.log(a)} }fun = new Func(); fun.c // 3 fun.test // 1funct…
暂无图片
编程学习 ·

ESP32使用MicroPython快速开发

Python基本语句一:Print语句:1. 输出字符串和数字>>>print("runoob") # 输出字符串runoob>>> print(100) # 输出数字100>>> str = runoob>>> print(str) # 输出变量runoob>>> L = [1,2,a] …
暂无图片
编程学习 ·

B 1065 单身狗(散列的应用)

题目思路 这题明明写的是200ms要求,但可以暴力破解,这是我万万没想到的- -; 散列记录夫妻,hash【id】=cpid; 再用一个散列记录到场; 之后暴力破解遍历0~100001; 测试点3:注意00000的输出,有格式要求,不能输出成0; AC代码 #include<bits/stdc++.h> using names…
暂无图片
编程学习 ·

微信测试公众号 接口配置信息

1:首先要先注册一个测试的公众号 1:这样就可以得到自己的appid 和 appsecret 2:接口配置信息 可以看到参数 (测试公众号只有url 和 token) 1:url 是开发者用来接收微信消息和事件 的接口URL。(必须以http://开头,目前支持80端口) 2: Token:可由开发者可以任意填写,用作…
暂无图片
编程学习 ·

是个前端都应该了解的web安全知识(附一些较新的防范方法)

前言对于很多刚开始工作的前端而言,web安全似乎是一个说不清道不明的东西。关于web安全,认真学习总结一下,其实就会发现它不难。本文通过面试提问的形式来一一进行总结,希望对于各位小伙伴理解web安全有所帮助。1.前端有哪些攻击方式?目前常见的web攻击方式主要分为:XSS攻…