Linux 之五:权限管理(文件权限和用户管理)

1. 文件权限

在Linux系统中,文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。

每个文件或目录都有一个包含9个字符的权限模式,这些字符分为三组,每组三个字符,分别对应文件所有者的权限、所属组的权限和其他用户的权限。

具体来说,这三个权限位组按顺序排列如下:

  1. 文件所有者(Owner)的权限
  2. 所属组(Group)的权限
  3. 其他用户(Others)的权限

每个权限位组内的三个字符代表读(r)、写(w)和执行(x)三种权限:

  • r(Read):允许读取文件内容(对于目录,意味着可以列出其下的文件列表)
  • w(Write):允许修改或删除文件内容(对于目录,意味着可以在该目录下创建、移动或删除文件)
  • x(Execute):允许运行程序脚本或进入目录(对于目录,意味着可以通过cd命令进入该目录)

当某个权限不存在时,则用 - 来代替相应的字符。

此外,还有一种特殊的情况,如果一个文件设置了suid、sgid或者sticky bit,那么权限位上可能出现sStT等符号,它们分别表示:

  • s 或 S:设置了setuid/setgid位,表示执行该文件时将拥有文件所有者的权限(对于可执行文件)或临时加入到文件所在组(对于目录)。
  • t 或 T:只针对目录,设置了粘滞位(sticky bit),表示即使非文件所有者或所在组成员也可以删除或修改自己的文件,但不能删除其他用户的文件。

例如,一个文件可能有如下的权限设置:

-rwxr-xr--

这表示:

  • 文件所有者具有读(r)、写(w)和执行(x)权限。
  • 所属组具有读(r)和执行(x)权限,但没有写(w)权限。
  • 其他用户只有读(r)和执行(x)权限,同样没有写(w)权限。

使用 ls -l 或 ll 命令时:

[root@zhangpeng mydir]# ll
total 8
drwxr-xr-x. 3 zhang zhang  68 Aug 14 17:35 a
-rw-r--r--. 1 zhang zhang  93 Aug 16 10:00 Test1.java
-rw-r--r--. 1 zhang zhang   0 Aug 14 17:34 Test5.java
-rw-r--r--. 1 zhang zhang 106 Aug 16 09:48 Test.java
-rw-r--r--. 1 zhang zhang   0 Aug 14 17:34 Test.txt

从上面文件详细信息列表中,可以查出文件操作权限及所属用户、用户组、时间、大小等信息

drwxr-xr-x :

d :表示目录 (文件类型)

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

rwx: 表示可读可写可执行(文件所属用户)

r-x: 表示可读不可写可执行 (文件所属组)

r-x : 表示可读不可写可执行 (Other 其他用户)

数字模式:

rwx: 111 ---7

r-- : 100 ---4

r-x : 101 ----5

举例:

-rw-r--r--. 用数字表示是: 110 100 100 转为十进制 644 。

修改文件所属

chown - change file owner and group

[root@wang dir]# ll
total 16
drwxr-xr-x. 4 root root  29 Aug 24 03:17 dest
drwxr-xr-x. 2 root root 107 Aug 24 03:08 newdir
-rwxr--r-x. 1 root root   0 Aug 24 03:23 testfile.txt
-rw-r--r--. 1 root root   0 Aug 24 04:13 Test.java
-rw-r--r--. 1 root root  61 Aug 24 04:14 Test.xx
-rwxr-xr--. 1 root root  13 Aug 24 04:29 T.java
-rw-r--r--. 1 root root   8 Aug 24 03:06 TT.txt
-rw-r--r--. 1 root root  23 Aug 24 04:34 Word.java
drwxr-xr-x. 2 root root  74 Aug 24 03:17 xyz
[root@wang dir]# chown zhang newdir            
[root@wang dir]# ll
total 16
drwxr-xr-x. 4 root  root  29 Aug 24 03:17 dest
drwxr-xr-x. 2 zhang root 107 Aug 24 03:08 newdir
-rwxr--r-x. 1 root  root   0 Aug 24 03:23 testfile.txt
-rw-r--r--. 1 root  root   0 Aug 24 04:13 Test.java
-rw-r--r--. 1 root  root  61 Aug 24 04:14 Test.xx
-rwxr-xr--. 1 root  root  13 Aug 24 04:29 T.java
-rw-r--r--. 1 root  root   8 Aug 24 03:06 TT.txt
-rw-r--r--. 1 root  root  23 Aug 24 04:34 Word.java
drwxr-xr-x. 2 root  root  74 Aug 24 03:17 xyz
[root@wang dir]# 

2.用户管理

查看用户信息

1)su username 切换用户名 2)whoami 查看当前用户

[root@zhangpeng mydir]# whoami
root

3)id: 查看当前用户的编号,所属组号,所属组的信息

[root@zhangpeng mydir]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

4)id zhang: 查看zhang用户的编号,组号等信息

[wangwu@zhangpeng ~]$ id zhang
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang)

5)groups: 查看当前用户所属组

[wangwu@zhangpeng ~]$ groups
wang

