zoukankan      html  css  js  c++  java
  • Linux(三)__文件权限、系统的查找、文本编辑器

    一、文件权限

    1.理解文件权限及其分配

    2.掌握查看文件和目录的权限

    3.掌握权限文字表示法和数值表示法

    4.学会使用chmod命令设置权限

    5.学会使用chown命令修改属主和组

     

    linux文件能不能被执行完全看属性,与文件名一点关系都没有,在windows下能被执行的文件扩展名通常.com .exe .bat等,

    而在linux下,只要权限中有x的话,就代表这个文件能被执行。

    但是如果是其他软件的编译器去执行文件的时候是必须有相应的后缀名才能执行,如用javac去编译文件它只识别.java文件。

    文件所有者、所在组和其它组

    在linux中的每个用户必需属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。

    (1)所有者

    一般为文件的创建者,谁创建了该文件,就是天然的成为该文件的所有者。

    用[ls -ahl]命令可以看到文件的所有者

    你也可以用[chown 用户名 文件名]来修改文件的所有者

    (2)所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。

    用[ls -ahl]命令可以看到文件的所有组。

    你可以通过[chgrp 组名 文件名]来修改文件所在的组

    (3)其它组

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

    (4)改变用户所在的组

    在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组:

     usermod -g 组名 用户名

    你可以用

     usermod -d 目录名 用户名 改变该用户登陆的初始目录

     

    如何在linux中添加组

    需要用root用户来添加,普通用户无法进行用户和组的添加

    添加组命令:groupadd 组名

     

    查看linux中所有组的信息

    命令:vi /etc/group

    查看命令:cat /etc/group

    组名:x:组ID号:

     

    创建用户,并同时指定将该用户分配到指定组。

    命令:useradd -g 组名 用户名

     

    查看linux中所有用户信息

    可编辑查看命令:vi /etc/passwd

    查看命令:cat /etc/passwd

    查看详细信息:ls -l  fileName(LInux标准)或者ll fileName

    -rw-r--r--  分别表示对当前用户可读可写、对当前用户组只可读、对其他用户只可读。这是默认权限。

     

    使用chmod命令设置权限

     

    用数字表示可以同时处理三组权限,而使用字符则只能一个一个修改。chmod 777 fileName  可以将所有权限打开。

    使用chown命令修改属主和组

    chown root:root test/

     

    SUID:

    [xiangkejin@localhost tmp]$ ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

    passwd的拥有者是root,且拥有者权限里面本应是x的那一列显示的是s,这说明这个命令具有SUID权限

    以普通用户执行这个命令时,当系统生成对应的进程后,这个进程就拥有了/usr/bin/passwd文件拥有者root的权限,只是借助,如果改成rwx普通用户就没法执行。

     

    SGID:

    新建用户:useradd user

    创建一个组:groupadd share 

    添加用户到组:

    usermod -G share user
    这样做会使你离开其他用户组,仅仅做为用户组 share 的成员。

    应该加上 -a 选项:
    usermod -a -G share user
    -a 代表 append, 也就是将自己添加到用户组 share, 而不必离开原来到用户组。

    更改文件目录的组:chgrp file  share/

    现在账号user新建一个文件,新建文件的拥有者和用户组都会是user!重要的是其他用户都无法访问这个文件!现在我们的需求是让属于同一组中的用户都能访问修改这个文件。
    所以我们需要给这个目录加入SGID权限,之后任意一个用户创建的文件,文件用户组都会是这个目录的用户组。

    chmod 770  share/ 更改权限设置

     

    SBIT:

    drwxrwxrwt. 16 root root 4096 11月 22 19:52 tmp

    当给一个目录设置了SBIT权限,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。

     

    查看特殊权限的方法就是普通的ls命令:
     SUID会在所属用户权限本应是x的地方显示s
     SGID会在所属用户组权限本应是x的地方显示s
     SBIT在其它用户权限本应是x的地方显示t

     

    二、Linux系统的查找

    which查找文件、whereis查找指定文件、locate查找、find查找、find查找实例

    which只能查找到可执行文件,并且只能在根据用户环境变量信息到指定路径下查找。

     查看环境变量设置 env

     vim  /root/.bash_profile修改环境变量

    whereis是查找自己的数据库,数据是提前写到数据库中。帮助文档,配置文件这些。

    locate查找:模糊查找,找到所有相关信息。

    find查找:查找较慢,查找硬盘。

    按时间查找:

    #-atime  #-mtime   #-ctime   #-amin   #-mmin   #-cmin

     所以这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟  

    如果跟的是具体数字 find / -atime 10  表示在第十天被访问的文件(/表示从根目录开始查找),表示区间加上+-

              #find  /tmp  –atime  +5           //表示查找在五天前访问过的文件

              #find  /tmp  -atime  -5            //表示查找在五天内访问过的文件

     

    根据文件名查找

        #  -name       //根据文件名查找(精确查找)

        #  -iname       //根据文件名查找,但是不区分大小写 

    根据文件类型来查找文件:

      -type            f     // 普通文件

                          d     //目录文件

                          l     //链接文件

                          b     //块设备文件

                          c     //字符设备文件

                          p     //管道文件

                          s     //socket文件

    文件大小查找:

    find / -size +1000k  查找大于1M的文件

    通配符匹配文件名:

    find / -name '*pass*'   只要包含pass关键字

    查找特殊权限的文件:

        -perm

              #find  /tmp  -perm  755           //查找在/tmp目录下权限是755的文件

              #find  /tmp  -perm  +222          //表示只要有一类用户(属主,属组,其他)的匹配写权限就行

              #find  /tmp  -perm  -222          //表示必须所有类别用户都满足有写权限

     

    三、文本编辑器

    普通模式:这种模式下键盘上的字符都代表着特殊操作

     跳至指定的行

    「ctrl」+「g」列出光标所在行的行号。

    「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

     回撤上一次操作

    「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复

     [ctrl+r]:对使用u命令撤销的操作进行恢复

     复制

    「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

    「#yw」:复制#个字到缓冲区

    「yy」:复制光标所在行到缓冲区。

    「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

    「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

    删除

    「x」:每按一次,删除光标所在位置的"后面"一个字符。

    「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。

    「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。

    「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。

    「dd」:删除光标所在行。

    「#dd」:从光标所在行开始删除#行

    插入模式:在普通模式按i键进入插入模式,按Esc退出到普通模式

    命令模式:在普通模式按:键进入插入模式,按Esc退出到普通模式 

         q!强制退出

         wq保存退出

    列出行号

    「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号

    跳到文件中的某一行

    「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

    查找:

     

    方法如下:

     

    1、命令模式下输入“/字符串”,例如“/Section 3”。

     

    2、如果查找下一个,按“n”即可。

     

    要自当前光标位置向上搜索,请使用以下命令:

     

    /pattern Enter

     

    其中,pattern表示要搜索的特定字符序列。

     

    要自当前光标位置向下搜索,请使用以下命令:

     

    ?pattern Enter 

     

    vi支持同时打开多个文件:

    vi file1 file2 file3

  • 相关阅读:
    Activator.CreateInstance 反射实例化对象
    MVC Form提交
    Redis 下载
    List<T> 序列化与反序列化
    快速反射DataTable
    数据库特性
    javascript判断文件大小
    MD5
    HttpHelper
    cacheHelper
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6091534.html
Copyright © 2011-2022 走看看