Linux文件权限与命令

一、Linux权限介绍

在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。

可以通过以下三种方式限制方位权限:

  • 只用户自己访问:

  • 允许一个预先指定的用户组中的用户访问

  • 允许系统中的任何用户访问

同时,用户能够控制一个文件或目录的访问程度,一个文件或目录可能有读、写以及执行权限;当创建一个文件时,系统会自动赋予文件的所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。

每一个用户都有它自身的读、写和执行权限。

  • 第一套权限控制访问自己的文件权限,即所有者权限。

  • 第二套权限控制用户组访问其中一个用户的文件的权限。

  • 第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。

有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。

所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。

查看文件权限:ls -l file

bash-3.2# ls -l test.html 
-rw-r--r--  1 tongkun  staff  208 12 26 21:18 test.html

说明:

  • 横线代表空许可

  • r代表只读

  • w代表写

  • x代表可执行

注意这里有10个位置,第一个字符制定文件类型。如果第一个字符是横线,表示一个非目录文件,如果是d,表示是一个目录。

-rw-r–r– 说明:

test.html是一个普通文件,对属主有读写权限,对属同组用户有只读权限,对其他用户有只读权限。

二、使用chmod的字母和数字改变文件或目录的访问权限

  • chmod命令用于改变文件活目录的访问权限

  • chmod有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

1. 文字设定法

chmod [who] [+ | – | =] [mode] 文件名

命令中各选项的含义是:

  • u 表示用户(user),即文件和目录的所有者

  • g 表示同组用户(group),即与文件属主有相同id的所有用户

  • o 表示其他用户

  • a 表示所有用户,他是系统的默认值

操作符:

  • + 添加某个权限

  • – 取消某个权限

  • = 赋予给定权限并取消其他所有权限(如果有的话)

mode所表示的权限可用于下注字符的任意组合:

  • r 可读

  • w 可写

  • x 可执行

  • X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

  • s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

  • t 保存程序的文本到交换设备上。

  • u 与文件属主拥有一样的权限。

  • g 与和文件属主同组的用户拥有一样的权限。

  • o 与其他用户拥有一样的权限。

文件名:以空格分开的要改变权限的文件列表,支持通配符。

在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example

2. 数字设定法

用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

数字设定法的一般形式为:

chmod [mode] 文件名¼

文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。

  • r:对应数值4

  • w:对应数值2

  • x:对应数值1

  • -:对应数值0

只是包rwx看成二进制数。有则1表示,无则0表示。所以 -rwx r-x r–则表示为111 101 100 十进制数为754

自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行

那么,我们先根据上表得到权限串为:rw-rw-r–,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:

例如,我们想让a.txt这个文件的权限为:

自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行

那么,我们先根据上表得到权限串为:rw-rw-r–,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:

chmod 644 a.txt

如果一个文件的权限全部放开,则权限数字即为 777

chmod 777 a.txt

如果想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。

chomd -R 777 /Hexo

则Hexo目录下所有文件对所有用户授予读写和执行的权限。

三、是用chown更改文件的拥有者权限

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

命令说明

1.命令格式:

chown [选项]… 所有者] 文件…

2.命令功能:

通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

3.命令参数:

必要参数:

  • -c 显示更改的部分的信息

  • -f 忽略错误信息

  • -h 修复符号链接

  • -R 处理指定目录以及其子目录下的所有文件

  • -v 显示详细的处理信息

  • -deference 作用于符号链接的指向,而不是链接文件本身

选择参数:

  • –reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

  • –from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变

  • –help 显示帮助信息

  • –version 显示版本信息

命令实例

实例1. 改变拥有者和群组

命令:chown tongkun:everyone Mysql日志分析.md
说明:更改拥有者为tongkun, 群组为everyone群组

实例2. 更改目录的拥有者和群组

命令:chown -R tongkun:everyone dir
说明:更改目录以及子目录子文件的拥有者和群组

    原文作者:在路上
    原文地址: https://segmentfault.com/a/1190000008227439
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