第三章、文件权限

文中有借鉴鸟哥的部分内容,然后加上了自己的一些理解。

一、文件权限的基本认识

[[email protected] ~]# ls -al
total 48
dr-xr-x---. 5    root     root   4096  May 29 16:08 .
dr-xr-xr-x. 17    root    root    4096  May  417:56 ..
-rw-------. 1    root     root   1816  May  4 17:57 anaconda-ks.cfg
-rw-------. 1    root     root    927  Jun  2 11:27 .bash_history
-rw-r--r--. 1    root     root     18  Dec 29  2013 .bash_logout
-rw-r--r--. 1    root     root    176  Dec 29  2013 .bash_profile
-rw-r--r--. 1    root     root    176  Dec 29  2013 .bashrc
drwxr-xr-x. 3    root     root     17  May  6 00:14 .config
drwx------. 3    root     root     24  May  4 17:59 .dbus
-rw-r--r--. 1    root     root   1864  May  4 18:01 initial-setup-ks.cfg

第一部分:文件的类型和权限

第一个字符代表文件类型:

当为[ - ]代表为普通文件,分为3类

纯文字文件(ASCII):linux系统最多的文件类型,用cat可以查看内容

二进制文件(binary):系统仅认识且可以执行的二进制文件,shell scripts不算,cat是

数据文件(date):程序运行过程读取文件,比如/var/log/wtmp可以用last查看,但是cat为乱码

当为[ d ]代表为目录

当为[ l ]代表为链接文件(symboliclink file)

当为[ b ]代表为块设备文件(block)

硬盘和光盘等随即存储的设备

当为[ c ]代表为字符设备文件(character)

鼠标键盘等串行设备

当为[ p ]代表为命名管道文件(pipe)

当为[ s ]代表为套接字文件(socket)

之后的九个字符代表文件权限:

rwxrwxrwx三位一组分别代表拥有者,同组,其他人权限

第二部分:文件的硬链接数

文件默认为1

目录默认为2

第三部分:拥有者

第四部分:拥有组所属的组

第五部分:文件大小

单位为bytes

第六部分:文件的最近时间

第七部分:文件名

.开头代表隐藏文件

相关命令:

 chown 修改文件拥有者和所属组

chown 帐号名称 文件

chown 帐号名称:组名称 文件

-R 递归修改

--reference=路径 以某个文件为参考做修改

 chmod 修改权限

chmod 权限 文件

-R 递归修改

--reference=路径 以某个文件为参考做修改

权限有两种表示方法:

字符型 : rwxr—r--

数字型 : 744

权限的修改有三种方法:

chmod 744 filename         #一定是个三位数,三位8进制,r=4,w=2,x=1

chmod u=rwx,g=r,o=r filename   #可单个修改,u,g,o,a

chmod u+x,g+r,o+r filename    #可单个修改,u,g,o,a

 chgrp 修改文件所属组

chgrp 组名称 文件

-R 递归修改

--reference=路径 以某个文件为参考做修改

二、权限对文件的重要性:

r权限: 读取该文件的内容

w权限: 更改编辑该文件的内容(不含删除该文件)

x权限: 使文件具有被系统执行的权限

三、权限对目录的重要性:

r权限: 具有读取目录结构列表的权限

w权限: 具有异动该目录结构列表的权限,包括1、建立新文件 2、删除文件 3、修改文件名 4、移动文件位置

x权限: 具有进入该目录的权限

预设的文件和目录的权限

用户 文件权限 目录权限
root 644 (rw-r--r--) 755 (rwxr-xr-x)
其他用户 664 (rw-rw-r--) 775 (rwxrwxr-x)

默认权限与umask有关,可用umask修改或者修改配置文件~/.bashrc,文件最大权限666,目录最大权限777,root用户的权限设定更为严格,所有用户在文件计算权限时要去掉x权限,而且最好不要直接与umask进行加减。

[[email protected] ~]# umask
0022
[[email protected] ~]# umask -S
u=rwx,g=rx,o=rx

四、最小权限设定

假设存在/test1和/test2目录,并且存在/test1/abc文件

