控制对文件访问

控制对文件访问

在这里插入图片描述

Linux文件权限

权限文件影响目录影响
r读取文件内容列出目录内容
w更改文件内容创建删除目录文件
x作为命令执行目录可以变成当前工作目录

命令行管理文件系统权限

更改文件和目录权限

chmod

chmod WhoWhatWhich file|directory
  • Who (u,g,o,a代表用户,组,其他,全部)
  • What(+ - = 代表添加,删除,设置)
  • Which(r,w,x 代表读写执行)
#对file.txt 中组和其他删除读取权限
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 Jul 18 02:51 file.txt
[root@servera ~]# chmod go-r file.txt
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rw-------. 1 root root    0 Jul 18 02:51 file.txt#对file.txt添加执行权限
[root@servera ~]# chmod a+x file.txt
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rwx--x--x. 1 root root    0 Jul 18 02:51 file.txt

通过数值更改权限

chmod ### file|dir

'#'字符代表一个数字,每个数字代表一个访问级别的权限:用户,组,其他

权限对应数字
r4
w2
x1
#对用户设置读写权限,对组设置读取权限,对file其他设置读取权限
[root@servera ~]# chmod 644 file
[root@servera ~]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 18 02:59 file#对用户设置读写执行权限,对组设置读执行权限,对file其他不设权限
[root@servera ~]# chmod 750 file
[root@servera ~]# ll
total 0
-rwxr-x---. 1 root root 0 Jul 18 02:59 file

更改文件和目录的用户和组的所有权

chown 更改权限

chown -R递归更改整个目录树的所有权

#更改file所有权为usr1
[root@servera ~]# ll
total 0
-rwxr-x---. 1 root root 0 Jul 18 02:59 file
[root@servera ~]# chown usr1 file
[root@servera ~]# ll
total 0
-rwxr-x---. 1 usr1 root 0 Jul 18 02:59 file
#将test_dir所有文件所有权变成usr1[root@servera ~]# ll  test_dir/
total 0
-rw-r--r--. 1 root root 0 Jul 18 03:09 a
-rw-r--r--. 1 root root 0 Jul 18 03:09 b
-rw-r--r--. 1 root root 0 Jul 18 03:09 c
-rw-r--r--. 1 root root 0 Jul 18 03:09 d
[root@servera ~]# chown -R usr1 test_dir/
[root@servera ~]# ll test_dir/
total 0
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 a
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 b
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 c
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 d

更改组和用户


