Linux中文件的基本属性介绍


Posted in Servers onJune 01, 2022

一、查看文件属性和权限

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。

每个文件的属性由左边第一部分的10个字符来确定(如下图)。

Linux中文件的基本属性介绍

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

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

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

从左至右用0-9这些数字来表示。

  • 第0位确定文件类型,
  • 第1-3位确定属主(该文件的所有者owner)拥有该文件的权限。
  • 第4-6位确定属组(所有者的同组用户group)拥有该文件的权限,
  • 第7-9位确定其他用户others拥有该文件的权限。
  • 其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
  • 第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
  • 第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

二、Linux文件属主和属组

[root@www /]# ls -l
total 64
drwxr-xr-x 2 root  root  4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

对于 root 用户来说,一般情况下,文件的权限对其不起作用。

三、更改文件属性

1、chgrp:更改文件属组

chgrp [-R] 属组名 文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

1、使用数字格式改变文件权限

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

2、使用符号格式改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • (1)user
  • (2)group
  • (3)others

那么我们就可以使用 u, g, o 来代表三种身份的权限!

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod     u/g/o/a          +(加入)/-(除去)/=(设定)         r/w/x        文件或目录

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

#  touch test1    // 创建 test1 文件
# ls -al test1    // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

到此这篇关于Linux文件基本属性的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Servers 相关文章推荐
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
nginx配置proxy_pass中url末尾带/与不带/的区别详解
Mar 31 Servers
扩展多台相同的Web服务器
Apr 01 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
详解nginx location指令
Jan 18 Servers
配置Kubernetes外网访问集群
Mar 31 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
Nginx限流和黑名单配置
May 20 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
git中cherry-pick命令的使用教程
Jun 25 Servers
windows server2016安装oracle 11g的图文教程
Jul 15 Servers
Linux在两个服务器直接传文件的操作方法
Aug 05 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 #Servers
阿里云服务器部署RabbitMQ集群的详细教程
Nginx本地配置SSL访问的实例教程
May 30 #Servers
nginx设置资源请求目录的方式详解
May 30 #Servers
使用Nginx+Tomcat实现负载均衡的全过程
May 30 #Servers
讨论nginx location 顺序问题
May 30 #Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 #Servers
You might like
删除数组元素实用的PHP数组函数
2008/08/18 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python实现猜单词小游戏
2020/05/22 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python调用服务接口的实例
2019/01/03 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
最新pycharm安装教程
2020/11/18 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
先进事迹报告会主持词
2014/04/02 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书