操作 /test1 /test1/abc /test2 解释
读取abc内容 x r - 首先是进入/test1目录,然后读取abc文件
修改abc内容 x rw - 首先是进入/test1目录,然后读取abc文件,再修改abc内容
执行abc内容 x rx - 首先是进入/test1目录,然后读取abc文件,再执行abc内容
删除abc文件 wx - - 首先是进入/test1目录,然后删除abc文件
将abc文件复制到/test2 x r wx 首先是进入/test1目录,然后读取abc文件,再然后进去/test2目录,最后写入文件

由上可得,文件最小需要r权限,目录最小需要x权限。

五、文件特殊权限(建立在具有x权限之上)

SUID(set UID)

权限代码为4,拥有者存在x权限则显示为 s ,为空的x则为 S

SGID(set GID)

权限代码为2,拥有者存在x权限则显示为 s ,为空的x则为 S

SBIT(Sticky Bit)

权限代码为1,拥有者存在x权限则显示为 t , 为空的x则为 T

 SUID

1、SUID权限仅对二进制程序(binary program)有效

2、执行者对该程序需要有x的可执行权限

3、本权限仅在执行该程序的过程中有效(run-time)

4、执行者将具有该程序拥有者(owner)的权限

例子:

[[email protected] ~]# ls -ld /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Dec 29  2019 /usr/bin/passwd
[[email protected] ~]# ls -ld /etc/shadow
---------. 1 root root 1051 Dec 29  2019 /etc/shadow
#首先,普通用户对passwd具有x可执行权限
#当普通用户去修改自己密码时需要读取修改到/etc/shadow,是没有权限的
#但是passwd命令具有SUID权限,所以在用户使用passwd命令的过程中暂时具有root的权限,再去修改/etc/shadow,是可以的。

 SGID

1、SGID权限对二进制程序(binary program)有效

2、执行者对该程序需要有x的可执行权限

3、执行者将在执行的过程中获取该程序拥有者所在组的权限

当一个目录设定了SGID的权限之后,将具有如下功能:

1、使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;

2、使用者在此目录下的有效群组(effective group)将会变成该目录的群组;

3、若使用者在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。

 SBIT(只对目录有效)

1、当使用者对于此目录具有w,x权限,亦即具有写入的权限时;

2、当使用者在该目录下建立档案或目录时,仅有自己与root才有权力删除该档案

如果将 A 目录加上了 SBIT 的权限项目时,则甲只能够针对自己建立的档案或目录进行删除/更名/移动等动作,而无法删除他人的档案。

例子

[[email protected] ~]# ls -ld /tmp
drwxrwxrwt. 11 root root 4096 Dec 29  2019 /tmp

六、文件隐藏权限

chattr 设置文件隐藏属性

+ :增加一个特殊参数

- :减少一个特殊参数

= :等于某些特殊阐述

a 设置后,该文件只能增加内容,不能删除也不能修改

i 设置后,该文件不能做任何改动,包括删除、改名、链接、写入、新增,root也是,但是可以-i取消

lsattr 显示文件隐藏属性

-a :将隐藏文件的属性也列出来

-d :同ls -d,仅列出目录本身

-R :递归查看,包括子目录

七、ACL设置文件权限

后续添加

时间: 2024-12-15 01:57:57

第三章、文件权限的相关文章

APUE学习笔记:第三章 文件I/O

3.1 引言 术语不带缓冲指的是每个read和write都调用内核中的一个系统调用.这些不带缓冲的I/O函数不是ISO C的组成部分,但是,它们是POSIX.1和Single UNIX Specification的组成部分 3.2 文件描述符 UNIX系统shell使用文件描述符0与进程的标准输入相关联.文件描述符1与标准输出相关联.文件描述符2与标准出错输出相关联. 在依从POSIX的应用程序中,幻数0.1.2应当替换成符号常量STDIN_FILENO,STDOUT_FILENO和STDERR

Head First Python 第二章 函数模块&第三章 文件与异常&第四章 持久存储&第五章 处理数据

第三章 1.共享模块 模块和发布工具箱全世界共享模块 编写函数,以.py为文件后缀名,第三方库都在PyPI *注释代码:三引号(单双都可以) 发布过程P40 使用发布工具,函数模块变成了一个“发布”,可以使用import导入其他程序 2.如果函数模块功能不满意 添加参数以供api选择比添加函数工作量小! 首先考虑BIF内置函数 ----------------------------------------------------------- 第四章 1.文件 open()语句,readlin

