目录

一、文件权限简介

二、利用特殊权限实现普通用户通过 VSCode 远程调试

三、默认文件和目录权限


一、文件权限简介

当我们使用ll或ls查看某个文件或者目录的信息时,第一列就会显示出它的权限设置,一共有十个字符,

第1个字符用来表示文件类型,目录是d,链接是l,普通文件是-;接下来的 9 个字符,3个为一组,共三组,分别表示文件所有组,文件所有者所在的群组成员,其他成员的权限,其中权限有三种:r、w、x分别代表读、写、执行。如果是用数字表示,对应的值分别为4,2,1;

假如文件权限为:-rwx rwx rwx,转换为八进制值为777。

对于普通文件来说,每种权限对应的操作:

权限

文件

目录

r

可以读取文件内容

可以显示出目录的内容

w

可以修改文件内容

可以新增、删除目录下的文件

x

可以执行文件

可以进入目录

可以使用chown(修改所有者)、chgrp(修改所属组)、chmod(修改文件权限)来修改文件或者目录的权限。

二、利用特殊权限实现普通用户通过VSCode远程调试

其中还有一些特殊权限:比如chmod +s,可以在文件执行时把进程的属主或组ID置为该文件的文件属主。

在使用VSCode调试远程代码时,需要使用到 /usr/bin/gdb,但是一般VSCode使用普通用户打开了文件目录,所以在调试时,就会报错权限不足,网上搜到的解决方法有:

1、在自己目录下新建个shell脚本,内容为:

#!/bin/sh sudo /usr/bin/gdb "$@"

但是需要输入密码,如果配置了免密登录,这个会直接报错,读取密码错误;

2、修改/etc/sudoers文件,在里面配置普通用户(vscode远程连接的用户)免密码,但是我试了后也没有生效;

3、最终的解决办法是 sudo chmod +s /usr/bin/gdb

这样普通用户执行/usr/bin/gdb时,就会成为该可执行文件的所有者,从而具有可执行权限。

三、默认文件和目录权限

Linux 平台下文件的最大权限是666(-rw-rw-rw-), 文件夹的最大权限是777(-rwxrwxrwx)

当我们新建一个目录或者文件时,j假设我们设置的新建文件权限为666(mode)真正创建出来的文件或者文件夹权限是通过mode & ~umask得到的。

umask是用来设置限制文件权限的掩码,在Linux下直接使用umask命令可以查看当前用户的掩码值。

默认普通用户umask值为0002(-----w-),也就是会去掉其他用户的写权限。

root用户umask值为0022,也就是会去掉本组用户和其他用户的写权限。

测试代码如下:

#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>int main() {//umask(0);  //将umask值设置为0000,实际创建的文件权限即为下面的mode值// 438为十进制的666,两者都可以if (open("/home/yang/workspace/other/file.txt", O_WRONLY | O_APPEND | O_CREAT,438) < 0) {printf("文件创建失败!\n");}return 0;
}

代码执行后的结果:

-rw-rw-r-- 1 yang yang 0 Jun 8 11:49 ./file.txt

此时其他用户就是不可写的,如果想要把文件改为其他用户也可写,需要把umask(0)加上。

-rw-rw-rw- 1 yang yang 0 Jun 8 11:52 ./file.txt

Linux 目录和文件权限总结相关推荐

  1. Linux目录以及文件权限理解

    了解Linux系统目录/文件权限结构 利用ls -al 命令可以列出详细的文件以及隐藏文件的权限,显示详细时间信息可以用ls -al --full-time 以.bash_history文件为例:-r ...

  2. Linux目录下文件权限怎么改成777,linux修改文件夹-文件目录权限

    Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何修改Linux文件-文件夹权限.以主文件夹下的一个名 ...

  3. linux 目录及文件权限 000 444 666 777

    1 [001] 执行权限 x 2 [010] 只写权限 w 4 [100] 只读权限 r sudo chmod 600 ××× (只有所有者有读和写的权限) sudo chmod 644 ××× (所 ...

  4. 深入理解Linux中的文件权限

    Linux中文件权限 Linux中每个文件都有一个特定的拥有者(一般是创建它的用户)和所属用户组,这是它的固有属性.文件可以利用这两个固有属性来规定它的拥有者或者是所属用户组内的用户是否拥有对它的访问 ...

  5. Linux基础之文件权限详解

    Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置. Linux中的文件权限是什么? 如何查看Li ...

  6. linux编程参数列表,Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)...

    一. 概述 linux安全系统的核心是用户账户. 创建用户时会分配用户ID(UID). UID是唯一的,但在登录系统时不是用UID,而是用登录名.在讲文件权限之之前,先了解下linux是怎样处理用户账 ...

  7. linux权限源码分析,Linux基础之文件权限详解

    Linux中对于权限的制定虽然没有Windows的那么精细,但是如果你了解并掌握Linux中文件的权限知识,也可以像Windows那样对权限做到精确配置. Linux中的文件权限是什么? 如何查看Li ...

  8. linux 文件权限 rwt,Linux下修改文件权限(所有权)

    Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要:每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other) 用户(u)是文件的 ...

  9. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...

    在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...

最新文章

  1. 独家 | 一文读懂Apache Flink技术
  2. 主程序与子程序不在同一程序模块中_深度解析S7200系列PLC带参数子程序用法
  3. WebRTC / Jitsi / 架构
  4. OpenGL tessellatedcube棋盘格立方体的实例
  5. 移动短信回执怎么开通_才知道移动积分需要主动开通功能,才会消费产生积分,垃圾!!!...
  6. Apache 别名与重定向
  7. tomcat下面的starup.bat的作用
  8. 4600u黑苹果 r5_黑苹果台式机机型选择指导
  9. php 类 抽象方法,「php抽象类和抽象方法」- 海风纷飞Blog
  10. 数码相册的实现(手势切换图片,用链表加快效率,jpeg解码)
  11. 《那些年啊,那些事——一个程序员的奋斗史》——101
  12. 新旧骗术揭秘:防止5G时代的电信诈骗
  13. 快手短视频产品分析报告-小白文
  14. 天载优配提示商场存在两方面的问题
  15. 【秋招面经】之神策数据
  16. 引起进程创建的事件有哪些?
  17. php获取linux服务器CPU、内存、硬盘使用率的实现代码
  18. cmd窗口中的复制和粘贴快捷键
  19. Kerberoast
  20. upload-labs(1~3关)

热门文章

  1. 微众银行重视用户体验 完善消费者权益保护体系
  2. linux开启端口,linux配置端口,Linux关闭端口
  3. ora12541TNS:listener does not currently know of service requested in connect
  4. Grid布局简单上手
  5. C# 定时任务之windows任务计划程序
  6. wangeditor ajax,laravel 中 wangEditor 富文本编辑器使用指南
  7. 【读书笔记】《月亮与六便士》- [英] 威廉·萨默塞特·毛姆 - 1919年出版
  8. 图片的1px间隙、字间距、文字竖排 _CSS
  9. 把握现在,畅享人生!
  10. 安装 Win10+GTX1050ti+cuda8.0+cuDNN v7.1.4