【Linux系统编程】系统用户和权限的操作

目录

一,Linux的用户

1,用户之间的切换

2,超级用户权限的使用

二,Linux的文件权限

1,文件信息的介绍

2,文件权限的修改

3,用户的修改

3-1,拥有者的更改

3-2,所属组的更改

3-3,同时修改拥有者和所属组

4,权限掩码

5,相同系统不同用户文件的互相使用


一,Linux的用户

1,用户之间的切换

        用户之间的切换常用su命令,su [用户]将会把当前用户切换成[用户],直接使用su直接默认切换成root用户。

su或su -        //切换成root用户

su [用户名]        //切换当前下的用户

注意:我们都知道,在Linux的用户类型中分为超级用户root和普通用户,当root超级用户切换成普通用户时,不用得到系统的认证,即不用输入要切换用户的密码;当普通用户切换成另一个用户时,需要输入对方用户的密码。

补:在用户之间的切换操作中,还有exit和logout退出用户指令,exit命令用于退出目前的shell,返回上一次登入的shell,当退出到最后一个shell时就相当于直接退出系统了。logout命令用于退出当前用户登录的shell,但不能退出中间切换的shell,即只能退出最顶层的shell,且它不是用来关闭系统或重启系统的命令。之前的文章就说过,每登入一个用户系统都会给予一个类似于shell的工具,这两个指令可以说是用来退出用户的操作,不同的是logout 命令只能用来退出当前 shell,并不能直接用来关闭系统或重启系统。 而 exit 命令除了能够退出当前 shell,还可以用来关闭系统或重启系统。exit 命令也可以退出当前 shell,但是在某些 shell 中, exit 命令会关闭该 shell,而 logout 命令则不会。

exit和logout的正确使用

logout的错误使用

2,超级用户权限的使用

        在所有用户中,root权限是最高的,可以“为所欲为”,而普通用户的权限有一定的限制。当普通用户想要使用root用户权限时,只需在命令前加sudo。如下:

sudo touch file.txt

        接下来就会让我们输入我们所在用户下的密码,之后将会在root中创建文件,因为我们使用的是root权限,相当于root本身在操作。

        这里要注意的是大部分系统刚开始时直接使用sudo指令是不会成功的,sudo命令可不是随意就可以使用root操作,要想使用root操作,必须先使用root权限将指定用户加入到root用户下的配置文件/etc/sudoers下才可以。没有在该配置文件中的用户是不能使用sudo指令的。


二,Linux的文件权限

1,文件信息的介绍

        一个文件或目录的使用共有三个角色:拥有者,所属组,other(其它人)。拥有者就是拥有文件的用户。所属组就是与该文件有所关联的一个组的用户,other也就是“陌生人”,既不是拥有者也不是所属组。

        当我们查看详细的文件信息时,第一个字符代表文件类型,Linux的文件类型不跟Windows一样,通过后缀名来区分文件类型,在Linux中,文件的后缀名在系统方面是无意义的,但是这只限于系统方面,在其他方面都必须的,系统对待文件后缀的态度就是虽然Linux不通过它来识别文件类型,但是我们依旧推荐使用,因为系统下的工具和人工都需要。 具体的细节和文件的使用在今后遇到中笔者会再详细讲解,这里我们先了解即可。

     '-':代表普通文件,如文本文件,源代码文件,图片文件,视频文件,库文件,可执行文件等。

     'd':代表目录文件。

     'b':代表块设备文件。

     'c':代表字符设备文件 —— 大多时候就是一个键盘或显示器,用来直接显示数据。

     'i':代表链接文件 —— 像Windos下的快捷方式。

     'p':代表管道文件。

     's':代表socket文件。

        接下来后面每三个字符代表文件使用者的权限,前三个字符代表拥有者的使用权限,中间三个字符代表所属组的使用权限,最后三个字符代表other的使用权限。其中,在前三个字符中, "rwx" 是固定的,分别代表的权限为可读,可写,可执行,若是其中有 '-' 字符代表没有此项的权限。具体的文件信息用 ll 指令或 ls -l 查看后如下图:

        指令框架的信息如下:

        我们通常也可以直接用指令file来查看文件信息,此指令不为重点,我们了解即可。如下:

