Linux系列--用户、文件管理

一、概述

        Linux系统中超级用户是root,通过超级用户root可以创建其它的普通用户,Linux是一个支持多用户的操作系统。在实际使用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操作可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。

         在Linux系统中任何一个用户都对应:一个用户名 + 一个口令。用户使用系统时需要输入用户名和口令进行登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。
用户账号管理主要包括以下三方面:

  • 用户组的管理
  • 用户的管理
  • 为用户主目录之外的目录授权

二、用户组的管理 

一、用户组概念

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组的管理涉及用户组的添加、修改和删除。
用户组的添加、修改和删除实际上就是对/etc/group文件的更新。

二、查看用户组相关信息 

一、使用root账户查看当前系统的用户组有哪些

1、cat /etc/group

一行就是一个组,每一个用户组四部分组成:组名:密码标识:GID:该用户组中的用户列表。

二、查看当前登录的账户属于哪一组

1、groups

三、查看某个用户属于哪一组

1、groups root

三、用户组的添加 

一、语法

1、语法:groupadd [选项] 组名     (groupadd之间没有空格)

2、常用选项包括:

  • -g 可以通过这个选项来指定新用户组的标识号(GID)

3、栗子:

  • groupadd dev1
  • groupadd -g 101 dev2     其中101是dev2这个组的组号

二、用户组的修改

1、修改用户组组号

groupmod -g 102 dev2

2、修改用户组组名

# 将dev2修改为dev3
groupmod -n dev3 dev2

三、用户组的删除

# 删除用户组dev3
groupdel dev3

 三、用户的管理

一、添加用户

一、描述

添加用户就是在系统中创建一个新账号,然后为新账号分配用户组、主目录等资源。

二、语法:useradd [选项] 用户名

三、选项:

  • -d 指定新用户的主目录
  • -g 指定新用户属于哪个组(主组)
  • -G 可以给新用户添加附加组

四、栗子

1、useradd lisi

注意:当新建用户时,没有指定组,也没有指定工作目录时:

  • 默认的组名:和自己用户名一样
  • 默认的主目录:/home/用户名

2、useradd -d /usr/zhangsan zhangsan

3、useradd -d /usr/lisi -g dev -G test lisi

添加lisi用户,该用户的主目录/usr/lisi,所属主组dev(开发组),附加组test(测试组)

二、设置密码 

一、命令

passwd lisi

注意:增加用户就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

二、查看用户信息

通过查看/etc/passwd文件可以看到系统中有哪些用户,例如执行:cat /etc/passwd

密码会单独存储在/etc/shadow文件中,例如执行:cat /etc/shadow  这个密码是通过某种算法进行加密的。

三、切换用户 

一、切换指定用户

 su bjpowernode

二、切换root用户

su root

注意:从普通用户切换到高级用户需要密码。密码输入时不回显。切换到普通用户之后,该普通用户默认只对自己的“主目录”有权限,主目录之外的目录是没有权限的

四、修改用户 

修改用户就是对用户名,用户主目录,用户组等进行修改。

一、语法:usermod [选项] 用户名

二、选项

  • -d 指定新用户的主目录
  • -g 指定新用户属于哪个组(主组)
  • -G 可以给新用户添加附加组
  • -l 指定新的用户名(小写的)

三、栗子

1、usermod -l zhangsi zhangsan

2、# -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。
usermod -d /usr/zhangsan2 -m zhangsan

3、usermod -g dev1 zhangsan

4、usermod -L zhangsan

5、usermod -U zhangsan

五、删除用户 

一、命令

userdel -r zhangsan

-r 选项的作用是连同该用户主目录一块删除。

 四、为用户主目录之外的目录授权

一、创建目录

mkdir /java

二、给目录授权

# -R表示递归设置权限,该目录下所有的子目录以及子文件
chmod -R 775 /java

三、创建组

groupadd dev

四、把目录赋予组

chgrp -R dev /java

五、创建用户

useradd xiaoming

六、设置密码

passwd xiaoming

七、给用户添加附加组

usermod -G dev xiaoming

 五、文件权限

一、文件权限概述

Linux为了保证系统中每个文件的安全,引入了文件权限机制。针对于系统中的每一个文件Linux都可以提供精确的权限控制。它可以做到不同的用户同一个文件具有不同的操作权利。而通常这个权利包括以下3个:

  • 读的权利(Read,简称r)
  • 写的权利(Write,简称w)
  • 执行的权利(eXecute,简称x)

不同的用户包括3类用户:

  • 文件拥有者(User,简称U):该文件的创建人
  • 同组用户(Group,简称G):和创建人在同一组的用户
  • 其他组用户(Other,简称O):和创建人不在同一组的用户

