天天看点

Linux基础学习之文件权限如何修改文件属性与权限目录与文件的权限意义Linux文件种类与拓展名

文件权限与目录配置

  • 如何修改文件属性与权限
    • 修改文件所属用户组 chgrp
    • 修改文件拥有者 chown
    • 修改文件权限 chmod
      • 数字类型修改文件权限
      • 文字类型修改文件权限
  • 目录与文件的权限意义
    • 对文件的重要性
    • 对目录的重要性
  • Linux文件种类与拓展名
    • 文件种类
    • Linux文件名
    • Linux文件名长度限制
    • Linux文件名的限制

如何修改文件属性与权限

修改文件所属用户组 chgrp

change group ==>chgrp

要修改的组名必须在/etc/group中存在,否则显示错误。

[[email protected] ~ ]# chgrp  [-R]   dirname/filename
           

选项与参数 :

-R:进行递归(recursive)修改,亦连同子目录下的所有文件、目录都更新成为这个用户组之意,常常用在修改某一目录内所有的文件之情况。

范例:

[[email protected] ~ ]# chgrp  users initial-setup-ks.cfg
           

修改文件拥有者 chown

change owner ==>chown

用户必须是已经存在的账号,也就是在/etc/passwd中有记录的用户名称才可修改。

除了修改文件拥有者外,还可顺便直接修改用户组的名称。

[[email protected] ~ ] # chown [-R] 账号名称 文件或目录
[[email protected] ~ ] # chown [-R] 账号名称:用户组名称  文件或目录
           

范例:

[[email protected] ~ ] # chown root:root initial-setup-ks.cfg
           

修改文件权限 chmod

更改模式==> chmod

数字类型修改文件权限

R:4

W:2

X:1

owner= rwx = 4 + 2 + 1 = 7

group= rwx = 4 + 2 + 1 = 7

others= - - - = 0 + 0 + 0 = 0

[[email protected] ~]# chmod [-R] xyz

文件或目录选项与参数:

xyz:就是刚刚提到的数字类型的权限属性,为rwx属性数值的相加

-R:进行递归修改,亦连同子目录下的所有文件都会修改

[root @ study〜] #ls -al .bashrc -rw-r--r--。
1root 176 2013年12月29日.bashrc
[root @ study〜] #chmod 777 .bashrc 
[root @ study〜] #ls -al .bashrc -rwxrwxrwx。
1 root root 176 2013年12月29日.bashrc
           

文字类型修改文件权限

chmod u / g / o / a + / - / = r / w / x 文件或目录
[[email protected] ~ ]#chmod  u=rwx,go=rx  .bashrc
           

注:u=rwx,go=rx 是连在一起的,中间没有空格

[[email protected] ~ ]#chmod u+rx,go+x .bashrc
           

在+/-的状态在,只要是没有指定到的项目,则该权限不会被变动

目录与文件的权限意义

对文件的重要性

  1. 与Windows区别:文件是否能被执行,借由是否有【x】这个权限来决定,与文件名没有绝对的关系。
  2. 当对一个文件有【w】权限时,具有写入、编辑、新增、修改文件内容的权限,但并不具有删除该文件本身的权限。

对目录的重要性

  1. r(read contents in directory)表示具有读取目录结构列表的权限,所以当你具有读取一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用ls这个命令将该目录的内容列表显示出来。
  2. w(modify contents of directory)表示具有修改该目录结构列表的权限,也就是:

    (1)建立新的文件和目录;

    (2) 删除已经存在的文件与目录(无论该文件的权限是什么)

    (3)将已存在的文件或目录进行更名;

    (4)移动该目录内的文件、目录位置

  3. x(access directory)表示用户具有进入该目录成为工作目录的权限

工作目录(work directory): 登录Linux时,所在的家目录就是当前的工作目录。

