【linux】shell命令 | Linux权限

目录

1. shell命令以及运行原理

2. Linux权限的概念

3. Linux权限管理

3.1 文件访问者的分类

3.2 文件类型和访问权限

3.3 文件权限值的表示方法

3.4 文件访问权限的相关设置方法

4. file指令

5. 目录的权限

6. 粘滞位

7. 关于权限的总结


1. shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command   Interpreter)主要包含:
◆ 将使用者的命令翻译给核心(kernel)处理。
◆ 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

        ◆ 帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提

亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。

2. Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

 ◆ 超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。

 ◆ 超级用户的命令提示符是“#”,

 ◆ 普通用户的命令提示符是“$”。

命令:su [用户名]
功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

3. Linux权限管理

3.1 文件访问者的分类

文件和文件目录的所有者:u---User(中国平民 法律问题)

文件和文件目录的所有者所在的组的用户:g---Group(不多说)

其它用户:o---Others (外国人)

3.2 文件类型和访问权限

a)文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等) 

p:管道文件              

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

b)基本权限

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

iv.“—”表示不具有该项权限。

3.3 文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

3.4 文件访问权限的相关设置方法

a) chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名

常用选项:
◆ R -> 递归修改目录文件的权限
◆ 说明:只有文件的拥有者和root才可以改变文件的权限

chmod

① 用户表示符+/-=权限字符

+ :向权限范围增加权限代号所表示的权限

- :向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限用户符号:

u :拥有者   

g:拥有者同组用

o:其它用户  

a:所有用户

实例:

chmod u+w /home/abc.txt 
chmod o-x /home/abc.txt

②三位8进制数字

实例:

chmod 664 /home/abc.txt
chmod 640 /home/abc.txt

b)chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

实例:

# chown user1 f1
# chown -R user1 filegroup1

c)chgr

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

实例:

chgrp users /abc/f2

d)umask

功能:
        
◆ 查看或修改文件掩码
        
◆ 新建文件夹默认权限=0666

        ◆ 新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

实例:

umask 755
umask //查看
umask 044//设置

4. file指令

功能说明:辨识文件类型。
语法:file [选项] 文件或目录...

常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。

使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

chmod 740 /etc/sudoers 
vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

(2)使用 sudo 调用授权的命令

sudo –u 用户名 命令

实例:

sudo -u root /usr/sbin/useradd u2

5. 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

于是, 问题来了~~

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.

[root@localhost ~]# chmod 0777 /home/ [root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月  19 15:58 /home/
[root@localhost ~]# touch /home/root.c [root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root	0 9月  19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月  19 15:53 litao
-rw-r--r--. 1 root root	0 9月  19 15:59 root.c

