1. linux set uid ,set gid,sticky bit权限详细说明

一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组. 如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.

setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

下面说一下如何操作这些标志:

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

1) chmod u+s  temp    -- 为temp文件加上setuid标志. (setuid 只对文件有效)

chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效)

chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对目录有效)

2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,

abc

a - setuid位, 如果该位为1, 则表示设置setuid

b - setgid位, 如果该位为1, 则表示设置setgid

c - sticky位, 如果该位为1, 则表示设置sticky

也就是说,如果有特殊权限时,第一位数字可以是0,1(--t),2(-s-),3(-st),4(s--),5(s-t),6(ss-),7(sst)

设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如

rwsrw-r--    表示有setuid标志

rwxrwsrw-  表示有setgid标志

rwxrw-rwt   表示有sticky标志

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

2. atime, ctime, mtime 三个时间比较、区别

文件的 Access time,atime 是在读取文件或者执行文件时更改的。

文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。

文件的 Change time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。

因此,更改文件的内容即会更改 mtime 和 ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,如权限更改了但文件内容没有更改。

如何获得一个文件的atime mtime 以及ctime?

ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。

ls -lc filename         列出文件的 ctime

ls -lu filename         列出文件的 atime

ls -l filename          列出文件的 mtime

atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息。而这是加了 noatime 取消了, 不代表真实情況。反正, 这三个 time stamp 都放在 inode 中. 若 mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了(理论上是这样的,但是真实情况并非如此,如果是读取文档或者执行二进制文件的时候,虽然atime会变,但ctime不变,这是系统这样设计的).

3. ext3 与 ext4文件系统的区别 

Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。

2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。

4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

5. 多块分配。 当 写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

9. “无日志”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

10. 在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。

11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。

12. 持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。

13. 默认启用 barrier。 磁 盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

转载于:https://blog.51cto.com/tengxiansheng/1700296

必 备 习 题 集 (五)相关推荐

  1. c#报错不实现接口成员_《C#程序设计》 习 题 集

    <C#程序设计>习题集 一.填空:(每题2分,共10题,共20分) 1.操作符(&& )被用来说明两个条件同为真的情况. 2.接口只能定义方法,实现要由(类)完成. 3.任 ...

  2. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  3. 【训练计划】ACM题集以及各种总结大全

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  4. ACM题集以及各种总结大全

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  5. ACM题集以及各种总结大全!

    整理的算法模板合集: ACM模板 一.ACM入门 关于ACM    百度百科连接 杭州电子科技大学(hdu)ACM题目    连接 关于acm的帮助     连接 北京大学(poj)题目      连 ...

  6. C语言入门必刷100题合集之每日一题(1-20)

    一.用C语言实现华氏温度转换为以摄氏法表示的温度. 解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是: centigrade=(5.0/ ...

  7. 华为OD机试用Python实现 -【集五福】 |老题且简单

    华为OD机试题 最近更新的博客 华为 OD 机试 300 题大纲 集五福 题目描述 输入描述 输出描述 示例一 输入 输出 示例二 输入 输出 代码编写思路 Python 代码 最近更新的博客 华为o ...

  8. 操作系统知识点总结和题集大杂烩

    第一轮:从当前位置开始扫描到第一个(A =0, M = 0)的帧用于替换.表示该页面最近既未被访问,又未被修改,是最佳淘汰页 第二轮:若第一轮扫描失败,则重新扫描,查找第一个(A =0, M = 1) ...

  9. “错题集”帮你期末考试冲向满分

    考试考不好,怎么办呢?习网的错题集可以全面的为学生解答平时的错误问题,是冲向满分的开始.考试没考好,一般分为以下几点: 1.睡眠不够,那就加强睡眠.延长睡眠的时间和提高睡眠质量,早半小时睡觉.睡觉前听 ...

最新文章

  1. java目录更改当前_Java-MVC:查看目录更改的最佳方法
  2. centos+ffmpeg安装配置+切片
  3. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  4. 计算机网络和机器视觉,一文读懂计算机视觉和机器人视觉
  5. redis(19)--事务
  6. 第97:一文读懂协方差与协方差矩阵
  7. 修改weblogic部署的应用名称
  8. nginx反向代理解决跨域
  9. 如何查看MFC源码(转)
  10. Spring Boot 中实现定时任务的常用方式--Quartz
  11. 提升交互设计必备的28本好书
  12. python仿真,clark变换和park变换
  13. 如何下载m3u8格式视频
  14. 狂神说笔记之ElasticSearch
  15. iOS-bug·Failed to connect to github-production-release-asset-2e65be.s3.amazonaws.com port 443:
  16. 数据挖掘 案例一:电力窃漏用户自动识别
  17. 轨道交通计算机网络技术,城市轨道交通列车网络控制技术
  18. Failed to build custom metric java.lang.NumberFormatException: For input string: “∞“
  19. unity 3d 中paint in 3d插件的简单使用
  20. 数组去重方法集锦(一)

热门文章

  1. 数独基本规则_思维训练|数独入门第五课:唯余解法
  2. java 抛出异常_我的Java Web之路51 - Java异常基础
  3. c语言输出方框□怎么回事_值得收藏的 C语言指针讲解文章,确实不错!
  4. jinja2模板注入_Flask(Jinja2) 服务端模板注入漏洞
  5. Vue3 插槽使用详解
  6. Python出现AttributeError: module ‘tkinter‘ has no attribute ‘messagebox‘,已解决
  7. 如何合并mysql中的行_如何在MySQL中合并行?
  8. 给开源项目贡献代码的经历
  9. 怎么把php写入文件格式,如何将一个PHP数组有格式的写入文件中
  10. python基础到实践教程_Python从入门到实践案例教程(21世纪高等学校计算机教育实用规划教材)...