文件属性

使用ls -al查看当前目录下所有文件的权限。
● 第一个字符代表这个档案是目录,文件或者链接文件。
○ 当为[ d ]则是目录,对于目录文件打开目录属于执行文件,故当用户有rw-权限时他是不可以打开这个目录的。
○ 当为[ - ]则是文件。
○ 若是[ l ]则表示为链接文件。
○ 若是[ b ]则表示为设备文件里面的可供存储的周边设备。
○ 若是[ c ]则表示为设备文件里面的串行端口设备,例如键盘,鼠标。
● 接下来的字符里,以三个为一组,且均为‘rwx’ 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
○ 第一组为‘文件拥有者可具备的权限’;
○ 第二组为‘加入此用户组之帐号的权限’;
○ 第三组为‘非本人且没有加入本用户组的其他帐号的权限’。
如何修改文件属性与权限
- 使用
chgrp修改文件所属用户组。- 只有用户名在/etc/group文件中才行,否则就会出现报错。
chgrp -R group file进行递归(recursive)修改,可以将这个文件下的所有文件更新为新的用户组。
- 使用
chown修改文件的拥有者。- 只有用户名在/etc/passwd文件中才行,否则就会出现报错。
- 只有管理员拥有修改用户和用户组的权限。
- 加上-R选项实现递归修改。
chown root:root test.txt可以同时将用户和用户组都进行修改。- 上例中也可以不使用
:而使用.将用户名和用户组隔开。 - 也可以使用
chown .root test.txt实现只修改用户组的功能。 - 在实际使用中将文件复制给别人,将同时复制文件的权限。
使用
chmod修改文件权限。- chmod只能是文件的拥有着,或者时拥有管理员权限的人才能修改。
- 使用数字类型修改文件权限
- r=4,w=2,x=1
- 当文件所有者拥有rwx权限时,就是7,当所属群组拥有rw权限时就是6。
- 例如将test.txt文件所有权限都打开可以使用
chmod 777 test.txt。 - 使用-R进行递归修改。
- 使用符号类型修改文件权限
r(read):可以读取文件的实际内容,复制一个文件时需要该权限。
- w(write):可以编辑、新增或者是修改该文件的内容。但是不能删除该文件。
- x(execute):该文件具有可以被系统执行的权限。
注意在Linux下我们的文件能否执行与他的后缀名无关,主要看他有没有这个x权限。
权限对目录的重要性
- r(read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以就可以使用ls命令将该目录的内容列表显示出来。
- w(modify contents of directory):表示具有改动该目录结构的权限。
- 建立新的文件和目录。
- 删除已经存在的文件或者目录(不管该文件的权限是什么)
- 将已存在的文件或者目录进行更名。
- 移动该目录内的文件,目录位置。
- x(access directory):代表了用户是否能进入该目录成为工作目录的用途。使用cd切换工作目录。
假设有一个文件在mgh用户的test文件夹下,同时mgh拥有对test文件夹的rwx的权限。在test文件夹下有一个file1文件,并且mgh没有rwx权限对file1。这个时候虽然mgh不能查看,修改,编辑file1,但是可以删除他因为他对test文件夹有w权限。
所以通常要开放的目录至少要给rx权限。
只给r不给x,只能看到该目录下有哪些文件,但是不可以进入该目录。
只给x不给r,在知道文件名的情况下,可以从目录中取出文件,但是不能通过ls查看文件,也不能通过tab自动补齐。
Linux文件种类与扩展名
文件种类
- 普通文件类型 [-]
Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件。第一个属性为 [-] 。
- 目录文件类型 [d]
在linux中,它的思想是一切皆是文件,目录文件也就是Windows中的目录,也就是能用 cd 命令进入的。第一个属性为 [d],例如 [drwxr-xr-x]。
- 字符设备文件[c]
即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。
- 块设备文件[b]
即存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。
- 套接字文件[s]
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型。
- 管道文件 [p]
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]。
- 链接文件[l]
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]。
扩展名
- 可以被执行和能执行成功是两个概念。可不可以被执行要看有没有x权限,可不可以执行成功要看这个文件有没有可执行的能力。
- 常见扩展名
- .sh就是批处理(scripts)文件,因为他是使用shell写成的,所以是.sh。
.z .tar .tar.gz .zip .tgz都是压缩文件,由于不同的压缩软件,取不同的后缀名。.html .php网页相关文件。
Centos7使用xfs文件系统,规定单一文件的或目录的最大容许文件名为255字节,一个ascii英文占1个,一个汉字占两个字符。
Linux目录配置
Linux目录配置的依据
FHS(Filesystem Hierarchy Standard)标准。P165,比较复杂,回头再看。
系统启动必须:/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
- /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
- /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
- /bin:存放着最常用的程序和指令
- /sbin:只有系统管理员能使用的程序和指令。
外部文件管理:
- /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
- /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
- /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
- /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
- /tmp:这个目录是用来存放一些临时文件的。
账户:
- /root:系统管理员的用户主目录。
- /home:用户的主目录,以用户的账号命名的。
- /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin:系统用户使用的应用程序与指令。
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:内核源代码默认的放置目录。
运行过程中要用:
- /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
- /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:

