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快速入门教程
Mar 31 Servers
本地通过nginx配置反向代理的全过程记录
Mar 31 Servers
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
Nginx域名转发使用场景代码实例
Mar 31 Servers
nginx location优先级的深入讲解
Mar 31 Servers
Nginx URL重写rewrite机制原理及使用实例
Apr 01 Servers
nginx配置文件使用环境变量的操作方法
Jun 02 Servers
Nginx中使用Lua脚本与图片的缩略图处理的实现
Mar 18 Servers
Nginx的gzip相关介绍
May 11 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 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/09/05 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
js使用心得分享
2015/01/13 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python装饰器基础详解
2016/03/09 Python
python使用fork实现守护进程的方法
2017/11/16 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
应届生人事助理求职信
2013/11/09 职场文书
大学生村官典型材料
2014/01/12 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
消费者投诉书范文
2015/07/02 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python