6)groups zhang: 查看用户zhang所在组

[wangwu@zhangpeng ~]$ groups zhang
zhang : zhang

7)用户信息文件: /etc/passwd 存储用户账号 /etc/group 存储组账号 /etc/shadow 存储用户账号的密码 /etc/gshadow 存储用户组账号的密码

添加用户

8)添加组

[root@wang ~]# groupadd zhou
[root@wang ~]# useradd zhouyu -g zhou
[root@wang ~]# id zhouyu
uid=1010(zhouyu) gid=1009(zhou) groups=1009(zhou)

9)添加用户

[root@zhangpeng wangwu]# useradd lisi -g li  ## 添加用户时,指定所属组 -g
[root@zhangpeng wangwu]# useradd li -g li
[root@zhangpeng wangwu]# id li                ## 查看指定用户所属组
uid=1006(li) gid=1004(li) groups=1004(li)

useradd zhang # 默认创建 zhang 用户,同时创建同名zhang的组。

[root@zhangpeng wangwu]# useradd zhao
[root@zhangpeng wangwu]# id zhao
uid=1007(zhao) gid=1007(zhao) groups=1007(zhao)
重置密码

passwd

[root@wang ~]# passwd caozhi
Changing password for user caozhi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@wang ~]# 

用户创建成功后,默认会在 /home 目录下自动创建以用户名为目录名的一个目录。目录直接所属新增的这个用户

[root@wang etc]# ls /home
caopi  caozhi  guan  li  lisi  liu  wang  wangwu  zhang  zhangsi  zhao
[root@wang etc]# 
用户删除

userdel username : 注意 删除时,不能删除关联的 home 下的目录及其他附属信息

userdel -r username : 彻底删除,删除/home 目录及关联其他信息

注意:删除用户时,此用户是组中最后一个用户,会关联删除组

[root@wang home]# useradd huang
[root@wang home]# id huang
uid=1010(huang) gid=1010(huang) groups=1010(huang)
[root@wang home]# userdel -r huang        
[root@wang home]# 
用户组删除
[root@wang home]# useradd huang         # 同时创建组
[root@wang home]# tail -3 /etc/group    # 查看组
cao:x:1008:
zhou:x:1009:
huang:x:1010:
[root@wang home]# groupdel huang          # 删除组   不能删除存在用户的组
groupdel: cannot remove the primary group of user 'huang'
[root@wang home]# 

[root@wang home]# groupadd zhang    # 创建空组
[root@wang home]# groupdel huang    # 可以直接删除成功
用户权限
[root@wang home]# ll
total 4
drwxr-xr--.  3 wangliu  wang   132 Aug 24 09:47 wangliu      # 其他用户只读
drwxr-x---.  3 wangwu   wang    78 Aug 24 09:42 wangwu
drwxr-x---. 15 zhang    zhang 4096 Aug 24 08:54 zhang
drwx------.  5 zhangsan zhang  107 Aug 24 09:47 zhangsan
[root@wang home]# su zhangsan
[zhangsan@wang home]$ cd wangliu                            # 当前zhangsan 不能进入到r-- 目录中,因为没有执行权限
bash: cd: wangliu: Permission denied
[zhangsan@wang home]$ ls wangliu                            # 可以查看文件下文件,可以使用 ls 
ls: cannot access wangliu/Test2.java: Permission denied
ls: cannot access wangliu/Test3.java: Permission denied
ls: cannot access wangliu/Test4.java: Permission denied
Test2.java  Test3.java  Test4.java

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

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

相关文章

2024蓝桥杯每日一题(差分)

一、第一题:空调 解题思路:差分 希望P减掉T后就相当于从0到New_P,想到得到New_P只需要对全0数组进行若干次区间加操作,所以只需要对New_P数组进行差分,累加正数和负数,哪个绝对值大答案就是那个。 …