这就是UGO模型。也就是说一个文件的权限包括三组:

  • 第一组U:我们可以给文件的创建者设置rwx权限。
  • 第二组G:我们可以给文件创建者的同组人员设置rwx权限。
  • 第三组O:我们可以给和文件创建者不在同一组的人员设置rwx权限。

二、查看文件权限 

一、采用“ls -l”命令可以查看文件的具体权限

二、组成:文件类型+文件的权限,共10个字符

1、第1个字符:代表文件的类型,- 代表文件,d代表目录。

其实Linux中文件的类型有7种:

  • - 代表普通文件
  • d 代表目录
  • l 代表链接(软链接:快捷方式)
  • b 块设备(硬盘,软盘等存储设备)
  • c 字符设备(通常以字节流的方式访问)
  • p 管道文件(主要用于进程间通讯)
  • s 套接字文件(主要用于网络通讯)

2、第2,3,4个字符:代表文件创建者对该文件的权限

3、第5,6,7个字符:代表与文件创建者在同一组的用户对该文件的权限。

4、第8,9,10 个字符:代表其他组人员对该文件的权限

5、文件权限的9个字符中包含四种字符,分别是:r、w、x、-

  • r:读权限
  • w:写权限
  • x:执行权限
  • -:无权限

三、基于UGO设置文件权限 

修改权限的命令是chmod,如果采用UGO方式修改权限的话,大致语法是这样的

1、chmod g+w Hello.java    给同组人员(g:代表同组人员)增加(+)写(w)权限

2、chmod g+w, o+w Hello.java    给同组人员(g:代表同组人员)增加(+)写(w)权限,给其他组成员增加写权限

3、chmod g-w, o-w Hello.java   去除同组人员写权限,去除其他组成员写权限

4、栗子:

将文件拥有者的写权限删除:

尝试使用vim命令编辑HelloWorld.java文件

再把写的权限加上

这个时候文件可以编辑了

四、基于421设置文件权限 

一、421采用数字来表示不同的权限

  • 4代表读,100,用二进制转换就是(2的2次方等于4)
  • 2代表写    010,用二进制转换就是(2的1次方等于2)
  • 1代表执行 001,用二进制转换就是(2的0次方等于1)

其实就是rwx,这三个字母,用二进制表示,1代表有对应权限,0代表没有对应权限,

例如:如果让一个用户读、写、执行权限都有的话,就是4 + 2 + 1 = 7(111,表示读、写、执都有),那么7这个数字就代表rwx的权限都具备。如果是5就表示4+1(101)的组合,表示有r和x的权限。如果是6就表示4+2(110)的组合,表示有r和w的权限。如果是0就表示无任何权限。

二、通过421这几个数字的不同组合来表示不同的权限,有以下几种种不同的组合:

  • 0:无权限
  • 1:x           001
  • 4:r           100
  • 5:r + x     101
  • 6:r + w   110
  • 7:r + w + x    111

也就是说一共6个数字:0 1 4 5 6 7

三、采用421方式设置权限

1、语法:chmod 三个数字 文件名

2、栗子:

chmod 755 HelloWorld.java

第一个数字7是文件拥有者的权限,第二个数字5是同组人员的权限,第三个数字5是其他组人员的权限。也就是说文件拥有者的权限是rwx,同组人员是r-x,其他组人员是:r-x

五、chown修改文件拥有者 

使用 chown 命令来修改指定文件或目录的拥有者和所属组

一、语法

chown [选项]... [所有者][:[所属组]] 文件...

其中,所有者所属组 可以是用户名或用户 ID、组名或组 ID,如果省略 :所属组,则默认为修改文件的所有者。

二、常用选项

  • -R:递归修改,包括子目录和文件。

三、栗子

1、将 /home/user/file.txt 文件的所有者修改为 root 用户

sudo chown root /home/user/file.txt

2、将 /home/user/dir/ 目录及其子目录和文件的所有者都修改为 userA 用户,所属组修改为 groupA 组,可以使用如下命令:

sudo chown -R userA:groupA /home/user/dir/

注意:在使用 chown 命令时,需要有足够的权限才能修改文件或目录的拥有者和所属组。一般需要使用 sudo 命令或使用具有相应权限的用户来执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

golang程序性能提升改进篇之文件的读写---第一篇

背景:接手的项目是golang开发的(本人初次接触golang)经常出现oom。这个程序是计算和io密集型,调用流量属于明显有波峰波谷,但是因为各种原因,当前无法快速通过serverless或者动态在高峰时段调整资源&#x…

持续学习的综述: 理论、方法与应用(三:泛化分析)

前文连接:持续学习的综述: 理论、方法与应用(一) 前文连接:持续学习的综述: 理论、方法与应用(二:理论基础) 泛化分析 目前持续学习的理论研究主要是在增量任务的训练集上进行的,假…

QT VTK 简单测试工程

