(三)Linux文件权限属性

深入理解linux内部

用户与用户组

在Linux里面,任何一个文件都具有用户(user)、所属群组(group)、其他人(others)三种身份的个别权限

所有用户都在/etc/passwd里面,个人密码在/etc/shadow里,群组则在/etc/group里面

文件属性

  1. 使用su -切换成root
  2. 输入ls -al
    • ls代表list
    • -al可以列出所有文件及属性,包括隐藏文件(.)

permission

1
-rw-r--r--.  1 root root    6 12月 29 23:03 1.text

1.第一栏有10个字符,那个.应该没意义

  • 第一个字符
    • -表示文件
    • d表示目录,
    • l表示链接文件(link file)
    • b代表设备文件里可存储的周边设备
    • c代表设备文件里的串行端口设备,如鼠标、键盘等
  • 2-4三个字符是文件拥有者的权限
    • r代表可读(read)
    • w代表可写(write)
    • x代表可执行(excute)
  • 5-7用户组的权限,8-10其他人的权限
  • 没权限则用-表示,rwx顺序不变

2.第二栏表示有多少文件名链接到此节点(inode

  • 每个文件会将它的权限和属性记录到inode中,由于使用目录树,每个文件都会连接到一个inode,这个属性就是代表有多少不同的文件名连接到同一个inode

3.第三栏表示拥有者账号

4.第四栏表示所属用户组

5.表示大小,默认单位Byte

6.为创建日期或最近修改日期

  • 可使用ls -al --full-time获得所有时间格式

7.第七个为文件名,带.的为隐藏文件

权限的重要性

  • 系统保护的功能
  • 团队开发软件或数据共享的功能
  • 未将权限设置妥当会被有心人士用来搞破坏
  • 所以修改文件时要注意哪些不能动

修改文件属性和权限

  • chgrp(change group,修改所属用户组)

  • chown(change owner,可以修改用户和用户组)

  • chmod(修改文件权限)

    1.修改数字权限

    权限一般是rwxrwxrwx九个字符,它们3个3个一组,使用数字代表每个权限

    对照表

    1
    2
    3
    r:4
    W:2
    x:1

    每个身份的权限是相加的

    1
    2
    3
    owner:rw- ==>  4+2=6
    group:rw- ==> 4+2=6
    others:rw- ==> 4+2=6

    这个文件的权限就用666来表示

    2.符号类型修改权限

    格式

指令 身份 操作 权限 文件/目录
chmod u(user) + r
g(group) _ w
o(others) = x
a(all)
1
2
3
[root@study ~]# chmod u=rwx,g-x,o-wx 1.text 
[root@study ~]# ls -al
-rwxrw-r--. 1 root root 6 12月 29 23:03 1.text

目录、文件权限的意义

  • 目录
    • r:可以查到这个目录里的文件名
    • w
      • 建立新文件和目录
      • 删除文件(不管权限)
      • 改已存在的文件和目录的名字
      • 移动里面的文件
    • x:是否可以进入该目录
  • 文件
    • r:读取文件内容
    • w:编辑内容
    • x:可以被系统所执行
      • 与Windows不同,Windows的可执行文件时看后缀来的,比如exe、bat等,Linux就看这个权限有没有

需要注意的是只要你有这个目录的权限,不管这个目录下的文件是不是你的,你都能删除这些文件

文件种类和扩展名

1.常规文件(第一个属性是-)

  • 纯文本文件(ASCII):可使用cat来查看文件内容
  • 二进制文件(binary):比如可执行文件就是二进制文件
  • 数据文件(data):有特殊格式,可以使用last读取

2.目录

  • 第一个属性是d
  • 第一个属性为l,类似windows的快捷方式

4.设备及设备文件(devices)

  • 区块设备文件:第一个属性为b,提供随机存取的接口设备,如硬盘等
  • 字符(character)设备文件:第一个属性是c,串行接口设备,例如键盘、鼠标,一次性读取,不能截断输出

5.数据接口文件(sockets)

  • 通常在网上用来做数据交换用
  • 第一个属性为s

6.数据输送文件(FIFO,pipe)

  • FIFO是为了解决多个程序读取文件发生错误的一种特殊文件格式
  • 第一个属性是p

7.Linux扩展名

  • 如上,只要有x就能执行,不用管什么扩展名

拥有可执行权限也要看是否有可执行代码,不然也没用

当然,还是要了解一些扩展名代表哪些种类

  • *.sh:脚本或批处理文件,使用shell写的
  • Z、\.tar、*.tar.gz、*.zip、*.tgz:打包的压缩文件
  • .html、\.php:网页相关文件,.html可使用网页浏览器运行,.php要用客户端浏览器才行
  • 文件名长度限制
    • 单一文件名或目录名限制255字节长度
    • emm因为想一看这文件名就知道这文件是干嘛的,所以Linux的文件名非常长
  • 文件名的限制
    • 避免和一些指令重合,要避免+-,开头的.
    • 有一些字符在命令行中有特殊意义,也要避免这样命名
作者

manu

发布于

2020-01-05

更新于

2023-01-06

许可协议


:D 一言句子获取中...