zoukankan      html  css  js  c++  java
  • 鸟哥的linux私房菜整理(1)---文件系统、磁盘

    鸟哥的linux私房菜整理(1)---文件系统、磁盘

    本文用于整理鸟哥的linux私房菜中关于文件系统、磁盘相关的知识,主要包括下面几个方面:

    • linux用户组与权限配置
    • linux目录配置
    • linux文件和目录管理
    • linux文件系统和磁盘挂载
    • linux压缩和打包相关

    linux用户组与权限配置

    基本权限

    linux任何一个文件或目录都具有User、Group和Others三个身份的个别权限。分别表示文件所有者、所在组别和既非文件所有者也非同一组别的用户对该文件的权限。此外root用户拥有对所有文件的全部权限。关于用户及root的信息存在/etc/passwd中,组名存在/etc/group中,个人的密码存在/etc/shadow中。
    需要查询linux的文件属性可以用ls -al命令,ls是list的意思,-al表示输出当前目录下所有文件拥有的权限和属性。出现的七个字段的意义如下:

    第一栏分别表示文件的类型(文件、目录或链接文件),文件拥有者、管理组和others所拥有的对文件操作的权限。三个权限分别为可读、可写和可执行。后面几栏的意义如图所示。
    改变文件属性的命令主要有三个:chgrp、chown和chmod,分别用于改变文件的群组、用户和权限。
    chgrp是change group的意思,用法如下,其中-R表示递归的改变目录下所有文件的群组。

    chgrp [-R] group dirname/filename
    chgrp users install.log
    chgrp -R users tmp
    

    chown是change owner的意思,其中的owner必须是/etc/passwd中存在的用户,另外还可以用于改变文件所在的群组,它的用法如下。

    chown [-R] owner dirname/filename
    chown [-R] owner group dirname/filename
    chown bin install.log
    chown root root install.log
    

    chmod是change mode的意思。文件的权限字符为-rwxrwxrwx,分别表示用户、群组和others的rwx权限,rwx分别用4、2、1表示,对于一部分的权限将这三个分数叠加即可,例如将某个文件test的权限配置为[-rwxrwx---],则它的分数为:

    owner = rwx = 4+2+1 = 7  
    group = rwx = 4+2+1 = 7  
    others= --- = 0+0+0 = 0   
    

    配置命令为:

    chmod 770 test
    

    此外,chmod还有一种符号改变权限的方法,如下所示:

    chmod u=rwx,go=rx test
    

    默认权限

    文件默认权限可以通过umask查看。和前面chmod的分数不同,umask的分数为默认值需要减去的权限,r、w、x分别为4、2、1,若创建为文件,则默认没有可运行权限,最大只有666分,若创建为目录则默认所有权限均开放,最大为777分。举个例子,如果查到umask分数为022,那么就说明被拿掉了group和others的w权限,所以对于文件和目录相应的权限计算就如下所示:

    创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
    创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
    

    另外,对于umask而言更重要的特性是可以为不同的目标定制权限,例如要设置只有文件的所有者可以修改所有文件,那么可以设置umask为022,拿掉除创建用户外所有用户的w权限,如下所示:

    umask 022
    

    隐藏权限

    除了上面的9个权限外,在ext2/ext3文件系统中还有一些隐藏权限(ASacdisu)其中最重要的权限为a和i,a权限表示用户只能对该文件进行添加操作,不能进行删除和修改操作,i权限表示该文件不能被删除、改名、配置链接,也无法对文件新增数据,只有root用户可以配置这个属性。
    配置和查看这些隐藏属性可以通过chattr和lsattr进行,如下所示:

    chattr [+-=][ASacdistu] 文件或目录名称
    lsattr [-adR] 文件或目录
    
    [root@www tmp]# chattr +i attrtest <==给予 i 的属性
    [root@www tmp]# chattr +aij attrtest
    [root@www tmp]# lsattr attrtest
    ----ia---j--- attrtest
    

    特殊权限SUID、SGID

    此外,还有一种权限是在对某个文件具有x权限的用户暂时拥有这个文件所有者的权限。举个例子,linux中所有用户的密码都存放在/etc/shadow这个文件里面,这个文件的权限为-r-------- 1 root root,只有root用户可以修改这个文件,对一般用户而言可以通过操作具有SUID权限的/usr/bin/passwd文件使得用户具有暂时的root权限来修改用户的密码,示意图如下:

    SGID权限也与之类似,只是改为拥有这个文件所在群组的权限。

    linux目录配置

    linux的目录配置遵循着FHS(Filesystem Hierarchy Standard )规则,将文件按照是否可以共享和是否可以改动定义为以下四种交互形式:

    可共享 不可共享
    不变 /usr (软件放置处) /etc (配置文件)
    /opt (第三方软件) /boot (开机档)
    可变 /var/mail(邮箱) /var/run
    /var/spool/news /var/lock

    根目录是linux最重要的目录,FHS标准建议根目录所在的分隔槽越小越好,因为分隔槽越小放入的无关数据越少,越不容易发生错误。根目录下的主要文件夹及其用途如下所示:

    目录 应放置文件内容
    /bin 主要放置可执行文件,包括cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。
    /boot 主要在放置开机会使用到的文件
    /dev(device) 主要放置接口文件,如/dev/null, /dev/zero, /dev/tty, /dev/lp, /dev/hd, /dev/sd*等等
    /etc 主要放置系统的配置文件,包括人员的账号密码文件、 各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有root有权力修改。
    /home 家目录,即~
    /lib 主要放置库函数
    /media 媒体文件夹,放置可以移除的设备包括光盘、DVD等
    /mnt 暂时挂载一些额外的设备
    /opt(optional application software packages) 第三方软件安装目录
    /root 系统管理员的家目录
    /sbin 用于设定系统环境的指令,这些指令只有root用户能使用,常见的包括:fdisk, fsck, ifconfig, init, mkfs等等。
    /srv 网络服务包括WWW,FTP等
    /tmp 临时文件存放位置

    除了上面FHS规定的这几个文件夹外,根目录下/usr和/var也很重要。usr的全称为Unix Software Resource(之前一直以为是user/(ㄒoㄒ)/~~)是unix系统软件资源放置位置,它的次目录与跟目录的次目录比较相似,如下所示:

    目录 应放置文件内容
    /usr/bin/ 绝大多数用户可以使用的指令,与/usr主要的差别在于不包括开机相关的指令
    /usr/include/ c/c++使用的头文件存放位置
    /usr/lib/ 各种应用软件的函数库和目标文件
    /usr/local/ 系统管理员自行下载的软件建议安装到此目录,此目录下也有bin,etc,include,lib等此目录
    /usr/sbin/ 非系统正常运行所需的系统指令(没太明白)
    /usr/share/ 放置共享文件,住要为一些文本文件(说明文档、帮助文档)
    /usr/src/ 一般源代码存放位置

    var主要用于存储大型的数据文件,包括缓存文件、日志文件、软件运行时产生的文件以及数据库文件等,它的次目录结构如下:

    目录 应放置文件内容
    /var/cache/ 应用程序本身的缓存文件
    /var/lib/ 应用程序运行过程中本身所需要用到的数据文件放置位置,例如MySQL的数据库放置在/var/lib/mysql/
    /var/lock/ linux系统下挂载各个系统资源所需要的锁的存放位置
    /var/log/ 登录文件放置的位置
    /var/mail/ 个人电子邮箱的目录,和/var/spool/mail互为链接文件
    /var/run/ 程序或服务启动时存放进程PID的位置
    /var/spool/ 存放进程的队列数据的位置

    综上,根目录下主要文件结构的目录树如下所示:

    linux文件和目录管理

    linux的文件查阅命令主要有下面几种:

    • cat由第一行开始显示文件内容
    • tac从最后一行开始显示
    • more一页一页的显示文件内容
    • less与more 类似,但是比more更好的是,他可以往前翻页
    • head只看头几行
    • tail只看末尾几行

    cat的全称是concatenate,用法如下:

    cat test
    cat -n test #打印的同时显示行号
    

    tac即从末尾往前显示,用法和cat相同。
    more表示一页一页显示文件内容,首先执行more进入逐页浏览的状态(如下所示),然后按空格进入下一页,回车下一行,b往回翻页,完成浏览后按q退出浏览模式。

    [root@www ~]# more /etc/man.config
    #
    # Generated automatically from man.conf.in by the
    # configure script.
    #
    # man.conf from man-1.6d
    ....(中间省略)....
    --More--(28%)  
    

    less的功能与more类似,但是比more更加灵活,利用less进入浏览模式后可以输入以下命令继续浏览文件:

    空白键    :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup]  :向上翻动一页;
    /字串     :向下搜寻『字串』的功能;
    ?字串     :向上搜寻『字串』的功能;
    n         :重复前一个搜寻 (与 / 或 ? 有关!)
    N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    q         :离开 less 这个程序;
    

    head和tail操作比较简单,如下所示:

    head [-n number] 文件 
    head -n 20 /etc/man.config #显示前20行
    head -n -100 /etc/man.config #显示倒数100行之前的行数
    
    tail [-n number] 文件 
    tail -n 20 /etc/man.config
    tail -n +100 /etc/man.config #显示100行以后的文件
    

    linux文件系统和磁盘挂载

  • 相关阅读:
    leetcode_268.missing number
    leetcode_41. First Missing Positive_cyclic swapping
    cyclic swapping algorithm
    leetcode_919. Complete Binary Tree Inserter_完全二叉树插入
    前端的图片隐写术
    C#读取串口数据实现无线手柄操作ROV
    通过android传感器控制ROV云台转动
    C#实现的简易多人聊天室
    ARM Cortex M3指令集
    ODbgscript 1.82.x Document
  • 原文地址:https://www.cnblogs.com/cjh-DataCastle/p/7506990.html
Copyright © 2011-2022 走看看