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

linux文件的权限

前言

在linux操作系统中,账户分为两类,一类是普通用户,一类是超级用户,普通用户在许多方面受权限约束,而超级用户几乎不受约束。

root账户和普通账户的切换

有三种方式能够切换账号

su

su 直接使用,会弹出password(一般只有password,后面不跟for用户名,那登陆的就是root账号),直接输入root账号密码,就可以成功登陆root帐号了。

su这个指令的登陆root账号只是将身份换了一下,所在的目录时不会变化的。

ctrl d返回登陆前的普通账户。

su 用户名

在su后面加上用户名可以指定普通用户,需要注意的是:

root账户切换到普通账户不需要输入密码,直接就可以切换。

普通账户切换到普通账户需要输入想要登陆的账户的密码。

su - 

su -直接使用,会弹出password(一般只有password,后面不跟for用户名,那登陆的就是root账号),直接输入root账号密码,就可以成功登陆root帐号了。

su -这个指令的登陆root账号会直接将目录切换到root账号的家目录。

ctrl d返回登陆前的普通账户。

sudo

sudo 指令/可执行文件 

sudo是一个一次性的,在执行这个指令或者文件时,拥有root的权限,第一次使用需要输入登陆时的普通账户的密码,之后的一段时间都不需要再次输入。

但是默认普通用户是无法使用sudo的,因为系统并不信任这个账户,需要将该用户的信息放到一个文件里面,才能使用sudo

/etc/sudoers

 这个文件只能用root账号打开

打开账号

找到allow开头的这一行。

复制一行

root    ALL=(ALL)       ALL

lyt   ALL=(ALL)       ALL
将root改成用户的用户名就行。

文件的属性 

文件的类型

一排就代表着一个文件的属性

圈出来的 部分是文件的类型。

d是目录文件  

-是普通文件

文件的权限

root账号并不被这些权限约束

用绿色的框框圈起来的表示的就是文件的权限。

权限分为三种:

r:可读权限

w:可写权限

x:可执行权限

-:没有对应的权限

rwx的位置都是固定的

这三种权限又被分为了三组:

第一组代表的是文件拥有者user所拥有的权限

第二组代表的是文件所属组group成员所拥有的权限

第三组代表其他账户other所拥有的权限

可读权限 

在目录文件和普通文件下,每种权限都会有些不一样

普通文件:

普通文件的可读权限可以让用户打开这个文件查看里面的内容

目录文件:

目录文件的可读权限可以查看这个目录文件下有哪些文件

可写权限

普通文件:

普通文件的可写权限可以让用户打开这个文件对里面的内容进行修改。

目录文件:

目录文件的可写权限可以让用户在该目录下创建和删除以及更改文件。

可执行权限

普通文件 :

普通文件的可执行权限可以让用户使用gcc等编译器对该文件进行编译

目录文件:
目录文件的可执行权限可以让用户进入该目录文件

文件的权限修改

文件的修改需要用到一个指令chmod 

格式 chomd 修改权限 目标文件

chmod修该权限有两种方法

例1:

chmod u+rwx,g+rwx,o+rwx 目标文件

chmod a+rwx 目标文件

u表示拥有者的权限,g表示所属组的权限,o表示其他人的权限。

+ 表示加上权限

- 表示减去权限

a 是all 一次性修改拥有者,所属组和其他人的权限。

例2:

chmod 777 目标文件

这三个数是八进制数

第一个数代表着拥有者的权限

第二个数代表着所属组的权限

第三个数代表着其他人的权限

将一个7的八进制数分解为二进制:

111

可以看到是三个二进制,刚好可以对应三个权限。第一个二进制是读权限,第二个二进制是写权限,第三个二进制数是执行权限,1表示的就是拥有对应的权限,也就是说,拥有者和所属组以及其他人的权限也可以这样对应,所有就可以用三个八进制数来控制对应的权限。

粘滞位