2,文件权限的修改

        修改文件权限的指令是chmod,而chmod的用法较为灵活,在讲解之前需要说明只有root用户和文件的拥有者才可以修改文件的权限。还有,修改文件权限时,我们需要指名修改哪个人的权限,其中,修改拥有者(user)的文件权限简写为u,修改所属组(group)的文件权限简写为g,修改other(其他人)的文件权限简写为o。

方法一:用用户的简写来修改文件的权限,'+' 表示增加文件权限,'-' 表示去掉文件权限。具体使用和解说如下图:

方法二:文件的每三个字符对应一个人的权限,我们可以二进制的形式表示,1代表有此权限,0代表没有此权限,即一个人的权限最大数为111,即7,最小为0。用十进制表示,从左到右权限所代表的人分别自动为拥有者,所属组,other。具体使用和解说如下:

        在权限的设置中,如果没有 'r'(读权限) 将无法进行cat,ls之类的查看操作;如果没有 'w'(写权限) 将无法进行nano、vim之类的写入操作和文件的增添删移操作(这里要注意的是删除操作,后面会讲解在没有此权限下普通用户仍可进行删除操作,甚至可以删除root用户创建的文件);如果没有 'x'(可执行操作) 将无法使用cd进入此目录的操作和使用文件的功能。这里要注意的是可执行权限,要想执行一个文件此文件必须是可执行文件,然后再有权限 'x'。

         细心的人已经发现以上的问题,拥有者和所属组是一个用户的情况下系统会如何确认呢?这时,系统会按照“拥有者——所属组”从左到右的顺序来查看,一旦确定是其中的一个时系统就不会继续往后面查看了,直接就寻找对应人的权限,如果既不是拥有者也不是所属组,直接为other。

        最后要说明的是这些权限都是给普通用户设定的,root超级用户直接无视所有权限,可认为在Linux中,root用户是“无敌的”,忽视一切有关权限的操作。

3,用户的修改
3-1,拥有者的更改

        chown指令用来修改文件的拥有者,可理解为直接将文件给予某个用户,但要注意的是用此指令必须是root用户或拥有root权限,即使用sudo指令或使用root账号才能完成。

使用方法:chown [要更改的使用者名称] [文件或目录]

3-2,所属组的更改

        chgrp指令用来修改文件或目录的所属组,使用方法和权限都跟chown一样,有些人可能没有使用root权限,但此文件或目录的拥有者为当前用户,此时,将所属组修改为当前用户也是可以的,但是这只是一个没有意义的特殊情况,其它情况均不可被修改,所有我们可直接认为只有root权限才可以修改。

使用方法:chgrp [要更改的所属组名称] [文件或目录]

3-3,同时修改拥有者和所属组

        chown指令不光可以修改拥有者,也可同时修改拥有者和所属组,使用权限也是root权限。

使用方法:chown [拥有者名称]:[所属组名称] [文件或目录]

        这里要说明的是没有修改other的指令,因为在修改拥有者和所属组的部分情况就相当于other的修改,other的定义是除了拥有者和所属组以外的所有用户,所以在更换的同时就是更换other。

4,权限掩码

        首先,我们先思考一个问题,当我们创建一个普通文件或普通目录时,默认的起始权限为什么是这样的?这就跟系统下的权限掩码有关了,初始情况下,系统默认普通文件的权限为:666,目录文件的权限为:777。然后,系统会根据指定的一个的码进行修改,用 umask 指令可查看此码。

        先将此码用二进制的形式每三个为一组的展开:0002——>000 000 000 0010

        然后将默认的普通文件权限也按此形式展开:666——>110 110 110。

        普通目录展开为:777——>111 111 111。

        先将系统指定的这个码进行逻辑运算中的非运算(符号 ‘~’ ),然后跟系统默认文件或目录的权限进行逻辑运算中的与运算(符号 ‘&’),得到的结果就是创建文件或目录的起始权限。如下:

       我们用 umask 指令查看的此码就是权限掩码,权限掩码也可使用 umask 指令来修改。

使用方法:umask [权限掩码]

