Linux:Linux 文件属性,修改文件属性和权限,目录与文件权限的意义,linux 文件种类与扩展名

在Linux中,任何一个文件都有用户(User),所属群组(Group),及其他人(Ohters)三种身份的个别权限。另外,系统上的帐号和root 的相关信息在 /etc/passwd 这个文件里,个人密码在 /etc/shadow 这个文件里。所有的组名在 /etc/group 中。这三个文件是很重要的,不要随便删了。。。

Linux 文件属性

【ls】 查看文件的命令。登陆系统,使用【su - 】 切换成root 使用【ls -al 】

[root@study ~]# ls -al  # 显示所有文件,包括隐藏文件
总用量 36
dr-xr-x---.  5 root root  225 527 21:04 .
dr-xr-xr-x. 17 root root  224 512 21:30 ..
-rw-------.  1 root root 2201 512 21:31 anaconda-ks.cfg
-rw-------.  1 root root   10 526 20:40 .bash_history
-rw-r--r--.  1 root root   18 1229 2013 .bash_logout
-rw-r--r--.  1 root root  176 1229 2013 .bash_profile
-rw-r--r--.  1 root root  176 1229 2013 .bashrc
drwx------.  4 root root   31 526 20:29 .cache
drwxr-xr-x.  3 root root   18 526 20:29 .config
-rw-r--r--.  1 root root  100 1229 2013 .cshrc
drwx------.  3 root root   25 512 21:32 .dbus
-rw-r--r--.  1 root root 2249 512 21:32 initial-setup-ks.cfg
-rw-r--r--.  1 root root  129 1229 2013 .tcshrc
-rw-------.  1 root root  114 527 21:04 .xauthcodBEp
权限       连接 拥有者 用户组  文件容量   修改日期  文件名
  • dr-xr-x— 这个东西代表文件的类型与权限
    这一栏十个字符,第一个字符代表这个文件时目录[d],文件[ - ]或链接文件[ | ]等.[b] 表示为设备文件里面的可供存储的周边设备。 [c] 表示设备文件里面的端口设备,键盘鼠标啥的。
    接下来的字符三个一组。是 [ rwx] 的组合。r 代表可读,w 可写,x 可执行如果没有权限就是 - 。注意这三个的顺序不变。
    共有三组,第一组时文件拥有者可具备的权限,第二组是加入此用户组之帐号的权限,第三组其他人的权限。
    这些权限都是针对用户的,而不是电脑。

  • 第二栏表示有多少文件名连接到此节点(inode),每个文件都会将他的权限与属性记录到文件系统的 inode 中,不过,我们的目录树使用文件名来记录,因此每个文件名都会连接到一个 inode,,这个属性就是记录有多少不同的文件名连接到同一个 inode 号码。

修改文件属性和权限

  • 修改所属用户组: chgrp
    要被修改的组名必须要在 /etc/group 文件中存在才行。
  • 修改文件拥有者,chown.用户也必须是已经存在的帐号,还可以顺便修改用户组的名称,如果连目录下所有的子目录或文件同时更改文件拥有者,前面加上 -R 就好。chown [-R] 帐号名称:所属用户组 文件或目录
    通常我们使用 cp 源文件 目标文件进行复制文件发送给其他人,但是新的文件属性不变,所以为了使其他人可以使用,就要使用 chgrp chown 来修改用户组,文件拥有着。
  • 修改权限 chmod 权限的设置方法有两种,数字和符号。
  1. 数字:文件的基本权限有9个,三个身份三个权限。r:4 w:2 x:1 [-rwxrwx---] owner=4+2+1=7 group=7 other=0 所以权限数字就是770 . chmod [-R] xyz 文件或目录
