zoukankan      html  css  js  c++  java
  • Linux基本命令篇 文件管理

    什么是文件系统?

    文件系统是操作系统在分区上保存文件信息的方法和数据结构.

    Linux文件系统具有类似的通用结构, 其关键组成部分有:

        超级块 super block

        索引节点 inode

        数据块 data block

        目录块 directory block

    三种基本权限

    代表字符 权限 对文件的含义 对目录的含义
    r 读权限 可以读文件的内容 可以列出目录中的文件列表
    w 写权限 可以修改,删节文件 可以在目录中创建, 删除文件
    x 执行权限 可以执行该文件 可以使用cd命令进入该目录

    目录上只有执行权限, 表示可以进入或穿越它进入更深层次的子目录.

    目录上只有执行权限, 要访问该目录下的有读权限的文件, 必须知道文件名才可以访问.

    目录上只有执行权限, 不能列出目录列表也不能删除该目录.

    目录上执行权限和读权限的组合, 表示可以进入目录并列出目录列表.

    目录上执行权限和读权限的组合, 表示可以在目录中创建,删除和重命名文件.

    特殊权限

    特殊权限

    说明

    SUID 当一个设置了SUID位的可执行文件被执行时, 该文件将以所有者的身份执行. 也就是说无论谁来执行这个文件, 他都有文件所有者的特权, 任意的存取该文件的人能使用全部的系统资源. 如果所有者是root的话, 那么执行人就具有超级用户的权限.
    SGID 当一个设置了SGID位的可执行文件运行时, 该文件将具有所属组的特权, 任意存取整个组所能使用的系统资源, 若一个目录设置了SGID, 则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样, 除非在复制文件时加上-p(preserve, 保留文件属性)的参数, 才能保留原来所属的群组设置.
    sticky-bit 对一个文件设置了sticky-bit之后, 任何用户都有写权限, 但必须由属主执行删除, 移动等操作; 对一个目录设置了sticky-bit之后, 存放在该目录的文件仅允许属主执行删除, 移动等操作.

    一个设置了SUID的典型例子是passwd程序, 它允许普通用户改变自己的口令, 这是通过改变/etc/shadow文件的口令字段实现的. 然而系统管理员绝不允许普通用户直接改变/etc/shadow文件的权利. 因为这绝对不是个好主意. 解决方法是将passwd的程序设置SUID, 当passwd程序被执行的时候后, 普通用户将具有超级用户的权限, 而passwd程序运行结束之后, 回到普通用户的权限.

    查看/usr/bin/passwd文件的权限的话, 它的权限设置如下: –rwsr-xr-x 当中的s代表suid.

    查看/tmp目录, 会发现它的权限如下: drwxrwxrwt 其中的t就是sticky-bit

    Linux文件类型

    普通文件: 包括文本文件, 数据文件, 可执行的二进制程序文件等.

    目录文件: Linux系统把目录看成是一种特殊的文件, 利用它构成文件系统的树形结构.

    设备文件: Linux系统把每一个设备都看成是一个文件. 其又分为块设备字符设备.

    链接文件

    文件类型的表示

    普通文件 -
    目录 d
    符号链接 l
    字符设备文件 c
    块设备文件 b
    套接字 s
    命名管道 p

    系统文件

    *.conf 配置文件

    *.rpm rmp包

    *deb deb包

    *.a 一种存档文件

    *.lock 一种锁定文件

    *.~ 备份文件

    .* 隐含文件

    程序和脚本

    *.c C语言源程序文件

    *.cpp C++语言源程序文件

    *.h C或C++的头文件

    *.o 程序对象文件

    *.pl Perl语言源程序文件

    *.php PHP语言源程序文件

    *.python Python语言源程序文件

    *.tcl TCL脚本文件

    *.so, *.lib 库文件

    创建文件的命令: touch file1 该命令创建了一个名为file1的空文件.

    touch .file2 该命令创建了一个名为.file2的隐藏文件. 查看隐藏文件需要用ls -a命令.

    sudo touch /boot/file1 该命令使用超级用户的权限在/boot目录下创建名为file1的空文件.

    删除文件的命令: rm test  该命令删除test文件

    rm test .test 该命令删除多个文件.

    Unix和Linux中,如果没有任何返回,就是说明命令运行成功了.

    查看文件的命令: cat, less, more.  less跟cat的区别是less是分屏显示. more跟less的区别是more不能用上箭头键回选, 翻到最后自动退出. cat不管文件多大, 全部显示, 自动退出.

    拷贝命令: cp /boot/grub/menu.lst ./menu.bak.lst 该命令把boot下的menu.lst复制到当前目录, 复制的文件名为menu.bak.lst.

    . 代表当前目录.

    .. 代表当前目录的上一级目录.

    重命名文件命令: mv menu.bak.lst menu.backup 该命令将当前目录下的menu.bak.lst重命名为当前目录下的menu.backup文件. 其实他是一个剪切命令. 它既可以移动一个文件, 也可以重命名一个文件.

    查找文件的命令: find

    例如: sudo find / –name ls 该命令会从根目录找, 寻找名字为ls的文件.

    sudo find / –name “ls*” 从根目录开始查找, 寻找名字以ls开头的文件.

    使用ctrl + c来终止搜索的执行.

    管理文件权限的命令: chmod

    chmod [-R] {[ugoa][+-=][rwxst]}

    -R 表示递推地对该目录下的所有子目录实施权限设置.

    {}内的内容称为一个模式, 可以指定多个模式, 多个模式之间用逗号间隔.

    u 表示属主(user)
    g 表示所属组用户(group)
    o 表示其他用户(other)
    a 表示所有用户(all)

    + 表示增加权限
    - 表示删除权限
    = 表示分配权限, 同时将原有权限删除
    r 表示允许读取
    w 表示允许写入
    x 表示允许执行

    chmod go-r testfile1 略

    chmod u+x testfile1 略

    chmod u-x,go+r testfile1 属主删除执行权限, 组和其他用户添加读取权限.

    chmod g=u testfile1 将组权限设置为跟属主相同

    chmod o+u testfile1 对其他人添加属主具有的权限

    chmod 755 testfile2

    chmod 600 testfile2

    数值设定法

    执行 二进制 八进制 说明
    - - - 000 0 没有权限
    - - x 001 1 允许执行
    - w - 010 2 允许写入
    - w x 011 3 允许执行和写入
    r - - 100 4 允许读取
    r - x 101 5 允许执行和读取
    r w - 110 6 允许写入和读取
    r w x 111 7 允许执行写入和读取

    改变文件所属的用户与所属的用户组的命令: chown

    命令格式: chown [-R] <用户[:组]><文件或目录>

    同样地, 若操作对象是目录, 则递归地对该目录下面的所有的子目录实施设置.

    要单独改变组, 可以使用下面的格式:

    chown [-R] <:组><文件或目录> 注意: 组前必须有":"

    例: chown jason /home/jane/testfile3 改换属主为jason

    chown :users /home/jane/testfile3 改换所属的组为users

    chown group1:group1 /home/jane/testfile3 将属主和属组改成group1

    chown -R apache:apache /home/osmond/testdir 将testdir目录及其子目录下的所有文件或目录的属主和组读改成apache

    Umask命令

    用户可以使用umask命令设置文件的缺省生成掩码. 缺省的生成掩码告诉系统当创建一个文件或目录时, 不应该赋予其哪些权限. 如果用户将umask命令放在环境文件(.bash_profile)中, 就可以控制所有新建的文件或目录的访问权限.

    命令格式: Umask [u1u2u3]

    其中u1表示的是不允许属主的权限; u2表示的是不允许同组的人有的权限; u3表示的是不允许其他人有的权限.

    可以使用不带任何参数或带-S参数的umask命令查看当前缺省生成掩码.

    $ umask

    0022

    $ umask –S

    u=rwx, g=rx, o=rx

  • 相关阅读:
    Java设计模式
    Java并发编程教程
    Java 教程
    AWT
    Java编程思想
    Java.math.BigDecimal类
    Java8环境设置
    Java.util包教程
    XML
    硬盘空间术语:unallocated, unused and reserved
  • 原文地址:https://www.cnblogs.com/awpatp/p/1528201.html
Copyright © 2011-2022 走看看