5,相同系统不同用户文件的互相使用

        在系统的操作中,不同用户间可进入到对方的目录中进行操作,如下图:

        我们使用root用户进入了110_user用户下进行了操作,且对所有用户的权限进行了限制,但当我们使用110_user普通用户时我们还可以进行删除操作,即使这是root超级用户所创建的文件。这时,总结出,一个文件能否被删除,并不取决于文件本身,而取决于文件所处的目录或拥有者是否具有 'w' 权限。

        说到这里我们就可能麻烦了,在小组工作中我们避免不了实现不同用户之间的文件共享,但无论是什么用户,只要是在另一个用户的目录下进行文件操作都防不住“删除操作”。系统其实专门给我们提供了一个/tmp目录,此目录为所有用户都打开了权限,是Linux系统专门为我们提供用于不同用户之间的文件共享,不同用户之间可在此目录下创建文件,操作完之后其它用户可在此目录下对其文件进行操作,进而实现文件共享,此目录可理解为共享目录。

        要说明的是/tmp这个目录的拥有者和所属组都是root,other的权限设置为 "rwt",'t' 是粘滞位,是给目录中的other设置的一个权限位,具有 'x' 意义,同时也进一步对目录权限进行特殊规定:即该目录里面的文件,只有root或者文件的拥有者才有权力对文件进行删除,其它人一概不允许对其删除,这样即实现了文件共享功能,也完善了“删除”功能。

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

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

相关文章

国际物流常见风险如何规避_箱讯科技

外贸物流是国际贸易的重要环节,其管理和效率的高低直接影响着贸易的成本和效益。因此,外贸企业应该重视物流的组织和管理,提高物流运作的效率。 国际物流基础知识 01什么是“双清包税”和“双清不包税” 双清包税上门又叫双清包税到门&…

vue3+element Plus实现弹框的拖拽、可点击底层页面功能

1、template部分 <el-dialog:modal"false"v-model"dialogVisible"title""width"30%"draggable:close-on-click-modal"false"class"message-dialog"> </el-dialog> 必须加的属性 modal:是否去掉遮罩层…

设计模式_策略模式

策略模式 介绍 设计模式定义案例问题堆积在哪里解决办法策略模式对算法进现封装&#xff0c;抽象 如&#xff1a;IF elseIF 一大堆 可以配合工厂模式使用炼丹炉里做饭 要求 菜谱 和 食材可配置问题在可配置 菜谱封装菜谱 然后抽象菜谱&#xff0c;为了统一使用方法 类图 Cai…

第一章 introduction to software testing

文章目录 基本概念validation / verificationinput domain / output domaindeterministic / non-deterministicterminate / not-terminate Testing概念testing 的目的Fault, failure, error测试三要素 (3 essential pieces of information)测试输入预期输出执行测试 test execu…

Excel·VBA工作表导出为图片

《Excel转图片别再截图啦&#xff01;用这4个方法&#xff0c;高清且无损&#xff01;》&#xff0c;excel转为图片一般方法较为简单&#xff0c;那么能否使用vba将excel转为图片 选中区域导出为图片 zoom设置为2&#xff0c;导出图片较为清晰 Sub 选中区域导出为图片()Dim …

【案例】3D地球

效果图&#xff1a; 直接放源码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content"initial-scale1.0, user-scalableno" …

使用pandas处理excel文件【Demo】

一、代码示例 import pandas as pd from pandas import Series,DataFrame from pandasql import sqldf import matplotlib.pyplotidInfos DataFrame(pd.read_excel(home_data.xlsx))print(idInfos.head(2))print(idInfos.dtypes)# print(idInfos[:][姓名]) # 自定义一个函数s…

EASYX播放音频文件

添加winmm.lib的依赖 选中链接器中的输入选项&#xff1a;添加附加依赖项winmm.lib并且应用即可 添加音频相关代码 #include <easyx.h> #include <stdio.h> #include <math.h> // 宏定义 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600 #define MAX_…

C#知识总结 基础篇(下)

目录 5类和继承 5.1类继承 5.2访问继承的成员 5.3屏蔽基类的成员 5.4访问基类的成员 5.5虚方法与覆写方法 5.6构造函数的执行顺序 5.7成员访问修饰符 5.8抽象类 5.9密封类与静态类 6.表达式与运算符 6.1运算符和重载 7.结构 7.1结构体的感念。 7.2结构构造函数与…