[root@study ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 1229 2013 .bashrc
[root@study ~]# chmod 777 .bashrc          # 开启全部权限
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 1229 2013 .bashrc
  1. 符号类型修改文件权限。使用 u ,g,o 来代表三个身份。此外 a 代表 all 集全部身份
[root@study ~]# chmod u=rwx,go=rx .bashrc
[root@study ~]# chmod a+w .bashrc         # 三种用户都加上可写的权限
[root@study ~]# chmod a-w .bashrc			# 减去

目录与文件权限的意义

  1. 权限对文件的重要性
    文件时实际含有数据的地方,包括一般性文本,数据库文件,二进制可执行文件。
  • r :可读取此文件的世纪内容,如读取文本文件的文字内容等;
  • w : 可以编辑,新增或是修改文件的内容(不包括删除)
  • x :该文件具有可以被系统执行的权限。

对于可执行文件,在 window 中,一个文件是否可以执行主要看扩展名。但是在 linux 下,就看有没有这个权限。跟文件名没有关系。

  1. 权限对目录的重要性
    目录主要的内容是记录文件名列表,文件名与目录有强烈的关联,
  • r : 表示具有读取目录结构列表的权限,当有这个权限时,表示你可以查询该目录下的文件名数据,所以可以使用 ls 这个命令将该目录的内容列表显示出来。
  • w 表示你具有改动该目录结构列表的权力,建立新的文件和目录,删除已经存在的文件和目录(无论该文件的权限是什么),将以存在的文件或目录进行更名,移动该目录的文件、目录的位置。
  • x 虽然目录不可被执行,这个代表用户能否进入该目录成为工作目录(就是进入该目录的权限)。所谓的工作目录就是你目前所在的目录,变换目录的命令就是 [cd[ 。也就是说,如果你有 r 权限,但没有 x 权限,你可以浏览此目录下的文件列表,但不能切换进这个目录,也就无法执行该目录下的任何命令,即使你有该目录的 r w 权限。

来玩一下:

  • 先用root 身份建立所需的文件与目录环境
[root@study ~]# cd /tmp       # 进入所有人都可以工作的 /tmp 目录
[root@study tmp]# mkdir testing     # 建立新目录
[root@study tmp]# chmod 744 testing         # 修改目录权限
[root@study tmp]# touch testing/testing     # 建立空文件
[root@study tmp]# chmod 600 testing/testing       # 修改文件权限
[root@study tmp]# ls -ald testing testing/testing  # 展示一下
drwxr--r--. 2 root root 21 531 20:12 testing
-rw-------. 1 root root  0 531 20:12 testing/testing

一般身份的用户对这个目录只有 r 权限。

~  cd /tmp       # 我们使用一般身份/tmp  ls -l testing/   # 我们虽然有 r 权限可以查询文件,但是权限不够(没有x),所以会出现一堆问好。
ls: 无法访问testing/testing: 权限不够 # 可以读取目录的文件名列表,但是读不出来详细信息
总用量 0
-????????? ? ? ? ?            ? testing
☁  /tmp  cd testing/   # 当然没有x 进不去这个目录
cd: 权限不够: testing/

我们将文件拥有者改一下

[root@study tmp]# chown nero /tmp/testing/
[root@study tmp]# ls -ld /tmp/testing/
drwxr--r--. 2 nero root 21 531 20:12 /tmp/testing/     # 我们这个账户就有了全部的权限/tmp  cd testing/
☁  testing  ls -l
总用量 0
-rw-------. 1 root root 0 531 20:12 testing
☁  testing  rm testing          # 还可以进行删除
rm:是否删除有写保护的普通空文件 "testing"

很多时候,目录不必有r 权限,有x 就行,因为即使你不知道目录的文件名,但可以进去,,,没有r 就是无法使用tab 的补全功能。。。。

linux 文件种类与扩展名

众所周知,任何设备在linux 下都是文件,连数据沟通的借口也有专属的文件在负责。所以linux 的文件种类很多,就像一般文件 [-] 与目录文件 [d]

  1. 文件种类
  • 常规文件,就是我们在进行读写的类型的文件,就是[ - ]。。。可以分为:
    1.纯文本文件ASCII: 这是系统中最多的一种文件类型,我们人类可以看懂,,数字,字母啥的。你可以使用[cat ~/.bashrc ] 来读取文件的内容。
    2.二进制文件(binary): 可执行文件就是这种类型,就像刚才说的 cat 就是一个二进制文件。
    3.数据文件(data) : 有些程序在运行的过程中会读取某些特定格式的文件。这些特定格式的就是数据文件,。就比如我们的登陆的数据记录在 /var/log/wtmp 中,使用 cat 会乱码,因为这是一种特殊的格式

  • 目录 [d]

  • 连接文件(link) :就类似与快捷方式,第一个属性是 [ l ]

  • 设备与设备文件(device) :与系统周边及存储有关的文件通常在 /dev 这个目录下
    1.区块(block)设备文件:就是一些存储数据,以供系统随即存取的借口设备,就像硬盘 [ b]
    2.字符设备文件(character ):一些串行端口的接口设备,就像鼠标键盘。这些设备的特点就是一次性读取,不能够截断输出。就像你的鼠标不能瞬移。。 [c ]

  • 数据接口文件( sockets),这种类型通常用在网络上的数据交换。 [s]

  • 数据传送文件(FIFO,pipe),主要用来解决多个程序同时读写一个文件所造成的错误问题,FIFO就是先进先出,即管道。。。[ p ]

  1. linux 文件扩展名
    linux 下其实没有所谓的扩展名,一个文件能不能执行,主要根据那十个权限,跟文件名无关。不过有可执行的权限和具有可执行的代码不是一回事。就像纯文本文件,有可执行能力,但执行不了。。。
    但是我们还是希望有适当的扩展名来表示文件:
    *.sh: 脚本或批处理文件(scripts)
    *Z、*.tar,*.tar.gz , *.zip , *.tgz 压缩文件,根据压缩软件不同,有不同的扩展名
    *.html , *.php 网页文件,代表 HTML 和 PHP 语法的网页文件, html 可以通过浏览器打开,php文件,通过客户端的浏览器来服务端浏览,可以得到运算后的网页结果。
    从网络下到你的 linux 系统中,文件的属性和权限可能会被修改阿

  2. 文件名的长度限制。。255字节,大概128个汉字。。所以linux 的文件名可能会非常长。。。

  3. 文件名限制:* ? < > ; & ! 【 】 | \ ' " ( ) { } 另外,文件开头 [ . ] ,这个是隐藏文件。同时命令的执行中,通常使用 -option 这类的,避免使用 [ + - ] 来开头

进展缓慢阿。。。什么时候我能建个自己的服务器呢。。。。。。。。。

猜你喜欢

转载自blog.csdn.net/weixin_46192930/article/details/106390471
今日推荐