[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件 rm:是否删除有写保护的普通空文件 "/home/root.c"?y

[litao@localhost ~]$ exit logout

为了解决这个不科学的问题, Linux引入了粘滞位的概念.

6. 粘滞位

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/ [root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件 rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod  +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

7. 关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
  • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

本章完。

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

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

相关文章

05.STLvector、list、stack、queue

STL标准模板库 standard template library STL将原来常用的容器和操作进行封装,增加了C的编码效率 容器 string #include vector #include list #include stack #include queue #include set #include map #include 迭代器 容器和算法之间的粘合剂&#xff0…

js 多对象去重(多属性去重)

需求中发现后端可能没有处理重复数据,这个时候前段可以直接解决。 在 JavaScript 中,可以使用 Set 数据结构来进行多对象的去重。Set 是 ES6 新引入的集合类型,其特点是元素不会重复且无序。 下面是一个示例代码,展示如何通过 S…

Nginx----高性能的WEB服务端

一、Nginx介绍 1、什么是Nginx Nginx Nginx是一个高性能的HTTP和反向代理服务器。是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30 000~50 000个并发请求。 一款高性能…

一分钟学会MobaXterm当Linux客户端使用

一、介绍 MobaXterm是一款功能强大的远程计算机管理工具,它集成了各种网络工具和远程连接协议,可以帮助用户在Windows系统上轻松管理远程计算机。MobaXterm支持SSH、Telnet、RDP、VNC等多种远程连接协议,同时还集成了X11服务器,可…

启动node服务报错Error: listen EACCES: permission denied 0.0.0.0:5000

启动node服务报错: 解决方案: 将监听端口改成3000或者其他 修改后结果: 参考原文: Error: listen EACCES: permission denied_error when starting dev server: error: listen eacc-CSDN博客

并发编程入门指南

文章目录 并发编程进程和线程的区别并发和并行的区别创建线程的方式线程之间的状态,状态之间的转换新建三个线程,如何保证按顺序执行wait方法和sleep的区别如何停止一个正在运行的线程synchronized关键字底层原理Monitor属于重量级锁,了解过锁…

外贸邮件群发软件有效果吗?邮件群发平台?

外贸邮件群发软件怎么选?国外邮箱群发平台如何选择? 外贸业务已成为许多企业发展的重要方向。在这个过程中,各种工具和技术层出不穷,其中外贸邮件群发软件因其能够高效、批量地发送邮件而备受关注。那么,外贸邮件群发…

API接口测试工具的使用指南

API接口测试是确保软件系统正常运作的关键步骤。API接口测试工具可以帮助开发人员和测试人员验证API的功能、性能和安全性。本文将介绍API接口测试工具的基本使用方法,以便有效地进行接口测试。 1. 选择合适的API测试工具 在开始API接口测试之前,首先需要…

STM32F10X(Cortex-M3)系统定时器寄存器笔记和系统定时器精准延时函数

Cortex-M3系统定时器寄存器笔记和系统定时器精准延时函数 简介系统定时器寄存器STK_CTRLSTK_LOADSTK_VALSTK_CALIB STM32F10X(Cortex-M3)精准延时函数 简介 在STM32F10X(Cortex-M3)除了通用定时器和看门狗定时器外,还有一个系统定时器(SysTick) 拿STM32F103C8T6来说…

vue如何动态加载显示本地图片资源

在实际开发中,根据某一个变量动态展示图片的情况有很多。实现方法分打包构建工具的差异而不同。 1、webpack的项目 require引入图片资源 2、vite的项目 new URL(url,base).href 疑问解答:为什么vite项目不可以用require? 原因在于&#xf…

vue项目设置的端口号运行后会自动加一问题解决

vue项目设置的端口号运行后会自动加一问题解决 主要原因是之前运行项目后没有完全的关闭服务,导致再次运行项目端口号被占用,自动加一! 问题解决 打开任务管理器,在进程中找到node相关进程,右键结束任务

长期有效的文本二维码怎么生成?将文字做成二维码只需3步

现在经常会在扫描二维码的时候,发现很多的二维码种会展现文字的内容,比如常见的有物品信息、个人信息、信件等等。通过生成二维码的方式,来让其他人扫码获取内容,这种方式可以有效地降低成本,而且获取内容的方式也更加…

HDFS中常用的Shell命令 全面且详细

HDFS中常用的Shell命令目录 一、ls命令 二、mkdir 命令 三、put命令 四、get命令 五、mv命令 六、rm命令 七、cp命令 八、cat命令 前言 安装好hadoop环境之后,可以执行hdfs相关的shell命令对hdfs文件系统进行操作,比如文件的创建、删除、修改文…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密码:hvev 免费的企微框架 支持文本消息,图片消息,视频消息,文件消息。 其他可自行下载测试。 有兴趣可以进群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

Linux课程三课---Linux开发环境的使用(yum的相关)

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

前端基础自学整理|HTML + JavaScript + DOM事件

目录 一、HTML 1、Html标签 2、Html元素 3、基本的HTML标签 二、CSS 样式 层叠样式表 三、JavaScript 使用示例 四、HTML DOM 通过可编程的对象模型,javaScript可以: window document 1、查找HTML元素 2、操作HTML元素 获取元素的属性 四…

基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现

基于Java jspmysqlSpring的汽车出租平台租赁网站平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留…

使用JDBC操作数据库(IDEA编译器)

目录 JDBC的本质 ​ JDBC好处 JDBC操作MySQL数据库 1.创建工程导入驱动jar包 2.编写测试代码 ​相关问题 JDBC的本质 官方(sun公司) 定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接口,提供数据库驱动jar包我们可以使用这…

【数据库】达梦数据库DM8开发版安装

目录 一、达梦数据库概述 1.1 达梦数据库简介 1.2 产品特性 1.3 产品架构 二、安装前准备 2.1 新建 dmdba 用户 2.2 修改文件打开最大数 2.3 挂载镜像 2.4 新建安装目录 2.5 修改安装目录权限 三、数据库安装 3.1 命令行安装 3.2 配置环境变量 四、配置实例 4.1…

离散数学(一) 集合

属于关系 表示 枚举法; 叙述法; 文氏图法 基数 空集 全集 全集是相对唯一的