[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 usr1 root 42 Jul 18 03:09 test_dir[root@servera ~]# chown :admins test_dir
[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 usr1 admins 42 Jul 18 03:09 test_dir[root@servera ~]# chown root:root test_dir
[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 root root 42 Jul 18 03:09 test_dir

管理默认权限和文件访问

特殊权限对文件影响对目录影响
u+s以拥有文件的用户身份,而不是运行文件的用户身份来执行文件
g+s以拥有文件的组身份执行文件为目录最新创建的文件将其组匹配所有者设置与目录的组所有者相匹配
o+t无影响对目录具有写入访问权限的用户仅可以删除拥有的文件,无法删除或强制保存到其他用户所拥有的文件
[root@servera ~]# ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33424 Feb  7  2022 /usr/bin/passwd

在长列表里,通过小写s辨别setuid权限,该处通常x,如果所有者不具备执行权限由S取代

[root@servera ~]# ls -ld /run/log/journal
drwxr-sr-x. 3 root systemd-journal 60 Jul 15 10:54 /run/log/journal

对某目录的书权限setgid表示在该目录中创建的文件将继承该目录的组的所有权,而不是继承创建用户

设置特殊权限

setuid=u+s  4
setgid=g+s  2
sticky=o+t  1
#在dir目录添加setgid位
[root@servera ~]# chmod g+s dir/
[root@servera ~]# ll
total 0
drwxr-sr-x. 2 root root 6 Jul 18 05:02 dir#为dir设置setgid位并为用户和组添加读写执行权限 其他不具备权限
[root@servera ~]# chmod 2770 dir/
[root@servera ~]# ll
total 0
drwxrws---. 2 root root 6 Jul 18 05:02 dir

默认文件权限

创建新目录,系统首先分配八进制权限0777(drwxrwxrwx)

创建常规文件,系统分配八进制权限0666(-rw-rw-rw-)

shell会话还会设置一个umask,以进一步限制初始设置权限,这是一个8位掩码,用于清除由该进程创建的新文件和目录权限。如果在umask设置一个位,则对应文件的权限将被清除。

[root@servera ~]# umask
0022

Bash shell用户系统默认umask值在/etc/profile /etc/bashrc

[root@servera ~]# umask 
0022
[root@servera ~]# touch default.txt
[root@servera ~]# ls -l default.txt 
-rw-r--r--. 1 root root 0 Jul 18 05:20 default.txt
[root@servera ~]# mkdir default
[root@servera ~]# ls -ld default
drwxr-xr-x. 2 root root 6 Jul 18 05:20 default

通过将umask值设置为0,其他文件权限将读取改为读写,其他目录权限将从读取和执行改为读取,写入和执行。

[root@servera ~]# umask 0
[root@servera ~]# touch zero.txt
[root@servera ~]# ls -l zero.txt 
-rw-rw-rw-. 1 root root 0 Jul 18 05:23 zero.txt
[root@servera ~]# mkdir zero
[root@servera ~]# ls -ld zero
drwxrwxrwx. 2 root root 6 Jul 18 05:23 zero

要屏蔽其他所有文件的目录权限umask设置为007

[root@servera ~]# umask 007
[root@servera ~]# touch seven.txt
[root@servera ~]# ls -l seven.txt 
-rw-rw----. 1 root root 0 Jul 18 05:24 seven.txt
[root@servera ~]# mkdir seven
[root@servera ~]# ls -ld seven
drwxrwx---. 2 root root 6 Jul 18 05:25 seven

umask为027可确保新文件的用户具有读写权限,组具有读取权限。新目录的组具有读取和写入权限,而其他则没有访问权限。

[root@servera ~]# umask 027
[root@servera ~]# touch two-seven.txt
[root@servera ~]# ls -l two-seven.txt 
-rw-r-----. 1 root root 0 Jul 18 05:33 two-seven.txt
[root@servera ~]# mkdir two-seven
[root@servera ~]# ls -ld two-seven
drwxr-x---. 2 root root 6 Jul 18 05:33 two-seven

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务 Seata

分布式事务 Seata 事务介绍分布式理论Seata 介绍Seata 部署与集成Seata TC Server 部署微服务集成 Seata XA 模式AT 模式AT 模式执行过程读写隔离写隔离读隔离 实现 AT 模式 TCC 模式TCC 模式介绍实现 TCC 模式 Saga 模式Seata 四种模式对比 事务介绍 事务(Transac…

使用GPU进行大规模并行仿真,解决强化学习采样瓶颈:CPU、GPU架构以及原理详解

强化学习的落地应用场景,我认为可以是仿真环境仿真程度高,且仿真速度快的任务场景。而这篇帖子将会将:使用 GPU 进行大规模并行仿真,解决强化学习采样瓶颈。并直接举出三个例子,展示如何对原有的仿真环境进行修改,让它们适应 GPU 并行加速。 1.强化学习论文背后的仿真环…

降级npm后,出现xxx 不是内部或外部命令解决方法

比如我安装了anyproxy npm install anyproxy -g 之后在cmd中输入anyproxy 发现 anyproxy 不是内部或外部命令解决方法. 一般出现这样的问题原因是npm安装出现了问题,全局模块目录没有被添加到系统环境变量。 Windows用户检查下npm的目录是否加入了系统变量P…

【JavaEE】Tomcat的安装和使用、创建Mevan项目使用Servlet写一个程序

目录 前言 一、Tomcat的下载和安装 二、写一个简单的Servlet项目 1、创建一个Maven项目 2、引入依赖 3、创建目录 4、编写Servlet代码。 5、打包程序 6、将程序部署到Tomcat上 7、验证程序运行结果 三、在IDEA上安装Smart Tomcat插件 四、Servlet中的一些常见错误 …

计算机网络 day9 DNAT实验

目录 DNAT DNAT策略的典型应用环境 DNAT策略的原理 在网关中使用DNAT策略发布内网服务器 DNAT实验: 实验环境: DNAT网络规划拓扑图: 步骤: 1、创建linux客户端Web网站(go语言),实现Web服…

RS485远传电表有哪些功能?

RS485远传电表是一种具有远程传输功能的电表,可以通过RS485接口进行数据传输。它主要用于远程测量电能消耗、监测电力质量和实时控制电力负载等方面。 RS485远传电表具有多种功能,如: 1.远程测量电能消耗:RS485远传电表可以通过远…

Fiddler网络调试器,抓包工具供大家学习研究参考

Fiddler 是一个 http 协议调试代{过}{滤}理工具,它能够记录并检查所有你的电脑和互联网之间的 http 通讯,设置断 点,查看所有的“进出”Fiddler 的数据(指 cookiehtmljscss等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为…

SQlite3数据库相关相关命令

目录 1)系统命令 以 . 开头2)sql语句 以 ;结尾1. 创建表格2. 插入数据3. 查看数据库记录4. 删除信息5. 更新数据6. 增加一列7. 删除一列 (sqlite3 不支持直接删除一列) 3)sqlite3 数据库 C语言 API1. 打开数据库2. 关闭…

C\C++ 使用socket判断ip是否能连通

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; 使用socket判断ip是否能联通 效果&#xff1a; 代码&#xff1a; #include <iostream> #include <cstdlib> #include <cstdio> #include &…

【产品设计】功能型小程序的前后台原型设计

最近公司基于目前招聘兼职老师的流程做了一款小程序。之所以选择做小程序的原因&#xff0c;一方面是因为项目功能比较简单&#xff0c;没必要开发一款独立的APP&#xff1b;另一方面是因为小程序开发起来比较方便&#xff0c;节约开发成本&#xff0c;用户使用起来也比较方便。…

JavaScript中的JSON

一&#xff1a;分类  简单值&#xff1a;字符串、数值、布尔值和 null 可以在 JSON 中出现&#xff0c;就像在 JavaScript 中一样。特殊 值 undefined 不可以。 对象&#xff1a;第一种复杂数据类型&#xff0c;对象表示有序键/值对。每个值可以是简单值&#xff0c;也可以…

STM32F4_FLASH模拟EEPROM

目录 前言 1. 内部FLASH简介 2. 内部FLASH写入过程 3. 内部FLASH库函数 4. FLASH的读写保护及解除 5. FLASH相关寄存器 6. 实验程序 6.1 main.c 6.2 STMFlash.c 6.3 STMFlash.h 前言 STM32F4本身并没有自带EEPROM&#xff0c;但是STM32F4具有IAP功能&#xff0c;也就…