当前位置: 首页 > news >正文

Linux - 权限

文章目录

    • 一、用户
    • 二、文件


一、用户

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

超级用户:可以再linux系统下做任何事情,不受限制 。
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

2、su指令
(1)功能

su指令是Linux系统中用于切换用户身份的重要命令。

(2)语法

su [选项] [用户名]

(3)常用选项

-c:在切换用户身份后执行指定的命令,然后退回到原始用户身份。例如,su -c “ls /root” username会在切换到username用户后执行ls /root命令,然后退出。
-l 或 -:模拟用户登录过程,加载目标用户的环境变量和shell配置文件,如同用户真正登录一样。如果不带用户名,则默认切换到root用户。例如,su -或su -l会切换到root用户,并加载root的环境变量。
-s:指定切换用户后要使用的shell。例如,su -s /bin/bash username会在切换到username用户后,使用bash作为其shell。
-m 或 -p 或 --preserve-environment:在切换用户时保留当前用户的环境变量,不改变环境变量。这个选项与-l是互斥的,通常不建议同时使用。
-u:指定要切换到的目标用户ID或用户名。例如,su -u 1000或su -u username。
–help:显示su命令的帮助信息。
–version:显示su命令的版本信息。

(4)举例
由普通用户切换到root用户。

su -	//或者su

由root用户切换到普通用户,并且回到普通用户的家目录下。

su -l xzy

3、添加和删除普通用户

只能在root账户下添加新普通用户,或者使用sudo指令提权。

命令:
添加普通用户。

adduser 用户名

设置密码,系统会提示我们输入两次密码。

passwd 用户名

删除普通用户。

userdel 用户名

如果想要同时删除用户的主目录和邮件目录,可以添加-r(或–remove)选项: userdel -r 用户名。

4、查看当前用户
普通账户的目录都存在家目录的/home中。

cd /home

5、查看当前用户是谁和登录信息
(1)whoami 命令

whoami 命令用于显示当前用户的用户名。这是最直接和常用的方法之一。

whoami

(2)who命令

who
命令显示当前登录系统的所有用户的信息,包括用户名、登录终端、登录时间等。虽然这不是直接查看当前用户的方法,但它可以让你了解当前系统上有哪些用户登录。

who

6、sudo指令
(1)介绍与功能

sudo(superuser do 或 substitute userdo)是Linux和类Unix系统中一个非常有用的命令,它允许系统管理员授权某些用户(或用户组)以另一个用户的安全权限(通常是root用户)来运行命令。这与su命令(switch user 或 substitute user)的主要区别在于,sudo不需要知道目标用户的密码(如root),而是需要知道当前用户的密码,并且该用户必须被/etc/sudoers文件明确授权。

(2)给普通用户授权
步骤:在根目录下打开etc/sudoers文件,然后找到下面更改,就可以了。

用户名    ALL=(ALL)       ALL

在这里插入图片描述
(3)特点

(1)安全性:sudo提供了比su更高的安全性,因为它允许管理员精确地控制哪些用户(或用户组)可以运行哪些命令。
(2)审计追踪:所有通过sudo执行的命令都会被记录在日志中(通常是/var/log/auth.log或/var/log/secure),这使得系统管理员可以追踪哪些用户何时执行了哪些命令。
(3)无密码操作:在某些情况下,管理员可以配置/etc/sudoers文件,使得某些用户或用户组在特定条件下执行特定命令时无需输入密码。
(4)限制用户行为:通过/etc/sudoers文件,管理员可以限制用户只能执行某些命令,甚至只能以特定的用户身份执行这些命令。

(4)语法

sudo [选项] [命令]

(5)常用选项

-i,–login:以目标用户(通常是root)的身份登录shell。这与su -相似。
-u <用户>:以指定的用户身份执行命令。默认情况下,sudo会以root用户身份执行命令。
-l:列出当前用户可以执行的命令。
-v:验证用户的密码,并在用户下次使用sudo时不会要求再次输入密码(这取决于sudo的配置)。

(6)举例

使用普通用户执行需要root用户的命令。

sudo cat test.txt	//假设该命令普通用户无法执行

按下回车后需要输入当前用户密码。

二、文件

1、文件包含什么?

文件 = 文件内容 + 文件属性
文件内容:文件内容通常指的是存储在文件中的数据或信息。
文件属性:如作者、文件大小、权限(读写执行)等。

2、文件访问者的分类

文件和文件目录的所有者:u—User 。
文件和文件目录的所有者所在的组的用户:g—Group 。
其它用户:o—Others。

3、Linux下的文件属性
在这里插入图片描述
(1)文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

(2)基本权限

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 。
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 。
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

(3)Linux下权限的表示
对于普通文件:

字符表示:rw- 具有读写的权限但不具有执行的权限 。
八进制表示:110 具有读写的权限但不具有执行的权限。
补充:能否执行一个文件不仅需要看执行权限,还需要看当前文件是否有执行的能力。

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

说明:只有文件的拥有者和root才可以改变文件的权限。

(1)chmod指令
功能:

设置文件的访问权限。

语法:

chmod [选项] 权限 文件名

常用选项

