Linux的有关权限的学习

2024-05-04 10:52
文章标签 linux 权限 学习

本文主要是介绍Linux的有关权限的学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.认识权限在Linux中的表示

在Linux中,一切皆文件,而每个文件都会有其相对应的操作权限。那么,我们该怎么来认识他们呢?

首先我们可以看到,在每个test文件的前面都会有一个-rw-r--r--这个字符,而这个字符,就是表示这文件的权限。那他是怎么表示的呢?

从第一个-(这个-代表普通文件)算起,他后面的9个字符可以按三三分开,分别是r w -r - -r - -

他们代表着什么意思呢?

r:表示"可读"

w:表示"可写"

x:表示"可执行"

可是这上面也没有"x"这个字符的出现呀。这就得继续研究下去了。

在上面的字符按三三分开中,我们就拿第一组三个来举例。第一组的三个字符分别是r   w   -,如果说第一个字符是可读的,那他那里就表示为"r",否则是"-";如果第二个字符表示的是可写的,拿他那里就表示为"w",否则是"-";如果第三个字符表示可执行的,那么那个地方就是"x",否则是"-"。

到这里,我们已经能大概能看懂文件的权限了。那他一个文件,为什么会出现那么多个w和r呢?为什么会按照三三来分组?

三三分组中的第一组的所属者是"user";第二组的所属者是"group",第三组的所属者是"other"。因而又可以读成user的权限是rw-,group的权限是r--,other的权限是r--。

2.权限的修改

我们已经读懂了文件前面的权限,那么我们不妨可以尝试以下修改文件的权限。

修改权限用到一条指令,这条指令叫做"chmod"

1.第一种修改方式

还是这个图,如果我下给test1.txt的user添加一个"可执行"的权限该怎么做?

指令:chmod u+x test1.txt

我们可以看到,对比修改之前的test1,这里已经给test1加上了"x"的权限。那么由此我们可以得出其它的添加权限或者删掉权限的方法。

给group添加"w"权限。

给other添加"w"和"x"权限。

给other去掉rwx权限。

让所有的所属者去掉所有权限。

2.第二种修改方式

在了解第二种修改方式之前,首先来了解一下权限的二进制形式。

还是按照三三分组,如果在某个字符上有"r" / "w" / "x",则表示为1,否则为0。

因此在框里面的就可以表示为110-110-110,转化成十进制则是6-6-6,这就可以根据输入的数字来进行修改权限了,比较复杂一点,但实用性也是非常高的。

给test1.txt的所有所属者都加上了rw的权限。

给test1.txt的所有所属者加上了rwx的权限。

3.对于文件创建时默认的权限差异

我们在创建目录和普通文件的时候,都会发现前面的权限是不一样的。

这是为什么?

在创建目录和文件的时候,他都会有一个默认的权限是放开的,创建的普通文件,他的默认权限是666,创建一个目录,他的默认权限是777。

而还有一个东西叫做umask,不同的机器的umask是不一样的。这个在最终生成的默认权限中起到了举足轻重的作用。

我们知道,创建一个普通文件,他的默认权限是666,创建一个目录,他的默认权限是777。那对应的写成二进制形式就是110 110 110(这里以普通文件为例),而这边的umask值是0002,转成二进制就是010,给前面补上0就是,000 000 010。

权限的计算方法就是创建的默认权限&(~umask)的值

这篇关于Linux的有关权限的学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959035

相关文章

tabhost学习精要

今天学习了 tabhost类   1.系统自动添加了 相对布局的代码  我们在视图布局中 在composite中直接拖动tabhost到界面上 2.把相对布局的命名空间复制粘贴到tabhost,把tabhost中的关于相对布局的代码删掉,再删除顶部的相对布局的代码和底部的标签,让tabhost直接做布局,(也可以在空布局中添加tabhost 但是会自动添加的代码很少)。此时会报告

Linux脚本重定向

Shell中可能经常能看到:>/dev/null  2>&1  eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null 命令的结果可以通过%>的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/1

Linux下网卡开机自动加载

新安装的虚拟机发现自动起不了网卡接口,每次启动都要 # ifup ens33 则比较麻烦,将下面eht1改成自己的网卡名称的文件修改即可 编辑/etc/sysconfig/network-scripts/ifcfg-eth1 ONBOOT=yes

Linux删除大文件rm -rf的问题

请几天,我删除系统汇总的大文件,大约100G左右,当我使用rm -rf  xxxx.log删除后,使用df -h发现空间并未释放。 一开始以为是由于磁盘虚拟挂载,导致我删除的文件并不是当前目录的文件。但后来发现并不是。 我在网络上搜索发现都是  要: lsof | grep delete kill -9 xxx 但是我觉得这样不安全。 比如文件被进程锁定,或者有进程一直在向这个文件写数

2、swift学习-创建基本的控件

与OC想比较而已,其实用swift创建一些基本控件的方法都是一样的,一些基本的属性都是大同小异,只是语法稍稍不同而已,对于刚刚由OC开始学习swift的可能有点不太习惯,但是没关系,多写多练自然而然就会顺手的。 一、用swift创建一个UILabel func createLabel() {         let label = UILabel (frame: CGRect

1、swift学习-字典的基本使用

1、创建一个字典          var dic:Dictionary<String,String> = ["三国演艺":"罗贯中","水浒传":"施耐庵","红楼梦":"曹雪芹","西游记":"吴承恩"]; 2、打印字典的值     println(dic);     结果如下图:      3、访问字典中某一个键值     var

Swift学习 字符串的操作 2022年11月更新

Swift 字符串的使用 Swift 字符串是一系列字符的集合。例如 “Hello, World!” 这样的有序的字符类型的值的集合,它的数据类型为 String 一、基本使用 1.1字符串的拼接 let str1 = "Hello"let str2 = "World"let str3 = str1 + str2print(str3); 1.2 字符串的插入 for index

iOS 学习资源

一、个人博客 1、刚刚在线 2、浅谈iOS开发中方法延迟执行的几种方式 3、MBProgressHUD 4、MJRefresh 5、AFNetworking 6、iOS数据持久化 7、iOS微信支付 二、常用的开发平台地址 1、银联支付开发平台

SpringBoot 学习六:数据库的增删改查

1、新建一个Girl类,添加如下代码: package controlle;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Girl {@Id@GeneratedValueprivate Integer

SpringBoot 学习五:连接数据库

1、在pom.xml需要添加与数据库相关的两个依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>my