嵌入式系统中的FPGA

举个栗子 假设你有一台智能家居系统&#xff0c;其中的FPGA可以被类比为智能家居中的中央控制器。 智能家居系统&#xff1a; 定制家居逻辑&#xff1a; 你希望智能家居系统能够根据你的生活习惯、时间表和喜好自动控制灯光、温度、窗帘等设备。就像FPGA中可以根据需求重新配置…

深度学习框架TensorFlow.NET环境搭建1(C#)

测试环境 visual studio 2017 window10 64位 测试步骤如下&#xff1a; 1 新建.net framework控制台项目&#xff0c;工程名称为TensorFlowNetDemo&#xff0c;.net framework的版本选4.7.2&#xff0c;如下图&#xff1a; 2 分别安装TensorFlow.NET包(先装)和SciSharp.…

unity 使用TriLib插件动态读取外部模型

最近在做动态加载读取外部模型的功能使用了triLib插件&#xff0c;废话不多说直接干货。 第一步下载导入插件&#xff0c;直接分享主打白嫖共享&#xff0c;不搞花里胡哨的。 链接&#xff1a;https://pan.baidu.com/s/1DK474wSrIZ0R6i0EBh5V8A 提取码&#xff1a;tado 导入后第…

6.网络之以太网

以太网协议 文章目录 以太网协议1. 以太网报文格式2. MAC地址3. MTU4. DNS域名解析 1. 以太网报文格式 源地址和目的地址&#xff1a;网卡的硬件地址&#xff08;也叫MAC地址&#xff09;&#xff0c;长度是48位&#xff0c;是在网卡出厂时固化的。帧协议类型&#xff1a;IP协议…

ubuntu20.04配置解压版mysql5.7

目录 1.创建mysql 用户组和用户2.下载 MySQL 5.7 解压版3.解压 MySQL 文件4.将 MySQL 移动到适当的目录5.更改mysql目录所属的用户组和用户&#xff0c;以及权限6.进入mysql/bin/目录&#xff0c;安装初始化7.编辑/etc/mysql/my.cnf配置文件8.启动 MySQL 服务&#xff1a;9.建立…

PS Raw中文增效工具Camera Raw 16

Camera Raw 16 for mac&#xff08;PS Raw增效工具&#xff09;的功能特色包括强大的图像调整工具。例如&#xff0c;它提供白平衡、曝光、对比度、饱和度等调整选项&#xff0c;帮助用户优化图像的色彩和细节。此外&#xff0c;Camera Raw 16的界面简洁易用&#xff0c;用户可…

研读论文之Image Quality-aware Diagnosis via Meta-knowledge Co-embedding

研读论文之 Image Quality-aware Diagnosis via Meta-knowledge Co-embedding 前言一、简介二、主要内容2.1. 图像退化2.2. 图像质量感知诊断(IQAD)2.3. 元知识协同嵌入网络(MKCNet) 三、实现过程3.1. IQAD问题3.2. 元知识协同嵌入网络 (MKCNet)3.2.1功能3.2.2优化策略3.2.3 Ta…

虽迟但到,Postman终于支持Websocket接口了

01 WebSocket 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接…

基于8086家具门安全控制系统设计

**单片机设计介绍&#xff0c;基于8086家具门安全控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 8086家具门安全控制系统设计介绍 8086家具门安全控制系统是一种用于保护家具和保证室内安全的系统。该系统基于808…

1.Netty概述

原生NIO存在的问题(Netty要解决的问题) 虽然JAVA NIO 和 JAVA AIO框架提供了多路复用IO/异步IO的支持&#xff0c;但是并没有提供给上层“信息格式”的良好封装。JAVA NIO 的 API 使用麻烦,需要熟练掌握 ByteBuffer、Channel、Selector等 , 所以用这些API实现一款真正的网络应…

数字化时代,数据仓库是什么?有什么用?

在激烈的市场竞争和全新的数字经济共同作用下&#xff0c;数字化转型成为了大多数企业的共识&#xff0c;也是获取数字经济的最佳方式。在整个数据价值生产链路中&#xff0c;数据仓库的主要作用就是中心化分发&#xff0c;将原始数据与数据价值挖掘活动隔离。 所有的原始数据…