R -> 递归修改目录文件的权限。

权限

用户表示符+/-=权限字符
实例:
+:向权限范围增加权限代号所表示的权限 。
-:向权限范围取消权限代号所表示的权限 。
=:向权限范围赋予权限代号所表示的权限 。
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

举例
设置其他用户也能读写文件file.txt

chmod o+rw file.txt

使用3位8进制数字修改文件权限
举例
将所有者的权限设置为读写,所属组和其他用户设置为只读。

chmod 644 file.txt

(2)chown指令
功能

修改文件的拥有者。

语法

chown [选项] 用户名 文件名 

常用选项

-R 或 --recursive: 递归地更改指定目录及其内部所有文件和子目录的所有者。

举例
修改文件file.txt的拥有者为用户xu

chown xu file.txt

递归的修改目录dir的拥有者为xu

chown -R xu dir 

(3)chgrp 指令
功能

修改文件或目录的所属组。

语法

chgrp [选项] 用户组名 文件名

常用选项

-R 递归修改文件或目录的所属组。

举例
修改文件file.txt所属组为xu

 chgrp xu file.txt

修改目录dir的所属组为root

sudo chgrp -R root dir

普通用户将文件修改为root用户时需要越权处理。

(4)umask指令
功能

查看或修改文件掩码。
说明:
(1) 新建文件夹默认权限=0666 ,新建目录默认权限=0777。
(2)但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask 。
(3)超级用户默认掩码值为0022,普通用户默认为0002。

语法

umask 权限值 

举例
查看文件掩码

umask

修改文件掩码为0001

umask  0001

(5)file指令
功能

它通过分析文件的头部信息或内容来识别文件类型,而不是仅仅依赖于文件的扩展名。

语法

file [选项] 文件或目录...

常用选项

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

举例
查看文件file.txt的文件类型。

file file.txt

查看压缩文件的类型

file file.zip

5、粘滞位
(1)介绍

在Linux系统中,粘滞位(Sticky Bit)是一个特殊的权限标志,它主要用于目录上,以保护目录中的文件不被非所有者用户随意删除或重命名。粘滞位是Unix文件系统权限的一个旗标,首次引入是在Unix的第5版中,但最初并不是用于目录保护,而是用于设置可执行文件。不过,随着Unix和Linux系统的发展,粘滞位的主要应用逐渐转变为对目录的保护。

(2)功能

(1) 保护目录中的文件:当目录设置了粘滞位后,只有该目录的所有者、文件的所有者或超级用户(root)才能删除或重命名该目录下的文件或子目录。这有助于防止非文件所有者用户误删或误操作重要文件。
(2)提升系统安全性:在公共目录(如/tmp)中设置粘滞位,可以防止普通用户删除或移动其他用户的临时文件,从而保护系统的稳定性和安全性。

(3)设置粘滞位

chmod +t 目录名

(4)注意事项

(1)粘滞位只对目录有效,对文件无效。
(2)粘滞位只能防止文件被非所有者用户删除或重命名,但不能阻止其他用户读取、写入或执行文件(具体取决于文件的其他权限设置)。
(3)粘滞位不能阻止其他用户往该目录中添加新的文件或子目录。
(4)只有目录的所有者、文件的所有者或超级用户(root)才能删除或重命名设置了粘滞位的目录中的文件或子目录。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入理解HTTPS协议:CA证书的安全机制
  • B站搜索建库架构优化实践
  • 为什么要有二级指针
  • 第三章 PyTorch基础教程
  • windows C++-通过 C++/WinRT 创作 COM 组件(一)
  • 【产品那些事】什么是应用程序安全态势管理(ASPM)?
  • cAdvisor+prometheus+grafana搭建监控页面并嵌入自定义页面中
  • 一文掌握直播技术:实时音视频采集、编码、传输与播放
  • 开源AI智能名片商城小程序在私域流量运营中的转化效率与ROI提升研究
  • Ubuntu最小化命令行系统 安装GUI 远程桌面
  • LabVIEW多协议智能流水线控制与监控系统
  • TcpSocket在切后台后如何保活
  • k8s查看容器的日志
  • C#编程中,如何实现一个高效的数据排序算法?
  • redis基本工具类编写
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 《Java编程思想》读书笔记-对象导论
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Apache Spark Streaming 使用实例
  • Bootstrap JS插件Alert源码分析
  • CEF与代理
  • CentOS从零开始部署Nodejs项目
  • Docker: 容器互访的三种方式
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript类型识别
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • php面试题 汇集2
  • Sass 快速入门教程
  • 从零开始的无人驾驶 1
  • 二维平面内的碰撞检测【一】
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端面试之CSS3新特性
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 昨天1024程序员节,我故意写了个死循环~
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # Redis 入门到精通(一)数据类型(4)
  • # 数论-逆元
  • #13 yum、编译安装与sed命令的使用
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (3)STL算法之搜索
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C#)一个最简单的链表类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十七)Flink 容错机制
  • (四)事件系统
  • (一)Docker基本介绍
  • (译)2019年前端性能优化清单 — 下篇
  • (转)四层和七层负载均衡的区别
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET delegate 委托 、 Event 事件
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型