Linux文件的权限
Linux文件的权限
- Linux文件属性
- 文件种类
- 文件类型权限
- 修改文件属性
- chgrp
- chownd
- 修改权限chomod
- 数字类型修改文件权限(chomod)
- 通过字符修改权限(chomod)
- 权限的意义
- 权限对文件的重要性
- 权限对目录的重要性
Linux文件属性
ls -al可以查看文件的所有详细信息
那么这些分别代表什么含义呢
文件种类
那么第一个 - 代表什么呢
这里linux文件又分为7种文件
- 常规文件(regular file)
: 一般的常规文件就用-来表示,常规文件又分为纯文本文件、二进制文件、数据文件等。
纯文本文件就是我们可以看的懂内容的文件,二进制文件就是linux当中的可执行文件,数据文件是:有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件就称为数据文件
d 目录文件(directory)
: 目录文件用 d 来表示。
l 链接文件(link)
: 链接文件用 l 表示,就是类似Windows系统的快捷方式。
设备与设备文件(device)系统周边及储存等相关的一系列文件,通常都集中在/dev这个目录之下,通常又分为两种:区块设备文件、字符设备文件。
b 区块设备文件(block)
: 就是一些存储数据,以提供系统随机随机存取的接口设备,比如硬盘和软盘等。你可以随机访问硬盘的不同区块读写,这种设备就是块设备。可以看一下/dev/sda,会发现他的属性为b
c 字符设备文件(character)
:字符设备文件用 c 表示,是一些串行端口的设备,例如键盘,鼠标等,这些设备的特色就是一次性读取不能截断输出。举例来说,你不可能让鼠标跳到另一个画面,而是连续性的滑动到另一个地方。
s 数据接口文件(sockets)
:数据接口文件用 s 表示,既然被称为数据接口文件,这种类型的文件通常在网络上用来进行数据交换,我们可以启动一个程序来监听客户端的要求,而客户端就可以通过这个socket来进行数据的沟通了。一般在/run或者/tmp文件看到这类文件。
数据输送文件(管道文件)(FIFO,pipe)
: 管道文件用p来表示。FIFO也是一种特殊的文件类型,他的主要目的是解决多个程序同时读取同一个文件错误问题,FIFO时(first-insert-firrst-out)的缩写,即管道。
文件类型权限
-rwxrwxrwx 1 gec gec 10240 Jul 2 22:56 1.c
1.c该文件的类型权限为 rwxrwxrwx, 我们以3个为一组,rwx rwx rwx,r
代表可读,
w
代表可写,x
代表可执行,这三个权限的位置不会变,如果没有该权限的话,,就会用 -
来代替。
eg1:
若有一个文件的类型权限为-rwxr-xr--
,其寓意是什么?
- rwx r-x r--
1 234 567 890
#我们将这10个字符标号
1 -
代表该文件类型为普通文件
234 rwx
为拥有者的权限,为可读可写可执行
567r-x
为同用户组的权限,为可读可执行
890 r--
为其他用户权限,为可读
eg2:
假设test1、test2、test3同属于testgroup这个用户组中,如果有以下两个文件,说明文件的权限。
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 test1 testgroup 5238 Jun 18 17:24 ping_tsai
答:文件test.txt的文件所有者 root ,所属组为root,权限方面只有root可读可写,其他只可以进行读
ping_tsai拥有者为test1,所属组为testgroup,test1可读可写可执行,同用户组的test2、test3两个人仅可读、可执行,但是不能写(也就是不能修改),只要有r
和x
这两个属性就可以访问或者进入到这个文件或者目录;至于其他人仅仅只有可读权限。
修改文件属性
chgrp
:修改文件所属用户组
chown
: 修改文件拥有者
chmod
:修改文件的权限,SUID、SGID、SBIT等特性#
chgrp
chgrp就是change group的缩写。
选项
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或–quiet或——silent:不显示错误信息;
-h或–no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
–reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
例子1:
例子2
chownd
chown为change owner的缩写,也就是修改文件拥有者。
选项
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或–quite或——silent:不显示错误信息;
-h或–no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
–dereference:效果和“-h”参数相同;
–help:在线帮助;
–reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
–version:显示版本信息。
sudo chow jack1 1.c
sudo chow jack1 -R d1
tips:chown不仅可以改用户拥有者也可以改变用户所属组。
chown 账号名称:用户所属组名称 文件或者目录
sudo chown jack1:jack 1.c
那么我们知道怎么修改用户所属组和用户拥有者了,那么一般在什么情况下使用呢?
比如在拷贝文件的时候
cp 源文件 目标文件
当前用户为gec,我们在cp文件的时候,会复制执行者的属性与权限,所以如果我们想将文件复制给jack1这个所属组不为gec的其他人,他还是不能修改该文件,所以这时候就需要修改文件属性了。
修改权限chomod
chmod 修改用户权限我们有两种方法,我们可以通过数字或者是符号来进行权限的修改。
数字类型修改文件权限(chomod)
Linux文件的基本权限有9个,分别是拥有者(owner)、所属用户组(group)、其他人(others)三种身份各自有自己的读(read)、写(write)、执行(execute)权限。
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
如果将test_gec.txt的所有权限开启
chmod 777 test_gec.txt
通过字符修改权限(chomod)
选项
u符号代表当前用户。
g
符号代表和当前用户在同一个组的用户(group),以下简称所属用户组。
o
符号代表其他用户(others)。
a
符号代表所有用户(all)。
X
符号代表如果目标文件是可执行文件或目录(execute),可给其设置可执行权限。
s
符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置所属用户组ID位。
t
符号代表只有目录或文件的所有者才可以删除目录下的文件。
+
符号代表添加目标用户相应的权限。
-
符号代表删除目标用户相应的权限。
=
符号代表添加目标用户相应的权限,删除未提到的权限。
# 添加所属用户组的写权限。
chmod g+w ./test.log# 删除其他用户的所有权限。
chmod o= ./test.log# 使得所有用户都没有写权限。
chmod a-w ./test.log# 当前用户具有所有权限,所属用户组有读写权限,其他用户只有读权限。
chmod u=rwx, g=rw, o=r ./test.log# 将目录以及目录下的文件都设置为所有用户拥有读写权限。
# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!
chmod -R a=rw ./testdir/# 根据其他文件的权限设置文件权限。
chmod --reference=./1.log ./test.log
权限的意义
权限对文件的重要性
r
:可读取文件见的实际内容
w
:可以编辑、新增、修改、文件内容**(但是不可以删除该文件文件)**
x
该文件具有可以被系统执行的权限
对于r
来说比较好理解,x
可执行在windows中判断一个文件是否有执行能力是借用扩展名来判断的,如:.exe,.bat,.com等。但是在linux下,文件是否能执行是判断是否具有x
这个权限来决定的。和文件名字是没有绝对关系的。
对于这个w
权限对一个文件来说你拥有w
权限你可以对该文件进行写入、编辑、新增、修改,但是不能删除
例如:
权限对目录的重要性
文件是存放实际数据的文件,目录文件的主要内容是记录文件名列表,文件名与目录有强烈的关联。
r
表示具有读取目录结构内容的权限,所以当你读取一个目录文件夹的时候,表示你具有查询该目录下的文件名数据,所以你可以利用ls这个命令将该目录的内容列表显示出来。
w
表示你具有改动该目录结构的权限,也就是下面这些权限:
- 建立新的文件夹与目录;
- 删除已经存在的文件夹与目录;(无论该文件的权限是什么);
- 将已经存在的文件或目录进行更名;
x
目录的x代表执行,目录的x代表的是用户是否能进入该目录成为工作目录的用途,所谓的工作目录就是你目前所在的目录。
例如: