zoukankan      html  css  js  c++  java
  • 第五节 suid/ sgid /sbit /which /locate / find /stat / ln / uname -a

    复习上节课内容(重点记录)
    1、chown -R 递归修改目录下包含子目录和子目录下的文件的属组
    2、chmod -R 递归修改目录下包含子目录和子目录下的文件的权限

    ============================================================
    其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限,如果是0则没有相应权限
    第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位
    11 10 9 8 7 6 5 4 3 2 1 0
    S G T r w x r w x r w x
    chmod u+s filename 设置SUID位
    chmod u-s filename 去掉SUID设置
    chmod g+s filename 设置SGID位
    chmod g-s filename 去掉SGID设置

    -rwsrwxswt ======>出现了t,t的作用在内存中尽量保存a.txt,节省系统再加载的时间.
    从s和S中我们可以看出在设置su前,脚本相应的执行权限有没有被设置(有则s,没有则S)。
    对于sgid的设置时也类似。粘性位则用t和T表示,但其中包含的意义是一样的。

    rwsrw-r– 表示有setuid标志
    rwxrwsrw- 表示有setgid标志
    rwxrw-rwt 表示有sticky标志

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

    0: 不设置特殊权限
    1: 只设置sticky
    2 : 只设置SGID
    3: 只设置SGID和sticky
    4 : 只设置SUID
    5 : 只设置SUID和sticky
    6 : 只设置SUID和SGID
    7 : 设置3种权限

    1、设置特殊权限 SUID、SGID详解 参考:http://www.cnblogs.com/fhefh/archive/2011/09/20/2182155.html
    SUID : Set User ID (find / -perm -04000 -type f -ls查找设置SUID的程序)
    作用:临时赋予用户二进制文档的拥有者的权限(主要用于让普通用户可以使用某些特殊命令)
    语法1:chmod u+s file(增加s权限)
    语法2:chmod u-s file(减去s权限)
    使用限制与环境:
    1、仅对于二进制文件有效;
    2、执行者必须对文件拥有x权限(否则即使设置了SUID,由于你对文件根本无法执行SUID此时也无效,此时权限位显示S);
    3、权限只是在执行过程中拥有。
    PS:例如passwd命令,路径/usr/bin/passwd,权限为"-rwsr-xr-x"。(passwd命令会修改"/etc/shadow")
    PS:SUID只可用于二进制文件,不可用于shell script文件。

    SGID : Set Group ID:
    对于文件
    作用:临时赋予用户二进制文档的拥有组的权限(多用于让普通用户可以使用某些特殊命令,和suid类似)
    语法1:chmod g+s file(增加s权限)
    语法2:chmod g-s file(减去s权限)
    使用限制与环境:
    1、仅对于二进制文件有效;
    2、执行者必须对文件拥有x权限(否则根本无法执行文件,更别谈SGID赋予权限,此时权限位显示S);
    3、权限只是在执行过程中拥有。
    PS:例如locate命令,路径/usr/bin/locate,权限为"rwx--s--x"。
    (locate命令会读取"/var/lib/mlocate/mlocate.db")
    对于目录
    作用:临时将用户的effective group修改成该目录的的群组
    语法1:chmod g+s dir(增加s权限)
    语法2:chmod g-s dir(减去s权限)
    使用限制与环境:
    1、使用者必须对该目录拥有x权限(否则无法进入,更别谈SUID赋予权限,此时权限位显示S);
    2、若用户对此目录拥有w权限,由于effective group被修改成该目录的group,所以用户在此目录下创建任何文件,属组该目录的用户组。

    SBIT
    作用:限制目录下不同用户之间对于其他用户文档或目录的编辑权限。
    语法1:chmod o+t dir(增加t权限)
    语法2:chmod o-t dir(减去t权限)
    使用限制与环境
    1、只能针对目录;
    2、必须有x和w权限(否则无法进入和编辑,更不用谈sbit权限,此时权限位显示T);
    3、用户自身创建的文档和目录,只有自己和root可以编辑(重命名、修改内容、复制、删除等)

    2、查询文件类型与文件位置命令
    file
    作用:查看文件类型(linux下的文件类型不以后缀名区分)
    语法举例:
    [root@web01 ~]# file passwd
    passwd: ASCII text 《——ASCII文本文档
    [root@web01 ~]# file 123
    123: directory 《——目录文档
    [root@web01 ~]# file /var/lib/mlocate/mlocate.db
    /var/lib/mlocate/mlocate.db: data 《——data文档
    [root@web01 ~]# file /bin/ls
    /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped 《——可执行文档(包含suid设置、兼容的cpu硬件平台,lib库,linux内核等)

    which
    作用:搜索命令用
    语法:which 命令名称
    参数:-a 不仅仅是第一个被找到的命令,所有被搜索到的命令都会列出。
    PS:只是在系统定义的PATH路径下搜索。
    [root@web01 ~]# type cd
    cd is a shell builtin 《——cd是一个内置命令,不在PATH内,所以下面的which搜索不到cd。
    [root@web01 ~]# which cd
    /usr/bin/which: no cd in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

    whereis
    作用:在特定的多个文件夹里搜索文件(/bin:/sbin:/usr/bin:/usr/sbin:man文档的相关文件夹等)
    语法:whereis 参数 关键字
    参数:
    -b 只找 binary 格式的文件;
    -m 只找在说明手册文件manual 路径下的文件;
    -s 只找 source 来源的文件;
    -u 查找不在上述三个参数中的其他特殊文件。

    locate
    作用:从特定资料库里查询文件
    语法:locate keywords
    PS:安装方法,yum install -y mlocate,安装完成后需要用updatedb命令更新一下数据库
    PS:系统每天凌晨4点自动updatedb
    PS:资料库文件路径/var/lib/mlocate/mlocat.db

    find
    说明:最强大的查询工具。
    语法: find [PATH] [option] [action]
    参数:-mtime 以改变文件内容时间为搜索条件查询文件
    我们事先约定,从现在时间开始往前推24小时为第1天,n=1。以此类推第一天再往前推24小时是第2天,n=2...
    -mtime n :n为数字,意为查询第n+1天当天24小时内改动过内容的文件;
    -mtime +n :意为查询 n+1天之前(不含n+1天本身)被改动过內容的文件;
    -mtime -n :列出在 n 天之內(含 n 天本身)被改动过内容的文件;
    -newer file :file 为一个已存文件,列出比 file被改动内容更早之前的文件。

     
    -mtime 4 是查询第5天改动过内容的文件;
    -mtime +4 是查询5天前改动过内容的文件;
    -mtime -4 是查询4天内改动过内容的文件。
    参数:-mmin 同-mtime,只是n不代表天数,代表分钟。
    参数:-type 以文件类型为搜索条件查询文件
    -type TN :TN=f (普通文件),d(目录文件), l(链接文件),s(套接字),p(管道),c(字符文件)和b(块设备)等。
    参数:-i 忽略查询条件的大小写
    参数:-inum 以文件的inode号为查询条件查询文件。
    可用于删除文件名乱码的文件。find 路径 -inum inode号 | xargs rm

    find扩展执行命令
    参数xargs(execute arguments 用于执行的参数)
    作用:
    find ***|xargs -i mv {} {}.bak (参数-i 代表把前面的信息一条一条分批的处理)
    PS:find ***|xargs -i rm

    stat
    作用:查看三个时间
    语法:stat file/dir
    PS:更改ctime不一定更改mtime
    PS:更改mtime一定会改动ctime

    3、软连接与硬链接
    ln 硬链接
    作用:主要用于安全备份
    语法:ln source destination
    原理:
    普通文件的inode里存取了文件权限、归属、时间等信息及文件资料存取的block号,block里存取的是实际文件的数据。
    然而对于目录文件,它的inode也存取了该文件夹的权限、归属、时间等信息及指向的inode号,而其block里存取的是一个储存了inode与其对应的文件名称的列表清单。类似于下表

     

    做完硬链接之后,实际文件的inode相当于有了两个入口,而这些入口都是写在目录文件的block里边的,这两个入口拥有同样的inode号,只是文件名称不一样,正因为如此,所以硬链接是不额外产生inode号的,只是相当于给源文件做了一层安全保护,防止被误删。
    PS:硬链接不产生新的inode
    PS:不能跨分区做硬链接
    PS:不能对目录做硬链接

    ln -s 软连接
    作用:可以用于不同分区之间“容量共享”和“inode共享”
    语法:ln -s source destination
    原理:
    软链接和硬链接不同,软链接是由系统新分配了一个inode和block,block里存的是源文件的名称等信息。


    链接文件inode

    block:存了源文件的信息

    ------>

    源文件inode

    block:实际文件资料

    基于此原理,所以软连接会产生新的inode,也可以对目录做软连接(硬链接不可以是因为有可能会产生目录回环)
    PS:尽量写绝对路径
    PS:软连接的大小和连接的文件名称长短有关


    额外知识点
    vim安装方法
    方法1:yum install -y vim-enhanced
    方法2:yum install -y vim*

    查看系统信息
    [root@web01 123]# uname -a
    Linux web01 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux

  • 相关阅读:
    IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定
    IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)
    Android Socket编程基础
    第七次作业
    第六次作业
    第五次作业
    第4次作业
    关于个人项目的总结,最主要是不足
    第二次作业
    微信的优缺点以及发展史
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/4308814.html
Copyright © 2011-2022 走看看