文件类型

对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的。

我们来看一下 ls 命令的输出结果

[root@iZ28dr6w0qvZ test]# ls -l
总用量 72
-rw-r--r--  1 root root 62199 3月   2 11:21 lsbin.txt
drwxr-xr-x 38 root root  4096 2月  29 16:11 Pics
-rw-r--r--  1 root root    54 2月  29 14:22 text.txt
-rw-r--r--  1 root root     0 3月   1 17:07 two words.txt

列表的前十个字符是文件的属性。

这十个字符的第一个字符表明文件类型。

常用的文件类型(还有其它的,不常见类型):

属性 文件类型
- 一个普通文件
d 一个目录
l 一个符号链接。注意对于符号链接文件,剩余的文件属性总是"rwxrwxrwx",而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。
c 一个字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。 比如说终端机,或者调制解调器
b 一个块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。

剩下的九个字符,叫做文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。

常用的linux文件权限

444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx  
  • 读取的权限等于4,用r表示;
  • 写入的权限等于2,用w表示;
  • 执行的权限等于1,用x表示;

通过4、2、1的组合,得到以下几种权限:
0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)

安全权限的临界点

1.目录755,文件644是相对安全的权限;

2.用户为root以及用户组为root

chmod 更改权限

通过八进制表示法,我们使用八进制数字来设置所期望的权限模式。因为每个八进制数字代表了 3个二进制数字,这种对应关系,正好映射到用来存储文件模式所使用的方案上。下表展示了 我们所要表达的意思:

Octal Binary File Mode
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

通过传递参数 “600”,我们能够设置文件所有者的权限为读写权限,而删除用户组和其他人的所有 权限。虽然八进制到二进制的映射看起来不方便,但通常只会用到一些常见的映射关系: 7 (rwx),6 (rw-),5 (r-x),4 (r--),和 0 (---)。

chmod 命令支持一种符号表示法,来指定文件模式。符号表示法分为三部分:更改会影响谁, 要执行哪个操作,要设置哪种权限。通过字符 “u”,“g”,“o”,和 “a” 的组合来指定 要影响的对象,

chmod 命令符号表示法

   
u+x 为文件所有者添加可执行权限。
u-x 删除文件所有者的可执行权限。
+x 为文件所有者,用户组,和其他所有人添加可执行权限。 等价于 a+x。
o-rw 除了文件所有者和用户组,删除其他人的读权限和写权限。
go=rw 给群组的主人和任意文件拥有者的人读写权限。如果群组的主人或全局之前已经有了执行的权限,他们将被移除。
u+x,go=rw 给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。

符号表示法的优点是, 允许你设置文件模式的单个组成部分的属性,而没有影响其他的部分。

chown - 更改文件所有者和用户组

参数 结果
cqh 把文件所有者从当前属主更改为用户 cqh。
cqh:users 把文件所有者改为用户 cqh,文件用户组改为用户组 users。
:cqh 把文件用户组改为组cqh,文件所有者不变。
cqh: 文件所有者改为用户 cqh,文件用户组改为,用户 cqh 登录系统时,所属的用户组。

chattr和lsattr -文件或者目录的隐藏属性

chattr可以创建root都不能修改的文件,但是它并不适合所有的目录,不能保护/、/dev、/tmp、/var目录
lsattr可以显示chattr命令设置的文件属性
与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…

最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的
属性。

+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。 A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。  

示例一:创建不可删除的文件

# 设置
root@ubuntu:/tmp/test# chattr +i chenqionghe.txt
root@ubuntu:/tmp/test# rm -f chenqionghe.txt
rm: cannot remove 'chenqionghe.txt': Operation not permitted
# 解除
root@ubuntu:/tmp/test# lsattr chenqionghe.txt
----i---------e--- chenqionghe.txt
# 使用lsattr查看设置的参数
root@ubuntu:/tmp/test# chattr -i chenqionghe.txt
root@ubuntu:/tmp/test# rm -f chenqionghe.txt  

示例二:创建只可能追加数据不能删除的文件(不可使用vim,不可echo >,只能使用echo >>追加)

