zoukankan      html  css  js  c++  java
  • linux中crw brw lrw代表什么?

    每次使用ls -al 查看文件信息,都只看rw-rw-rw- (权限为666),忽略最前面的c/b/l,今天了解一下:

    linux中c表示字符设备文件,b表示块设备文件,l表示符号链接文件,r表示可读权限,w表示可写权限。

    linux文件属性解读:

    文件类型:

    -:普通文件 (f)
    d:目录文件
    b:块设备文件 (block)
    c:字符设备文件 (character)
    l:符号链接文件(symbolic link file)
    p:命令管道文件(pipe)
    s:套接字文件(socket)
    文件权限: 9位,每3位一组,每一组:rwx(读,写,执行),当改组不具有某一权限用-代替。
    第一组为: 文件拥有者的权限, 该文件的拥有者可以读写,但不可执行;
    第二组为: 同群组的权限
    第三组为: 其他非本群组的权限

    c 字符设备   权限666(所有用户可读写 ) 199设备号    0设备号   

    linux中的文件种类

    (1)普通文件('-', regluar file)

             分为:二进制文件和文本文件

             二进制文件,是给机器看的,例如:.bin, .elf文件

             文本文件:给人看的,一般为ASCII编码,需要用ASCII编码解析,例如:.txt,.c文件。

    (2)文件夹文件 ( 'd ',  directory file)

             一种特殊的文件,特殊在:需要用其库函数打开。

    (3)链接文件 ('l', link file)

             这里是软连接文件,

             注意:软连接文件和硬链接文件的差别,

             软连接文件,本身就是一个独立的文件,有自己的 inode,

             硬链接文件,不是独立的文件,他和被链接的文件共用同一个 inode.

    (4)管道文件 ('p', piple file)

             用于进程通信。

    (5)套接字文件 ('s', socket file)

             用于网络。

    (6)字符设备文件 ('c', character file)

             为虚拟文件,因为本身不存在于硬盘中,是fs创建的。

             不能直接读写,要使用API.

    (7)块设备文件 ('b', block file)

             也是虚拟文件,为fd创建,要使用API读写。

    3. 如何获取一个文件的属性?

    (1)shell 中使用 stat 命令

    (2)程序中使用 stat API

    4. 文件的权限

    (1)文件权限如何获得?

    在程序中使用 stat API,可以获得 st_mode 元素,st_mode 是一个以位为单位记录内容,所以只需要对对应位进行 & 即可,linux提供了对应的宏,可以用宏。

    (2)如何判断程序对文件是否有权限?

    首先,程序对文件的权限,是由执行程序的用户决定的,用户有权限,程序就有,用户没有,程序就没有,其次在程序中判断是否有权限使用 access API,最后,优秀程序在执行开始首先要对操作的文件判断权限,如果没有权限,需要对使用者进行提醒。

    (3)如何修改权限?

    shell中有chmod命令,同样也有chmod API,所以使用这个API即可。

  • 相关阅读:
    阿里的面试官都喜欢问哪些问题?
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    招聘季!送你21套经典面试题!助你一臂之力!
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    为什么需要分布式配置中心?
    线上出故障了!我慌得一匹!教大家如何应对在线故障!
    阿里巴巴的26款超神Java开源项目!
    完了!生产事故!几百万消息在消息队列里积压了几个小时!
    十大经典排序算法(动图演示)
    用户画像学习笔记
  • 原文地址:https://www.cnblogs.com/victorywr/p/15725170.html
Copyright © 2011-2022 走看看