linux的档案属性和目录配置
linux最优秀的地方就在于它的多人多任务系统。而为了让各个使用者具备较安全的管理机制,因此档案的权限管理就变得很重要了。linux一般将档案分为三个类别 : owner,group,other,且每个档案都有read,write,execute权限。
拥有者与群组
拥有者自然就是档案的创建者咯,拥有者对自己创建的文件具有读写和执行的权力,而其他人没有,这样能有效的提高隐私性。而至于群组,则是为了团队开发资源用的。
注意!!!文件的群组权限是拥有者所在的群组。也即是如果拥有者输入群组A和B,那么在A或者B中的用户就能拥有该文件的群组权限,但是如过拥有者退出群组A后,就只有B中的用户拥有权限了,此时A中用户就只拥有other的权限了,懂了吗;)
root拥有至高无上的权限
linux系统中所有用户档案都记录在etc/passwd中,我们到etc目录下通过vim passwd查看可以看到居然有这么多用户?其实并不是所有的记录都是用户的,但是我们肯定可以找到自己的那一条以及root。密码则是记录在etc/shadow下。但是我们查看时发现居然是空白的,在左下角有一个[Permission Denied]字样,意思是没有权限,我们切换到root就可以查看了。
所有群组名称都记录在etc/group中
查看文件权限
我们在用户目录下使用mkdir Demo创建一个名为Demo的目录,cd Demo进入目录,vim hello(vim是一个文本编辑器,hello时编辑的文件名,不存在该文件时会自动创建),然后输入:wq 冒号+wq,wq是保存加退出,然后再ls就可以看到我门刚刚创建的hello文件了。怎么查看文件权限呢?其实就是通过ls指令查看,通过man后就会发现-l use a long listing format 以长格式输出。通过ls -l后不仅可以查看文件名,还有权限,关联文件数,创建者,群组,文件大小,修改日期
我们可以看到属性栏共有10个字符,分别代表什么意思呢?
其中第一个表示了是文件还是目录,d的话代表目录,-代表文件。后面的9个字符分为3x3三组,分别代表创建者,群组,其他人的读,写与执行的权力,例如上面的图中,两个都是文件,且创建者和群组拥有读写的权利,而其他人只有读的权力。如果对应的位置为 - ,则代表没有权限,r代表读的权限,w代表写的权限,x代表执行的权限。(如果没有一个目录的x属性,则无法进入该目录)
改变档案权限
- chgrp :改变档案所属群组 chgrp 群组 要改变的档案
- chown:改变档案所属人 chown 用户 要改变的当啊
- chmod:改变档案的属性等 chmod xxx 要改变的档案
我们知道权限属性是3x3的,所以上面的xxx就是3个3位的树以十进制表示,例如如果是r-x的话就是101 = 5
文件后缀
我们知道在Windows下.exe代表可执行文件.txt代表文本文件,如果我们把一个可执行的exe文件改成txt,那这个文件就不可执行了,但是在linux下可没有后缀的说法,所有文件只有一个名字,没有后缀。但是但是也可以创建一个类似a.exe的文件,.exe只是文件名称的一部分,所以我们可以人为的添加“后缀”来提醒自己这个文件是用来干嘛的。例如
- .sh shell脚本文件
- *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩档。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的附档名
- *.html, *.php:网页相关档案,分别代表 HTML 语法与 PHP 语法的网页
文档命名尽量避免\* ? > < ; & ! [ ] | \ ' " ( ) { } `这些符号
linux下的各个目录
由于linux是开源的系统,所以有很多的开发者,这么多的开发者难免会有混乱,所以需要有一个共同规范,指导 什么目录下存放什么类型的文件。但是这个规范仅针对最上层(/)和次上层(/usr,/etc),所以说相同的文件在不同的系统下存放的位置不完全相同但是肯定在相同的次上层目录下。
各个目录详情如下(摘自《鸟哥的linux私房菜》):
-
目录 | 应放置档案内容 |
---|
/ | 根目录 root (/) | /bin , /usr/bin, /usr/local/bin | 防止使用者可执行的二进制文件的目录,例如ls, mv, rm, mkdir, rmdir, gzip, tar, cat, cp等指令都在这个目录下 | /boot | 防止系统开机需要用到的文件,这个目录底下文件名为 vmlinuz 的就是 Linux 的 Kernel 啦 | /dev | device,设备。任何装置与接口设备都是以档案的型态存在于这个目录当中的 | /etc | 系统主要的设定文件几乎都放置在这个目录内,例如人员的账号密码文件、 各种服务的启始档等等。在该目录下还有一些重要的目录:1. /etc/init.d/ 所有服务的预设启动 script 都是放在这里的。例如可以通过/etc/init.d/iptables start 启动iptables。 2. /etc/xinetd.d/这就是所谓的 super daemon 管理的各项服务的设定文件目录。 3. /etc/X11 与 X Window 有关的各种设定档都在这里 | /home | 这是系统预设的使用者家目录,每一个使用者都会在home目录下有一个自己的目录。~符号可以代表当前使用者的家目录,~用户名 代表指定用户的家目录 | /lib ,/usr/lib,/usr/lib | 系统会使用到的函式库放置的目录,/lib/modules 这个目录内会摆放 kernel 的相关模块喔 | /mnt ,/media | 这是软盘与光盘预设挂载点的地方 | /opt | 这是给主机额外安装软件所摆放的目录 | /proc | 这个目录本身是一个『虚拟档案系统』喔!他放置的数据都是在内存当中, 所以本身不占任何硬盘空间 | /sbin, /usr/sbin,/usr/local/sbin | 放置一些系统管理员才会动用到的执行指令,例如: fdisk, mke2fs, fsck, mount 等等。与 /bin 不太一样的地方,这几个目录是给 root 等系统管理用的 | /srv | service。一些服务启动之后,这些服务所需要取用的数据目录。举例来说,WWW 服务器需要的网页资料就可以放置在 /srv/www 里面。 | /tmp | 存放临时文件的地方 | /usr | 由 FHS 规范的第二层内容,在 /usr 此目录下,包含系统的主要程序、 图形接口所需要的档案、额外的函式库、本机端所自行安装的软件,以及共享的目录与文件。1. /usr/bin, /usr/sbin:一般身份使用者与系统管理员可执行的档案放置目录 2. /usr/include:c/c++等程序语言的档头 (header) 与包含档(include)放置处。3 . /usr/lib 各应用软件的函式库档案放置目录 4. /usr/local:本机端自行安装的软件预设放置的目录 5./usr/share:共享文件放置的目录 6./usr/share/doc:放置一些系统说明文件的地方 7./usr/share/man:manpage 的文件档案目录 8./usr/src:Linux 系统相关的程序代码放置目录,例如 /usr/src/linux为核心原始码! | /var | 这个目录也很重要,他主要放置的是针对系统执行过程中, 常态性变动的档案放置的目录。他底下的重要目录有: 1./var/cache:程序档案在运作过程当中的一些暂存盘 2./var/lib:程序本身执行的过程中,需要使用到的数据文件放置的目录 3./var/log:登录文件放置的目录 4./var/lock:某些装置具有一次性写入的特性(同步锁) 5./var/run:某些程序或者是服务启动后,会将他们的 PID 放置在这个目录 6. /var/spool:是一些队列数据存放的地方 | | |
不知道大家有没有过这样的体验,从电脑复制文件到U盘的时候,如果文件太大了(我记得好像是4GB),就会收到FAT格式不支持大文件,请将U盘格式变为NTFS,那么这个FAT和NTFS是什么呢?其实就是文件系统的格式(filesystem),大家想,我们所有的文件最终都是存储在硬盘上。但是同一块硬盘,不同的系统却不一定能够识别,为什么呢?就是该系统无法识别该文件系统的格式。
我们想在硬盘上存取数据,就要组织一套规范,可是随着时间的推移,技术的进步,我们的需求在不断地变化,所以我们的规范也需要不断地变化。你可以认为这个规范就是文件系统的格式。 ,就要组织一套规范,可是随着时间的推移,技术的进步,我们的需求在不断地变化,所以我们的规范也需要不断地变化。你可以认为这个规范就是文件系统的格式(filesystem)。
|