root@ubuntu:~# chattr +a chenqionghe.txt
root@ubuntu:~# rm chenqionghe.txt
rm: cannot remove 'chenqionghe.txt': Operation not permitted
root@ubuntu:~# echo 'aa' > chenqionghe.txt
-su: chenqionghe.txt: Operation not permitted
root@ubuntu:~# echo 'aa' >> chenqionghe.txt

  

linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)的更多相关文章

  1. C#File类常用的文件操作方法(创建、移动、删除、复制等)

    File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...

  2. 【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据

    任务描述 本次集中介绍使用Windows和Linux()搭建本地Redis服务器的步骤,从备份的RDB文件中加载数据,以及如何生成AOF文件和通过AOF文件想已经运行的Redis追加数据. 操作步骤 ...

  3. Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中

    #直接覆盖日志文件 ls -l | tee ./t.log #将输出内容附加到日志文件 ls -l | tee -a ./t.log 使用的是tee命令

  4. 删除N天前的log日志文件:RollingFileAppender,DailyRollingFileAppender,/etc/cron

    1. 如果您使用的是Log4j,且采用的RollingFileAppender方式, 通过设置maxBackupIndex属性来指定要保留的日志文件数的最大值可以间接实现删除N天前的日志文件. 2. ...

  5. C#保存日志文件到txt中,可追加保存,定时删除最后一次操作半年前日志文件

    /// <summary> /// 输出指定信息到文本文件 /// </summary> /// <param name="msg">输出信息& ...

  6. Linux 操作mysql数据库 创建库 导入、删除表

    确保线上的运行数据库是不可避免的本人小白,因公司上线没有办法自己去整服务器,深刻体会到服务器大神的霸气,所以为了增加记忆,服务广大员友记录一下 linux mysql 忘记root的密码无法登陆进my ...

  7. Linux常用命令_(文件权限)

    Linux权限管理: 二.权限管理1.3种基本权限在Linux中,将使用系统资源的人员分为4类:超级用户.文件或目录的属主.属主的同组人和其他人员.超级用户拥有对Linux系统一切操作权限,对 于其他 ...

  8. Linux学习之用户身份与文件权限

    Linux学习之用户身份与文件权限 1 用户身份及能力 Linux系统的管理员之所以是root,并不是因为其名叫root,而是该用户身份号码数值(UID)为0. 管理员UID为0:系统的管理员用户 系 ...

  9. 3,linux入门到上手-文件权限管理与配置

    linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...

随机推荐

  1. CXF整合spring

    近公司需要弄webservics,还说不用框架整合(提倡使用hessian,他们既然说与操作系统有兼容问题,由于人员单薄,不得不屈服,哎),我想了老半天没弄明白他说的不用框架整合spring,尝试过直 ...

  2. 微信二维码支付-模式一(PC端,解决中文乱码问题)

    近期公司调完银联,调支付宝,调完支付宝调微信.说实话微信的帮助文档确实是烂,而且有没有技术支持,害的我头发都掉了一桌.不说废话了,看代码. 首先登陆微信的公众平台(微信的服务号不是订阅号),然后选择微 ...

  3. PAT1077: Kuchiguse

    1077. Kuchiguse (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming The Japan ...

  4. SQL关于IN和EXISTS的用法和区别的比较

    1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....).2.exist会针对子查询的表使用索引. not exist会对主子查询都 ...

  5. Invalid character found in method name. HTTP method names must be tokens

      o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrenc ...

  6. 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

        系列文章目录:     <微服务设计>读书笔记大纲 一.CI(Continuous Integration)简介  CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2: ...

  7. 关于局域网 手机连接apache服务器报403forbidden错误参考如下2017.6.6

    http://www.glbwl.com/wampServer-403-forbidden.html

  8. 电梯调度算法---SCAN算法

    请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 扫描(SCAN)调度算法:总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者.如果沿磁臂的方向无请求访问时,就改变磁 ...

  9. MyEclipse代码提示设置

    (一)普通代码提示 1. 打开MyEclipse ,然后"window"→"Preferences" 2. 选择"java",展开,&quo ...

  10. UOJ182 a^-1 + b problem 解题报告

    题目描述 有一个长度为\(n(n\le 10^5)\)的数列,在模\(M\)意义下进行\(m(m \le50000)\)次操作,每次操作形如以下两种形式: 1 \(x\) 表示每个数加\(x(0 \l ...