组件 内容 替代对象 r w x
文件 详细数据data 文件夹 读到文件内容 修改文件内容 执行文件内容
目录 文件名 可分类抽屉 读到文件名 修改文件名 进入该目录的权限

示例:

假设有三个文件名

  • /dir1/file1
  • /dir2
操作 /dir1 /dir1/file1 /dir2 重点
读取file1内容 x r - 要能进入/dir1才能读到里面的文件数据
修改file1内容 x rw - 要进入/dir1且修改file1
执行file1内容 x rx - 要进入/dir1且能运行file1
删除file1内容 wx - - 要进入/dir1且具有目录修改的权限
将file1复制到/dir2 x r wx 要能读file1且具有/dir2的修改权限

注:要开放的目录通常具有rx这两个权限

Linux文件种类与拓展名

文件种类

  • 常规文件(regular file)

    就是一般我们在进行读写的类型的文件,在由ls -al所显示出来的属性方面,第一个字符为[ - ],例如[- rwxrwxrwx]。

    • 纯文本文件(ASCII)

      几乎只要我们可以用来作为设置的文件都属于这一种文件类型。

    • 二进制文件(Binary)
    • 数据文件(data)

      有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件,那些特定的文件可以被称为数据文件(data file)。举例来说,我们的Linux在用户登录时,都会将登录的数据记录在/var/log/wtmp这个文件内,该文件时一个数据文件,它能够通过last 这个命令读出来。但是使用cat时,会读出乱码,因为它是属于一种特殊格式的文件。

  • 目录(directory)

    第一个属性为[d]

  • 链接文件(link)

    第一个属性为[l],类似windows系统下面的快捷方式

  • 设备与设备文件(device)

    与系统周边及存储等相关的一些文件,通常都集中在/dev这个目录下

    • 区块(block)设备文件

      就是一些存储数据,以提供系统随机存取的接口设备,举例来说硬盘和软盘就是。你可以随机地在硬盘的不同区块读写,这种设备就是块设备。通常在/dev/sda里面,第一个属性为[b]。

    • 字符(character)设备文件

      亦即是一些串口端口的接口设备,例如鼠标键盘等。这些设备的特色就是一次性读取,不能够截断输出。举例来说,你不可能让鼠标跳到另一个画面,而是连续滑动到另一个地方,第一个属性为[c]。

  • 数据接口文件(sockets)

    通常用于在网络上的数据交换,最常在/run或/tmp中看到这种文件类型,第一个属性为[s]。

  • 数据输送文件(FIFO,pipe)

    FIFO是先进先出(first-in-first-out)的缩写,即管道,主要目的是解决多个程序同时读写一个文件所造成的错误问题。第一个属性为[p]。

Linux文件名

一个Linux文件能不能被执行,与它第一栏的十个属性有关,与文件名一点关系都没有,只要权限有x,就代表这个文件具有可以被执行的能力。

但具有可以被执行的能力,能不能执行成功还是得看文件内容。通常还是会以适当的拓展名来表示该文件是什么类型,下面有数种常用的拓展名:

  • *.sh:脚本或批处理文件(scripts)
  • .Z、.tar、.tar.gz、.zip、.tgz:经过打包的压缩文件
  • .html、.php:网页相关文件

Linux文件名长度限制

在Linux下面,使用传统的ext2、ext3、ext4文件系统以及近来被CentOS7当作默认文件系统的xfs而言,针对文件的文件名长度限制为:

  • 单一文件或目录的最大容许文件名为255字节,以一个ASCII英文占用一个字节来说,则大约可达255个字符长度。若是以每个汉字占用2个字节来说,最大文件名就是大约在128个汉字之间

Linux文件名的限制

由于Linux在命令行模式下的一些命令操作关系,一般来说,你在设置Linux下面的文件名时最好避免一些特殊的字符比较好,例如下面这些:

*  ?  >  <  ;  &  ![  ]  |  \  ‘  ”  `  (  )  {  }
           

继续阅读