码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 20150830学习整理 VIM、FIND、bash环境、特殊权限

时间:2015-09-03 21:53:14      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:interface   visual   处理器   linux   编辑器   

第一部分  VIM

     文本编辑器只针对ASCII码,字处理器

    1、种类:

        简单编辑器  nano:是全屏模式

        vi:visual interface 全屏文本编辑器,模式化的编辑器

        VIM是vi的增强版本有高量、语法着色显示等功能

    2、VI工作模式

        编辑模式:VI默认工作模式(也称为命令模式)

        输入模式:输入字符内容

        末行模式:在屏幕最后一行,可以编辑文件和其它额外操作。内嵌命令行接口 以

    冒号" : "可输入命令

                工作模式切换

                        编辑模式----> 输入模式用以下快捷键

                                     小写i   insert光标前插入

                                      大写I   当前光标所在行首插入

 

                                      小写a append 当前光标后

                                       大写A   当前光标所在行尾插入

 

                                       小写o    新行,当前光标所在行下一行新建一行

                                       大写O   当前光标上一行接入新行

 

                                        大写L   最后一行行首

                                       

                        输入模式---->返回编辑模式 esc键

                        编辑模式--->末行模式 ,冒号 : 可输入相关命令

                       末行模式----》编辑模式 一次esc 2-3秒延时 二次esc快速

                       无法直接从编辑进行末行模式 ,需要先使用esc退出

    3、编辑操作

              A:打开文件定位光标类

         #VIM /path/to/somefile  要求文件前的目录存在,如果文件不存在将新建文件

         vim [options] [file ..]
         vim [options] -
         vim [options] -t tag
         vim [options] -q [errorfile]

                      +# :#号为行号   vi +10 bash1.txt 表示编辑bash1的第10行

                      +/PATTENR : 定位到第一次匹配的行首  vim +/UUID /etc/fstab

                      +  表示最后一行行首 

              B:退出、关闭文件类

                       一般在编辑和模式下进行

                        末行模式     w为保存   q为退出(不保存模式)

                           :q 退出

                           :q! 强行不保存退出

                           :wq 保存退出

                           :w! 管理员强行保存

                           :x  保存退出

                        编辑模式:

                            ctrl+ZZ  保存并退出

               C:光标跳转类

                      字符间跳转

                            h 左一个字符  l 右一个字符   

                            j 向下一行(与上行字符所在光标位置对齐)   

                           K向上一行 (与上行字符所在光标位置对齐)

                           #jklh  移动#个字符可加数据3k,6j等 ,一次跳转n个字符或几行

                       单词跳转

                            备注:(不包括特殊字符,字母与数字),连续的字符示为一个单词

                            w 后单词词首  e 当前或后一个单词词尾   b 前一个单词词首

                               以上支持与数据结合3#

                             示例:#W      3W往后跳几个单词

                       行内跳转

                            ^ 跳转至行首的每一行非空白字符

                           0 跳行首,绝对行道,包括空白字符

                           $ 跳行尾

                       行间移动

                            #G 跳转到#行 1G行道   例如直接3G为第三行

                            只有G为最后一行,行首

                             在末行模式直接输入行号回车即可 :#  :5 跳转至第5行

                       句间移动

                             )跳转至后一句句首

                            (跳转前一句句首

                        段落间移动

                              { 段首

                              } 段尾

                D:编辑类指令

                        字符编辑

                             x 表示删除光标所在处字符 #X 删除光标指定后#的字符如4x

                             xp: 与后一个字符光标对调

                         字符替换

                             只能够替换单个字符

                             r+替换后的字符    替换光标所在处的字符

                             大写R替换模式,可直接替换多个字符

                                例如rz   将当前光标字符替换为z

                                       4rz  将当前光标后4字符替换为z                            

                         删除命令:可与光标跳转配合,删除之间的字符

                             d后面加上指定位置删除多少  #d跳转符

                             d^      d$ 行尾   d0 行首

                             dw 一个单词单词删除   例如3dw    #de ,#db

                             db 删除一行

                             #dd  删除包前光标所在行在的的#行

                            末行模式下:

                                    startDD,endADDd 删除从开始至指定位置的行数

                                    例如:.,5d 当前向下5行后   :1,8d  删除第一至第8行

                                        . 当前行     $最后一行   +# 当前位置向下的#行       

                                        $-#  末行最后#行

                             注意:删除的内容会被vim编辑在缓冲区(内存)当中,可撤消可恢复。

                                   最后一次的内容可粘贴到指定位置。

                        粘贴命令

                              p(paste,put)   大小p

                             如之前复制或删除的内容不是一个完整行

                                    小写p 当前光标处所在行的前面

                                    大写P 当前光标处所在处的后面

                             如之前复制或删除的内容是完整行 不止一行

                                   小写p 当前光标处所在处的上方

                                   大写P 当前光标处所在处的下方

                        复制命令   y yank

                                   #command

                               y 用户与d基本相同

                                    y$   t复制光标处所在行,目前位置至行尾的内容

                                    y^   当前光标至行首不 包括空白字符  y0  当前光标至行首包括空白字符

                                   ye     yw   二个基本相同针对当前光标的单词  

                                   yb复制当前光标处单词前面字符

                               yy 复制当前一行

                                   #yy 可复制#行

                              

                       改变命令  c change 模式转换

                              与y,d功能相近,先删除内容,再转换为输入内容

                              c$,c^,c0 cb,ce,cw

                              cc

                              #command改变命令

                       撤消编辑操作

                            u undo 默认50次,撤消此前编辑操作

                            #u 直接撤消#次编辑操作

                            ctl+r表示撤消最近的一次撤消操作,还原最近一次撤消操作

                       重复前一个编辑操作

                            .

                     可视化操作

                            v按字符选取

                            V按矩形选取

                             选取后可进行编辑操作包括删除、复制等,

                             注意字符时利用hjkl上下左右键选择

                      翻屏操作

                          编辑模式下

                           ctl+f 向后一屏 ctl+b 前一屏

                           ctl+d 向下半屏 ctl+u向前半屏       

              E:VIM末行模式操作

                     (1)地址 ,定界 :start_pos,end_pos

                                              #:第#行;
                                              #,#
                                              #,+#
                                                   .: 当前行
                                                  $: 最后一行
                                             %: 全文,相当于1,$

                                            /pat1/:第一次被此模式所匹配到的行;
                                            #,/pat1/
                                           /pat1/,/pat2/

                                         后可跟编辑命令:
                                                        d, y
                                                         w, r

                              示例  :5    光标移动到第5行

                                       :5d 删除第5行

                                       :#,# 3,10从3至10行 例如  :1,15d  删除第1至15行

                                       :#,+# 当前行向下几行  :1,+6d 删除第1至后6行

                                       :.当前行  .d删除当前行

                                      :$最后一行

                      (2)查找

                      查找:支持正则表达式

                            /PATTERN   从行首至行尾

                           ?PATTERN  从当前光标处至首部,往回找

                                    n  下一个,向下

                                    N  下一个,往回

                                示例 /echo  查找字符echo

            (3)  查找和替换      

              在末行模式可以使用命令s(相当于set命令)    s: 在末行模式下,

在地址定界的范围内完成查找替换操作;

                    起始地址,结束地址s@PATTERN@替换成的@修饰符gi

                                                s/要查找的内容/替换为的内容/修饰符
                                                    要查找的内容:可使用模式
                                                    替换为的内容:不能使用模式,但可以使用后向引用符号

                                                    ,以引用前面模式中的分组括号所匹配到的内容;
                                                    \1, \2, ...
                                                    &:引用“要找的内容”匹配到的整个内容;
                                           修饰符:
                                               i: 忽略大小写
                                               g: 全局替换

             /:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,

要使用\对其转义,使用格式:\ /     分隔符可替换为其它字符:例如@,#等;

                           addr1,addr2S@pattern@string@gi

                      特殊含义字符

                                           空格:\s

                                           行末空格:\s$

                                           行首空格:^\s

  F:多文件模式

vim FILE1 FILE2 ...    默认在第一个文件,第二个文件:next
            :next
            :first
            :prev
            :last

            :wqall    保存所有文件
            :q!all   多个文件不保存退出

    G:窗口分隔

         vim -o|-O FILE1 FILE2 ...

                Ctrl+w, ARROW      小o为分水,大O为垂直分隔

         单文件窗口分割:
                   Ctrl+w, s: split, 水平分割
                   Ctrl+w, v: vertical, 垂直分割

   H:定制vim的某些工作特性:
    (1) 行号
        显示:set nu
        禁用:set nonu
    (2) 括号匹配
        显示:set sm
        禁用:set nosm
    (3) 自动缩进:
        set ai
        set noai
    (4) 高亮搜索
        set hlsearch
        set nohlsearch
    (5) 语法着色
        syntax on
        syntax off
    (6) 忽略字符大小写
        set ic
        set noic

    :help 获取帮助
    :help SUBJECT

特性设定的永久生效方式:
    全局配置文件:/etc/vimrc
    用户个人的配置文件:~/.vimrc

   I:练习:
    1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg

文件中的行首的空白字符;         CentOS: /etc/grub.conf

     技术分享

             备注说明:%s/^[[:SPACE :]]/     后面为空代表删除空白

            也可以使用:%s/^\s/ 的形式

    2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/

tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

:%s/^[[:space:]]/#&   &表示
    技术分享

    3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

     这里使用转译符

   :%s/\/etc\/sysconfig\/init/\/var\/log

    技术分享

    4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

:%s/#[[:space:]]/

   技术分享                    
  

第二部分   Find  文件查找

         grep、egrep、fgrep等命令用于文本查找,Find则用于针对文件进行查找

         1、查找常用命令

              locate: 非实时查找工具;依赖于事先构建的索引;索引的构建是在系统较为空闲时

自动进行(周期性任务);手动更新此数据库(利用命令updatedb);优势是查找速度快;模糊查找;
               find:实时查找;查找速度略慢;精确查找;

          2、find命令:实时的、精确查找,遍历指定目录中所有文件的查找、速度慢,支持

    多种查找类型和标准

             格式定义:    find [OPTION]... [查找路径] [查找条件] [处理动作]
                          查找路径:默认为当前路径;
                          查找条件:l默认是指定下的所有文件:指定的查找标准,根据文件名、大小、

                属主属组、类型等进行;默认为找出指定路径下的所有文件;
                          处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;

            查找条件
                 A: 根据文件名进行查找
                         -name "文件名称": 对文件名精确匹配支持使用通配符 glob;  *,任意长度字符 ?, [ ]   

                                      示例:find /etc –name ‘passwd’

                                      示例:find /etc –name ‘*passwd’    查找以passwd结束的文件      
                        -iname "文件名称":不区分字符大小写,支持使用glob;                                                                 

                        -regex "PATTERN":以正则表达式进行文件名。匹配整个文件路径字符串,而不

仅仅是文件名称;  后面需要指定regex类型

                B: 根据属主、属组查找
                        -user USERNAME: 查找属主为指定用户的文件;

                                 示例: find /tmp  -user user1

                        -group GROUPNAME:  根据属组查找

                       -uid UserID: 查找文件的属主指定uid的文件;删除用户后,只显示uid,只能够通过GID进行查找
                       -gid GroupID: 根据GID进行查找

                       -nouser: 查找没有属主的文件;
                       -nogroup:查找没有属组的文件;

               C: 根据文件类型进行查找:
                        -type TYPE
                             f: 普通文件
                            d: 目录
                             l: 符号链接
                             b: 块设备
                             c: 字符设备
                             p: 命名管道
                            s: 套接字

                         示例:find /etc –type l

              D:组合查找条件
                       与条件:-a    优先级中等与  ,二个都要满足
                       或条件:-o   优先级最低
                      非条件:-not, !   优先级最高

                       条件之间末指定条件是默认是与条件,

                       摩根定律

                       !A -o !B = !(A -a B)   AB为二个条件
                       !A -a !B = !(A -o B)

                             示例:find /tmp –not –type d      用于查找tmp非目录类型的文件

                                        find ./  -not -user  chris -a -not -user root 查找非chirs和root用户的文件

                                         或                                     

                                          find ./  -not \( -user chris -o -user root \)

               E:根据文件大小来查找
                     -size [+|-]#UNIT    单位:k, M, G,默认单位是字节  #k #M  #G  精确

                               注意这里进行舍入,  +代表大于 

                           #UNIT: (#-1,#]    例如3为大于2小于3的数值
                           +#UNIT: (#,+oo)
                           -#UNIT:[0,#-1]

                        示例:find /etc –size 5k –ls

               F:  根据时间戳
                     以“天”为单位  +表示至少多少天    -表示多少天之内
                        -atime [+|-]#
                                    #:[#,#+1)
                                  +#: [#+1,oo]
                                  -#: [0,#)
                          -mtime
                           -ctime

                            示例:find ./ –atime –5 表示5天之内访问过的文件

                     以“分钟”为单位
                        -amin
                        -mmin
                        -cmin

               G:根据权限
                   -perm [/|-]MODE
                          MODE: 精确权限匹配
                          /MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;
                                      /400 属主能读即可

                                      /444 任意读即可
                        -MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;

                              -222

                              -200

                          示例:find ./  – perm –200

                              

       处理动作
            -print: 默认处理动作
            -ls:类似于对查找到的每个文件做"ls -l"的操作;
            -delete: 删除查找到的文件;
            -fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;

            -ok COMMAND {} \;       {}为命令占位符,引用原文件的位置   \;结束
                对每个文件执行指定的命令之前需要用户事先确认;
            -exec COMMAND {} \;
                无需用户确认;

                 例如:find ./ –perm 200 –exec chmod 777 {} \;

                   技术分享

      3、 练习:
            1、查找/var目录属主为root,且属组为mail的所有文件;

                find ./ -user oracle -a -group mail   :注意由于目录没有满足root和mail的条件,

这里调整为user为oracle,group为mail

                技术分享
            2、查找/usr目录下不属于root、bin或hadoop的所有文件; (hadoop替换为51cto用户)

                 find ./ -not \( -user root -o -user bin \) -o -user 51cto

                技术分享

                或者

                [root@centos71 usr]# find ./ -not -user root -a -not -user bin -o -user 51cto

                 技术分享
            3、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

                  [root@centos71 /]# find /etc -mtime -7 -not -user 51cto      -7写指7日内的数据
                 技术分享

          
            4、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

                  [root@centos71 /]# find / -atime 7 -nouser -o –nogroup

                 技术分享


            5、查找/etc目录下大于20k且类型为普通类似的所有文件;

                  [root@centos71 etc]# find /etc -size +20k -type f

                  技术分享
            6、查找/etc目录下所有用户都没有写权限的文件;

                   [root@centos71 etc]# find /etc -not –perm -444

                  技术分享
                 
            7、查找/etc目录下至少有一类用户没有执行权限的文件;

                   [root@centos71 etc]# find /etc -not -perm –111

                  技术分享


            8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

                 [root@centos71 etc]# find /etc/init.d -perm /111 -a -perm /004

                 技术分享

 

第三部分:bash 环境变量

                  bash shell是解析器,解析用户的命令

            1、配置文件

                  A:生效范围划分

                      全局配置:
                             /etc/profile, 文件比较大的情况下存在指正目录下/etc/profile.d/*.sh
                             /etc/bashrc
                       个人配置:文件以隐藏文件
                              ~/.bash_profile
                              ~/.bashrc

                B:按功能划分:(二者区别在于作用范围 

                       profile用于全局变量,bashrc用于本地变量
                     profile类:为交互式登录的shell提供配置
                              /etc/profile, /etc/profile.d/*.sh
                             ~/.bash_profile

                                功用:
                                      (1) 定义环境变量,例如PATH、PS1
                                      (2) 运行命令或脚本

                   bashrc类:为非交互式登录shell提供配置
                            /etc/bashrc
                            ~/.bashrc

                               功用:
                                     (1) 定义命令别名;如开始拥有别名
                                     (2) 定义本地变量;

          2、变量:内存空间,变量名
                     A: 类型:
                             环境变量:作用范围当前shell进程及其子进程
                             本地变量:作用范围当前shell进程
                             局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

                             位置变量:$1, $2  用于脚本传递参数
                             特殊变量:$?

                              可通过pstree查看进程树, 所有从systemd进程开始,是用户空间的第一个进程。

                                    是所有进程的父进程

                                       技术分享

                                              二个bash,第一个是第二个bash的父进程,父进程定义的对子进程有效,

                                        父进程定义的环境变量的值,在子进程中无效无法看到

                                      技术分享

                                              例如在第一个bash即父进程定义的变量

                                            name=‘51cto’

                                           echo $name 输出为 51cto

                                     这时运行子进程/bin/bash,再次输入echo $name时输出则为空

                                    技术分享

                                        同上为例:如果变量定义以exort name=’51cto’定义,在父进程与子进程都可以通过

                                    echo$name查看到

                                   技术分享

                      B: 变量定义与赋值方式
                          (1)变量定义:   

                                bash内置变量:可直接调用,内置了许多环境变量,例如PATH、ps1等
                                 自定义变量:自已给名称
                                变量赋值:变量名=值   等于号为赋值
                                     

                                     name=‘obama‘ 变量定义

                                     echo $name 引用变量

                                            bash弱类型编程语言:
                                                 变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

                                                120:24bits   120 ASCII码,转换为2进制
                                                120: 8bits

                           (2)变量赋值

                             定义过程中shell关闭后,变量失效

                                   定义本地变量:
                                         name=value

                                         查看:set

                                   定义环境变量:
                                         export name=value
                                         declare -x name=value

                                         查看:env, printenv, export

                      C:撤消变量:
                              unset name

                     D:引用变量:
                             ${name}, $name   { }绝大部分可以省略

                             如下如果将二个字符串连接到一起的情况下需要使用{ }

                               技术分享

                     E:bash中的引用符号:
                         ‘ ‘    强引用,变量替换不会发生
                        ""   弱引用,变量替换会发生
                        ``     命令引用,命令执行结果直接引用

                                进程引用

                            whick  cat的执行结果字符串 作为ls –l参数引用,先执行被引用,再执行外面引用命令

                          技术分享

                             强引用与弱引用的区别,animail变量已经定义,如果利用 echo “$animail”引用则进行变量

                   替换发生(弱引用),输出为dog,如果为echo ‘$animail’则为强引用,则输出为 $animail

                          技术分享

       3、shell登录类型:
               交互式登录:
                         直接通过终端ssh进行的登录;
                         通过su -l Username命令实现的用户切换;

               非交互式登录:
                       图形界面下打开的命令行窗口;
                       执行脚本; 会打开shell执行
                       su Username;

       4、配置文件作用次序:
               交互式登录:后面会复盖前面的变量后面的会最终生效
                        /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

                 非交互式登录:
                       ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

               注意生效范围:全局对所有用户、局部(当前用户下)

                 示例1:所有用户都生效 

                           vim /etc/profile.d/welcome.sh       /etc/profile.d为全局,以上操作针对所有用户生效

                        文件内容如下:$UID,$HOME为已定义

                             技术分享

                        用于root再通过ssh登陆时

                             技术分享

                   示例2:针对某个用户生效编辑相应用户下的~/.bash_profile 或者~/.bashrc文件 取决于自己需要

                             在root用户目录下修改bashrc文件

                             技术分享

                             然后重新登陆shell,通过别名查看包括cdnet的配置,再通过命令别名cdnet,

           则直接进入/etc/sysconfig/network-scripts目录下

                              技术分享

       5、编辑配置文件定义的新配置如何生效?

               (1) 重新登录;
               (2) 让当前shell进程去重新读取指定的配置文件;
                       source /PATH/TO/SOMEFILE
                       . /PATH/TO/SOMEFILE
                   注意:副作用(重复运行xxx.sh时,会多次出现)

                        新建xxx.sh 内容为  1 export PATH=‘$PATH:/usb/local/apach2/bin’

                      示例:   ./etc/profile.d/xxx.sh     xxx.sh为新创建

      6、字符串连接

            示例:

                  技术分享

            示例2:name重新赋值

                  技术分享

      7、问题:

               1、定义对所有用户都生效的别名?
               2、如果仅需要PATH环境变量的修改仅对root用户生效,该如何操作? 
                      

第四部分:Linux  文件上的特殊权限

        三个特殊权限  SUID   SGID    sticky

      1、 权限模型

            三类用户  u, g,o

                                      每类用户的权限r,w,x

      2、进程安全上下文

                   进程:进程也有自己的属主是发起者,以谁的身份在运行但作用并不大,

                     通过ps aux|more查看

                 技术分享

               文件有属主和属组。

         (1):任何一个用户是否能够某个可执行程序文件,启动为进程,取决于发起者对程序文件是否有权限

         (2):程序启动为进行后,此进程的属主为当前用户,也即进程的发起者,进程所属的组为发起者的基本组

         (3):进程拥有的访问权限,取决其属主的访问权限

                a:进程属主,同文件属主则应用文件属主的权限

               b: 进程的属主,属于文件的属组,则应用文件属组权限

               c:则应用其它权限

              技术分享

    3、SUID :

         (1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否有执行权限

         (2)有s权限后,启动为进程之后,其属主不是发起者,而程序文件自己的属主》这种机制为 SUID

         权限设定:

             chmod u+s file

             chmod u-s file

                   注意:当加后会出现大小写的情况

                                小s :属主原本 拥有x权限

                               大S :属主原本无x权限

                      技术分享

                      rwsr中有s说明SUID权限,不管任何用户, passwd不能带参数限制只能针对root

            chmod加s权限

                      技术分享

     4、SGID:与suid有很大不同,针对属组进行限定

                        默认每个用户创建文件时文件的属主是当前用户基本组

             一但某目录被设定为SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件

            所属的组目录的属组,而非用户的基本组(用于全局可写,每个用户可修改别人文件

             协做的情况下使用)

                  技术分享

                       -G代表附加组

                 权限设定:chmod g+s file…

                                      chmod g-s file ….

                                      chmod g+w file(有写权限)

               示例:

                        !、以root用户创建新目录,所属主和属组均为root

                        技术分享

                        !!、修改/mydata/data属组

                         技术分享

                        !!!、修改/mydata/data属组为可执行权限

                         技术分享

                         技术分享

                         !!!!、分别以用户root,51cto创建文件

                         技术分享

                                 这里创建的文件分别属于自已的属主和属组

                          !!!!!、为/mydata/data目录添加权限

                          技术分享

                          !!!!!! 再分别以root和51cto用户创建文件

                          技术分享

                                 可看到后创建的文件rootbb的属组为51cto,而非root,

                          这里其它用户不可以写,但可以删除,要注意组权限

    5、 sticky 只能删除自已的文件,不能删除另人的文件

                临时文件 /tmp /var/tmp每个写都可以写该文件最后一位权限为t

                    技术分享

               sticky(粘制位)对于一个多个可写的目录,此权限用于限制每个人只能删除自己的文件,            

                       chmod o+t file

                       chmod o-t file

                 示例:

                  !在上面的情况下51cto用户可删除root用户的文件

                     技术分享

                    !! 修改./mydata/data目录权限

                     技术分享

                     !!!再次以51cto用户删除root用户文件

                     技术分享

        6、权限整合

            suid sgid sticky

                     000

                     001

                     010

                     011

                     100

                     101

                     110

                     111

                  后3位 r,x,x

            示例:

                chmod 1755  /tmp/51cto  说明目录51cto有755权限,1代表拥有sticky权限

                chmod 4777 file ,拥有suid

                chmod 3755, 目录拥有755权限,同时拥有gid和sticky

                umask 临时生效,只针对当前shell,如果永久需要修改配置文件

               umask 0022  四位中第一位就是对应上面特殊权限

练习:

1、让普通用户能使用/tmp/cat去查看/etc/shadow文件

           A:先利用 cp  /usr/bin/cat /tmp目录

           B:查看权限

                   技术分享

            C:在51cto用户运行/tmp/cat /etc/shadow  提示无权限

            D:在root用户运行添加s权限

                 技术分享

             E:再次以51cto用户运行/tmp/cat   /etc/shadown运行正常输出。

2、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组,此外每个用户仅能删除自己的文件

             准备: 修改51cto目录属主、属组

                  技术分享

                          创建用户yy1、yy2、yy3、yy4指定密码为password,同时修改附加组为3001

                     技术分享 

                    技术分享

 

             A:以51cto用户创建/tmp/51cto/test/data目录

                       技术分享

             B:同时创建用户yy1、yy2、yy3、yy4的附加组为51cto

             C:  以4个用户分别创建利用touch,vim命令创建文件,aa为touch文件,bb为vim文件。

                这里经测试其它用户可删除文件,如下:yy1用户可删除yy4创建的yy4.cc文件

                   技术分享

               D:通过chmod修改权限

                   现有目录权限为775

                  技术分享

                   针对sgid和sticky添加权限,组增加s,sticky t

                 技术分享

               E:验证

                         yy1.cc新创建文件的属组为51cto

                     技术分享

                         删除文件:在yy4用户下,删除yy3.cc文件提示权限不足,删除yy4.cc文件正常可以删除

                     技术分享

Linux 20150830学习整理 VIM、FIND、bash环境、特殊权限

标签:interface   visual   处理器   linux   编辑器   

原文地址:http://wangsongbin.blog.51cto.com/1130001/1691102

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!