目录 1 目录结构 2 文件源码 3 运行结果 4 报错及处理 使用编译好的VTK库进行测试 1 目录结构 2 文件源码 Pro文件 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. #…

STM32-寄存器点灯案例详解

本文以PA1引脚点亮LED灯为案例,解析了STM32寄存器操作的配置过程,以及从手册查询方法和寄存器配置步骤。 一、概念 1.十六进制和二进制之间相互转换关系 首先,需要了解十六进制和二进制之间的基本转换方法。十六进制是一种基数为16的数制&…

《战甲神兵》开发者报告:游戏崩溃问题80%发生在Intel可超频酷睿i9处理器上——酷睿i7 K系列CPU也表现出高崩溃率

在Intel持续面临第13代和第14代CPU崩溃问题的背景下,近日,《战甲神兵》(Warframe)的开发者们于7月9日披露了游戏崩溃的统计数据,并描述了诊断该问题的过程。根据开发团队的说法,一名未进行超频且使用全新PC的员工,即便…

FOC(笔记二)

接上篇文章:FOC算法(笔记一)_马鞍波和三角波调制合成-CSDN博客 前面已经对FOC的开环控制进行了介绍,下面对FOC的闭环控制进行介绍。 本次使用的电机参数如下图所示: 一、HALL传感器 1.1、霍尔传感器的角度、速度计算 因为本次使用的是120安…

2024安全行业大模型技术应用态势发展报告

以上是资料简介和目录,如需下载,请前往星球获取:https://t.zsxq.com/dH9bu

蒙特卡洛抽样方法

目录 认识该方法 认识该方法 不断抽样逐渐逼近 计算Π 打点,落在圆(1/4)的概率 抽样点越多,Π的值越准确 蒙特卡洛不在于精确,也不在于找到最准确的数值。如下图所示,Π就等于红

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

006-三台交换机堆叠

三台交换机堆叠 链形连接和环形连接 链形配置IRF与环形配置IRF的区别 三个交换机链形配置IRF与三个交换机环形配置IRF的主要区别体现在以下几个方面: 物理位置要求: 链形连接:对成员设备的物理位置要求相对较低,主要适用于成员…

鸿蒙语言基础类库:【@system.app (应用上下文)】

应用上下文 说明: 从API Version 7 开始,该接口不再维护,推荐使用新接口。本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import app from system.app;app.getInfo …

Scrapy框架实现数据采集的详细步骤

需求描述: 本项目目标是使用Scrapy框架从宁波大学经济学院网站(nbufe.edu.cn)爬取新闻或公告详情页的内容。具体需求如下: 1、通过遍历多个页面(共55页)构建翻页URL。 2、使用scrapy自带的xpath从每页的…

C++基础(二十):常见C++11的新特性

1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C 语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。语言的发展就像是练功打怪…

项目三层架构详情

三层架构 三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问&#xf…

UDP网络通信(发送端+接收端)实例 —— Python

简介 在网络通信编程中,用的最多的就是UDP和TCP通信了,原理这里就不分析了,网上介绍也很多,这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好,快速视网络情况,存在丢包 与嵌入…

Windows终端远程登陆Linux服务器(SSH+VScode)

W i n d o w s 终端远程登陆 L i n u x 服务器( S S H V S c o d e ) \huge{Windows终端远程登陆Linux服务器(SSHVScode)} Windows终端远程登陆Linux服务器(SSHVScode) 文章目录 写在前面通过SSH远程连接L…

Postman下载及使用说明

Postman使用说明 Postman是什么? ​ Postman是一款接口对接工具【接口测试工具】 接口(前端接口)是什么? ​ 前端发送的请求普遍被称为接口 ​ 通常有网页的uri参数格式json/key-value请求方式post/get响应请求的格式json 接…

@google/model-viewer 导入 改纹理 (http-serve)

导入模型 改纹理 效果图 <template><div><h1>鞋模型</h1><model-viewerstyle"width: 300px; height: 300px"id"my-replace-people"src"/imgApi/Astronaut.glb"auto-rotatecamera-controls></model-viewer>&…

网络分层及通信过程

网络分层体系 主流的理论体系中主要包含三种网络分层模型&#xff0c;即ISO的七层网络模型、TCP/IP的四层网络模型以及结合两种模型优点的五层网络模型&#xff0c;关于网络模型&#xff0c;主要起到对网络体系的一个整体认识&#xff0c;作为网络知识学习的开始&#xff0c;这…

【Python进阶】正则表达式、pymysql模块

目录 一、正则表达式的概述 1、基本介绍 2、快速使用re模块 二、正则的常见规则 1、匹配单个字符 2、原始字符串 3、匹配多个字符 4、匹配开头和结尾 5、匹配分组 三、Python与MySQL交互 1、pymysql模块的安装 2、pymysql的操作步骤 3、connection对象 4、cursor…