在linux当中,一个用户是不能到另一个用户的家目录里面去的,也无法看到里面的内容,因为每一个用户的家目录只对于该用户 有读写执行的权限。

如果想要用户之间进行交互,可以在根目录建立一个任何人都有读写执行权限的共享目录。

但由于该目录所有人都有读写执行的权限,所以任何人都可以删除其他人建立的文件,因为文件的删除权限不由该文件决定,而是由该文件所在的目录决定。

这个时候就可以对这个目录文件加上粘滞位,粘滞位只能加在目录上。

 

用chmod指令给该文件的other加上了粘滞位,粘滞位是一种特殊的可执行权限,可以让该目录文件下的文件只能被自己的拥有者所删除。 

文件拥有者与所属组的更改的更改

 更改文件拥有者和所属组需要用到root权限和chown指令

格式:

chown 新拥有者:新所属组 目标文件

文件的初始权限

普通文件默认权限:664

目录文件默认权限:775

实际上这并非这两种文件最开始的权限,文件权限会被umask(权限掩码)处理

 直接输入umask就可以看到这样的一串八进制的数,第一个0是表明这个数是一个八进制数,后面的三个数分别对应着,user权限,group权限,other权限。创建文件时,在umask当中出现的权限会被去掉,所以普通文件和目录文件最开始的权限应该是:666 和 777.

umask是通过一个运算将对应权限取消的

最终权限 = 初始权限&(~umask)~是取反

最终权限是初始权限和umask这两个八进制数转换成二进制数,再将umask按位取反,两个数&之后的结果

例:

666展开为二进制

110110110

002展开为二进制

000000010

取反

111111101

&:

110110110&

111111101=

110110100.

将110110100转为8进制:

664

修改umask

umask 0三个八进制数字

例:

umask 0484 

 文件名的后缀

在linux操作系统中,并不在乎文件的后缀名,因为文件的类型和权限跟后缀名无关,分辨文件靠文件开头的字符,权限也由权限属性显示。

虽然linux操作系统并不在乎文件的后缀名,但是搭载在linux操作系统上gcc这样的编译器是在乎的,用gcc编译一个文件,即便该文件有对应的可执行程序,但没有.c作为后缀,就是无法对该文件进行编译。


http://www.kler.cn/news/368569.html

相关文章:

  • 【读书笔记·VLSI电路设计方法解密】问题28:什么是芯片可靠性
  • C++ | Leetcode C++题解之第516题最长回文子序列
  • 【C++】Map()函数
  • C++算法练习-day15——1.两数之和
  • 多线程——线程安全的集合类
  • JCSA-Journal of Consumer Affairs
  • RabbitMq-队列交换机绑定关系优化为枚举注册
  • 使用 telnet 连接 dubbo 服务调用暴露的 dubbo 接口
  • HTML,CSS,JavaScript三件套
  • git命令报错:fatal: not a git repository (or any of the parent directories): .git
  • ELK日志分析系统部署
  • oneApi中,渠道 M3E配置
  • Redis学习文档(Redis基本数据类型【Hash、Set】)
  • MATLAB代码优化
  • 合合信息智能文档处理百宝箱:强力驱动,加速文档类应用研发进程
  • [MySQL#0] 详解如何在 Linux 上安装 MySQL | 常见登录问题
  • 《陕西师范大学学报(自然科学版)》
  • 通过一个具体的场景来理解SSTable的工作原理。
  • 算法的学习笔记—左旋转字符串(牛客JZ58)
  • react antd批量导入的formData传参在beforeUpload、onChange事件中获取文件内容
  • ARM嵌入式学习--第六天(电子电路基础知识)
  • Docker:4、龙晰(Anolis OS 8.8)宝塔面板安装
  • 多线程进阶(一):锁策略 锁升级 锁消除 锁粗化 CAS
  • 导出Git提交记录
  • 【论文阅读】Learning persistent homology of3D point clouds
  • 【华为HCIP实战课程二十五】中间到中间系统协议IS-IS配置实战续系统ID区域ID,网络工程师