【深度学习笔记】6_8 长短期记忆(LSTM)

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 6.8 长短期记忆(LSTM) 本节将介绍另一种常用的门控循环神经网络:长短期记忆(long shor…

二叉树的先序遍历详解(小白也懂)(附带中序,后序代码)

文章目录 二叉树的先序遍历(分而治之思想)样例图函数的递归调用源代码运行结果 二叉树的先序遍历(分而治之思想) 代码在文章底部。 先序遍历又叫先根遍历,顾名思义:遍历顺序为根,左子树,右子树。 样例图 本文将对以下二叉树进…

关于 JVM

1、请你谈谈你对JVM的理解? JVM由JVM运行时数据区(图示中蓝色框包含部分)、执行引擎、本地库接口、本地方法库组成。 JVM运行时数据区,分为方法区、堆、虚拟机栈、本地方法栈和程序计数器。 1.方法区 Java 虚拟机规范中定…

YOLOv8-Seg改进:SPPF涨点篇 |引入YOLOv9的SPPELAN

🚀🚀🚀本文改进:SPP创新结合ELAN,来自于YOLOv9,助力YOLOv8,将SPPELAN代替原始的SPPF 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割…

day59 线程

创建线程的第二种方式 实现接口Runnable 重写run方法 创建线程的第三种方式 java.util.concurrent下的Callable重写call()方法 java.util.concurrent.FutureTask 创建线程类对象 获取返回值 线程的四种生命周期 线程的优先级1-10 default为5,优先级越高&#xff0c…

JavaEE进阶(15)Spring原理:Bean的作用域、Bean的生命周期、Spring Boot自动配置(加载Bean、SpringBoot原理分析)

接上次博客:JavaEE进阶(14)Linux基本使用和程序部署(博客系统部署)-CSDN博客 目录 关于Bean的作用域 概念 Bean的作用域 Bean的生命周期 源码阅读 Spring Boot自动配置 Spring 加载Bean 问题描述 原因分析 …

JavaEE企业开发新技术

目录 2.1 Class对象基本概念 1、概念 2.2 Class对象的获取方式 2.3基本数据类型的Class对象 1、概念 2.4 反射的基本概念 概念 2.5 Class对象的基本使用-1 2.6 Class对象的基本使用-2 newInstance()和new()区别: 2.1 Class对象基本概念 1、概念 反射的…

面试经典150题——合并两个有序链表

You just work on it. Time will do the rest! 1. 题目描述 2. 题目分析与解析 2.1 思路一 这个题目还是比较简单的,通过分析题目,我们可以知道题目中关键信息为: 所以我们只需要从前向后遍历两个链表,在两个链表不空的情况下&…

白皮书发布|超融合运行 K8s 的场景、功能与优势

目前,不少企业都使用虚拟化/超融合运行 Kubernetes 和容器化应用。一些用户可能会有疑惑:既然 Kubernetes 可以部署在裸金属上,使用虚拟化不是“多此一举”吗? 在电子书《IT 基础架构团队的 Kubernetes 管理:从入门到…

Android中显式Intent和隐式Intent的区别

1、intent的中文名 称是意图,Intent是各个组件之间信息沟通的桥梁, 既能在Activity之间沟通,又能在Activity与Service之间沟通,也能在Activity与Broadcast之间沟通 **intent组成元素的列表说明**2、显式Intent,直接指定…

河北专升本(C语言编程题)

一:基础算法原理 1. 冒泡排序 原理:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 以从小到大排序为例,第一轮比较后,所有数中最大的…

软考71-上午题-【面向对象技术2-UML】-UML中的图2

一、用例图 上午题,考的少;下午题,考的多。 1-1、用例图的定义 用例图展现了一组用例、参与者以及它们之间的关系。 用例图用于对系统的静态用例图进行建模。 可以用下列两种方式来使用用例图: 1、对系统的语境建模&#xff1b…

自动驾驶革命:解密端到端背后的数据、算力和AI奇迹

作者 |毫末智行数据智能科学家 贺翔 编辑 |祥威 最近,特斯拉FSD V12的发布引发了业界对端到端自动驾驶的热议,业界纷纷猜测FSD V12的强大能力是如何训练出来的。从马斯克的测试视频可以大致归纳一下FSD V12系统的一些核心特征: 训练数据&am…

Redis的集群模式

Redis有三种主要的集群模式,用于在分布式环境中实现高可用性和数据复制。这些集群模式分别是:主从复制(Master-Slave Replication)、哨兵模式(Sentinel)和Redis Cluster模式。 主从模式 主从复制是Redis最简单的集群模式。这个模式主要是为了解决单点故障的问题&a…

探索Cglib:解析动态代理的神奇之处

文章目录 CGLIB介绍CGLIB使用示例CGLIB核心原理分析代理类分析代理方法分析 FastClass机制分析 CGLIB介绍 CGLIB(Code Generation Library)是一个开源项目!是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与…

【echarts】xAxis鼠标事件失效问题

项目中用到echarts柱状图,出现x轴标签文字过长重叠问题,在pass掉标签倾斜、换行方案之后最终决定限制文字长度,超出以…占位,鼠标悬浮时显示完整tooltip。 但编写过程中发现xAxis鼠标事件无法触发,只有bar区域是可触发…

19 卷积层【李沐动手学深度学习v2课程笔记】

目录 1. 从全连接到卷积 2. 卷积层 3. 图像卷积代码 3.1 互相关运算 3.2 实现二维卷积层 3.3 图像中目标的边缘检测 3.4 学习卷积核 4. 小结 1. 从全连接到卷积 在欧几里得几何中,平移是一种几何变换,表示把一幅图像或一个空间中的每一个点在相同…

mysql中insert … select锁范围

1、执行 insert … select 的时候,对目标表也不是锁全表,而是只锁住需要访问的资源。 例如, CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY c (c) ) EN…

streamlit初学-用streamlit实现云台控制界面

用streamlit实现云台控制界面 效果图PC上的效果手机上的效果 源码: 本文演示了,如何用streamlit做一个云台控制界面。功能包括:用户登录,事件的处理,图片的更新 版本信息: streamlit_authenticator: 下载链接streamlit : 1.31.1python: 3.11 修改点: streamlit_authenticato…