第三章 文件处理

一.在python中 1. 打开文件,得带文件句柄并赋值给一个变量 f=open('a.txt','r',enconding='utf-8')#默认打开模式为r 2. 通过句柄对文件进行操作 data=f.read() 3. 关闭文件 f.close() 4. 强调第1点:操作完文件后,要及时回收操作系统打开的文件 f.close() 另外一种方式,可不用回收资料,使用with...as.... with open('a.txt','r') as f: data=f.read() 5. 强调第2

Linux基础(三)——文件权限管理&光盘、镜像挂载

Linux文件权限管理 更改文档归属 ls -ld 文档... 查看文件归属 chown -R(目录) 属主 文档... chown -R :属组 文档... chown -R 属主:属组 文档... 同时修改属主.属组 访问权限 读取 -read 写入 -write 可执行 -excute '如果用户对一个文件有 r.w.x权限:' r,查看文件内容(cat.vim看.less.--) w,修改文件内容(vim) x,能够运行程序文件 '如果用户对一个目录有 r.w.x权限:' r,查看目录内

APUE读书笔记-第三章 文件I/O

今天看得挺快的,一下子就把第二章看完了,不过第二章也确实看得不仔细,这一章其实在程序设计中还是非常重要的,因为这一章的内容决定了程序的可移植性. 好了,回到这一章的主题文件I/O. 3.2节主要对文件描述符的概念进行了简单的介绍.根据APUE:文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.我也简单地翻了一下LKD和<深入理解linux内核>,其中对于文件描述符的讲解不是很多,所以对于文件描述符也谈不出来太深入理解,各大家还是分享一篇blog吧.

第三章--文件I/O--学习笔记

1.文件描述符:是一个非负整数,用来描述打开的文件 2.函数open和函数openat: 1 #include <fcntl.h> 2 int open(const char * path, int oflag,...); 3 int openat(int fd, const char * path, int oflag,...); 打开或者创建一个文件描述符,失败的话返回-1 path是要打开或创建的文件名 oflag参数可用来说明此函数的多个选项 fd参数指出了相对路径名在文件系统的开始地

Oracle深入数据库体系结构_第三章文件

构成数据库和实例的8种主要文件类型: 参数文件:(init file) 可以通过视图V$PARAMETER(show parameter)查看 跟踪文件 警告文件 数据文件 临时文件 控制文件 重做日志文件 密码文件 从oracle10g开始添加了两种新的可选文件类型:修改跟踪文件.闪回日志文件. 3.1 参数文件 遗留参数文件(init.ora)

第三章 文件操作

底层文件访问 文件描述符: 0:标准输入 1:标准输出 2:标准错误 write系统调用 把缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中.返回实际写入的字节数.返回0表示未写入,返回-1表示错误. #include <unistd.h> size_t write(int fildes,const void *buf,size_t nbytes) #include<unistd.h> #include<stdlib.h> int main()

linux程序设计——文件操作(第三章)

第三章    文件操作 3.1 linux文件结构 与UNIX一样,linux环境中的文件具有特别重要的意义,因为它们为操作系统服务和设备提供了一个简单而一致的接口.在linux中,一切都是文件. 这意味着,通常程序可以像使用文件那样使用磁盘文件.串行口.打印机等等. 目录也是文件,但它是一种特殊类型的文件.在现代UNIX(包括linux)版本中,即使是超级用户可能也不再被允许直接对目录进行写左操作了.所有用户通常都使用上层的opendir/readdir接口来读取目录,而无需了解特定系统中目录

Linux文件权限分析

一.用户组概念  在linux系统中,每个用户必属于一个组,不能独立于组之外.每个文件都有所有者,所在组和其他组这三个概念. (1)所有者:一般为文件的创建者,谁创建了该文件,就成为了该文件的所有者,可以用ls -ahl 文件名  查看文件的所有者,也可以使用chown 用户名 文件名 来修改文件的所有者. (2)所在组:当A用户创建了一个文件后,该A用户所在的组就是该文件所在组,可以用ls -ahl 文件名  查看文件的所在组,可以使用chgrp 组名 文件名 来修改文件的所在组 (3)其他组