一、用户与用户组
1、文件所有者
2、用户组 3、其他人 4、root用户二、LINUX文件权限
1、LINUX文件属性
ls是“list”的意思,重点在显示文件的文件名与相关属性,而参数“-al”则表示列出所有的文件详细的权限与属性(包含隐藏文件,就是文件名第一个字符为“.”的文件)。
[root@www~]# ls -al total 156 drwxr-x--- 4 root root 4096 sep 8 14:06 . drwxr-xr-x 23 root root 4096 sep 8 14:21 .. -rw--------- 1 root root 1474 sep 8 18:27 anaconda-ks.cfg [类型权限] [连接] [所有者] [用户组] [文件容量] [修改日期] [文件名] (1)第一组字符代表这个文件的类型和权限 a、第一个字符代表这个文件是“目录、文件或链接文件等”。- 若是[d]则是目录;
- 若是[-]则是文件;
- 若是[|]则是链接文件(linkfile);
- 若是[b]则表示设备文件里面的可供存储的接口设备;
- 若是[c]则表示设备文件里面的串口端口设备,例如键盘、鼠标(一次性读取设备)。 b、接下来的字符以3个为一组,均为“r、w、x、-”的组合,第一组为“文件所有者权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”。
- [r]代表可读(read);
- [w]代表可写(write);
- [x]代表可执行(execute);
[-]代表无权限。
(2)第二组字符表示有多少文件名连接到此节点(i-node)。 每个文件都会将它的权限与属性记录到文件系统的i-node中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会连接到一个i-node,这个属性记录的就是有多少不同的文件名连接到相同的一个i-node号码。 (3)第三组字符表示这个文件(或目录)的“所有者账号”。 (4)第四组字符表示这个文件的所属用户组。 在Linux系统下你的账号会附属于一个或多个的用户组中。 (5)第五组字符为文件的容量大小,默认为B。 (6)第六组字符为这个文件的创建文件日期或者是最近的修改日期。 这一列的日期分别为日期(月/日)及时间,如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。 如果想要显示完整的时间格式,可以使用ls参数,即“ls -l --full-time”。 (7)第七组字符为该文件名 如果文件名之前多一个“.”,则代表这个文件为隐藏文件。2、改变文件属性与权限
(1)改变文件所有者:chown
[root@www ~]# chown [-R] 账号名称 文件或目录 [root@www ~]# chown [-R] 账号名称:用户组 文件或目录 参数[-R]:进行递归(recursive)的持续更改,连同子目录下的所有文件的都更改 例: [root@www ~]#chown bin install.log [root@www ~]#chown root:root install.log chown也可以使用“chown user.group file”,即在所有者与用户组间加上小数点“.”也行。 (2)改变所属用户组:chgrp 要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误。 [root@www ~]# chgrp [-R] dirname/filename ... (3)改变权限:chmod a、数字类型改变文件权限 r:4/w:2/x:1 每种身份(owner、group、others)各自的三种权限(r、w、x)分数是需要累加的,例如当权限为[-rwxrwx---],分数则是: owner=rwx=4+2+1=7 group=rwx=4+2+1=7 others=---=0+0+0=0 语法:chmod [-R] xyz 文件或目录 xyz:数字类型的权限属性,为rwx属性数值的相加 例:[root@www ~]# chmod 777 .bashrc b、符号类型改变文件权限 通过u、g、o表示user、group、other三种身份的权限,此外a代表all,即全部的身份,读、写、执行的权限可以写成r、w、x,使用符号“+、-、=”分别代表加入、除去、设置。 例: [root@www ~]# chmod u=rwx,go=rx .bashrc [root@www ~]# chmod a+w .bashrc3、目录与文件权限的意义
(1)权限对文件的重要性 文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等,因此权限对文件的意义如下:- r(read):可读取此文件的实际内容;
- w(write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x(execute):该文件具有可以被系统执行的权限 在windows下文件是否具有执行能力是通过“扩展名”来判断的,但LINUX下面,我们的文件是否能被执行则是由是否具有“x”权限觉得,与文件名无绝对关系。 (2)权限对目录的重要性 目录的主要内容是记录文件名列表。 a、r(read contents in directory)表示具有读取目录结构列表的权限,表示可以查询该目录下的文件名数据,可以利用ls将该目录内容列表显示出来。 b、w(modify contents of directory)表示具有更改该目录结构列表的权限,即:
- 新建新的文件与目录;
- 删除已经存在的文件与目录;
- 将已存在的文件或目录进行重命名;
转移该目录内文件、目录位置。
c、x(accesss directory) 目录的x代表的是用户是否能进入该目录称为工作目录的用途。4、文件种类与扩展名
(1)文件种类- 普通文件(regular file) 纯文本文件(ASCII)、二进制文件(binary)、数据格式文件(data)
- 目录(directory)
- 连接文件(link)
- 设备与设备文件(device) 块(block)设备文件、字符(character)设备文件
- 套接字(sockets)
- 管道(FIFO,pipe) (2)Linux文件扩展名 一个Linux文件能不能被执行,与它的第一列的10个属性有关,与文件名无任何关系,但是否能够执行成功,则与文件内容有关。 扩展名种类:
- *.sh:脚本或批处理文件(scripts),因为批处理为使用shell写成的。
- .Z、.tar、.tar.gz、.zip、*.tgz:经过打包的压缩文件。
.html、.php:网页相关文件。
(3)Linux文件长度限制 使用默认的Ext2/Ext3文件系统时,针对文件的文件名长度限制为: 单一文件或目录的最大容许文件名为255个字符; 包含完整路径名称及目录(/)的完整文件名为4096个字符。 (4)linux文件名的限制 a.在设置linux下面的文件时,最好避免以下字符: *?<>;&[]|/'"'(){} b.文件名开头为“.”时,为隐藏文件,最好避免开头为+-,因为执行命令时,经常会遇到-option之类的参数。三、Linux目录配置
1、Linux目录配置标准:FHS
FHS依据文件系统使用的频繁与否与是否允许用户随意改动,而将目录定义为四种交互作用的形态。
可分享的(shareable) | 可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr(软件放置处) | /etc(配置文件) |
/opt(第三方软件) | /boot(开机与内核文件) | |
可变动的(variable) | /var/mail(用户邮件信箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
FHS针对目录树架构仅定义出三层目录下面应该放置什么内容:
/(root,根目录):与开机系统有关; /usr(UNIX software resource):与软件安装/执行有关; /var(variable):与系统运作过程有关。 root在账号中是系统管理员身份,在目录中是根目录,即“/”。 (1)根目录的意义与内容 根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机、还原、系统修复等操作有关,由于系统开机时需要特定的开机软件、内核文件、开机所需程序、函数库等文件数据,若系统出现错误,根目录也必须要包含有能够修复文件系统的程序才行,因为根目录是这么重要,所以FHS建议,根目录所在分区应该越小越好,切应用程序锁安装的软件最好不要一根目录放在同一个分区内,保持根目录越小越好。 因此FHS定义出根目录(/)下面应该要有下面这些子目录才好:目 录 | 应放置文件内容 |
---|---|
/bin | 放置的是在单用户维护模式下还能够被操作的命令,在/bin下面的命令可以被root和一般账号所用,主要有cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令。 |
/boot | 主要放置开机会用到的文件,包括linux内核文件以及开机菜单与开机所需配置文件等。 |
/dev | 任何设备与接口文件都是以文件的形式存在于这个目录当中,只要通过访问这个目录下面的某个文件,就相当于访问某个设备,比较重要的文件有/dev/null、/dev/zero、/dev/tty、/dev/lp、/dev/hd、/dev/sd* |
/etc | 系统的配置文件几乎都放置在这个目录中,如人员的账号密码、各种服务的起始文件等。这个目录下的各文件属性可以让一般用户查阅的,但是只有root有权力修改。FHS建议不要放置可执行文件(binary)在这个目录中,比较重要的文件有/etc/inittab,/etc/init.d/,/etc/modprobe.conf,/etc/x11/,/etc/fstab,/etc/sysconfig/等,另重要目录有:/etc/init.d/:所有服务的默认启动脚本都放在这里;/etc/xinetd.d/:super daemon管理的各项服务的配置文件目录;/etc/X11/:与X Window有关的各种配置文件都在这里。 |
/home | 系统默认的用户主文件夹(home directory),主文件夹有两种代号:~:代表目前这个用户的主文件夹;~dmtsai:则代表dmtsai的主文件夹。 |
/lib | 开机时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数,尤其是/lib/modules/这个目录,因为该目录会放置内核相关的模块(驱动程序)。 |
/media | 放置的是可删除的设备,包括软盘、光盘、DVD等都暂时挂载于此。 |
/mnt | 暂时挂载某些额外的设备,在比较早的时候与/media相同,但有/media之后这个目录只是用来暂时挂载用了。 |
/opt | 放置第三方软件,在之前系统中放置于/usr/local目录下。 |
/root | 系统管理员(root)的主文件夹,因为如果进入单用户维护模式而只挂载根目录的时,该目录就能够拥有root的主文件夹,所以我们要将root的主文件夹与根目录放置在同一个分区中。 |
/sbin | 为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的命令。至于某些服务器软件程序,一般则放置在/usr/sbin/当中,至于本机自行安装的软件所产生的系统执行文件,则放置在/usr/local/sbin/当中了,常见命令有fdisk/fsck/ifconfig/init/mkfs |
/srv | 可以视为“service"的缩写,是一些网络服务启动后,这些服务所需要取用的数据目录。 |
/tmp | 让一般用户或者是真该执行的程序暂时放置文件的地方,这个目录是任何人都能够访问的,所以需要定时清理。 |
下面几个在Linux当中也是比较重要的目录:
目 录 | 应放置文件内容 |
---|---|
/lost+found | 使用标准的ext2/ext3才会产生的一个目录,目的在于在文件系统发生错误时,将一些丢失的片段放置在这个目录下,这个目录通常在分区的最顶层存在。如加装一块硬盘在/disk中,那这个系统下就会自动产生一个目录“/disk/lost+found” |
/proc | 本身是一个文件虚拟系统,放置的数据都是在内存中,例如系统内核、进程、外部设备的状态及网络状态等,比较重要的文件有/proc/cpuinfo,/proc/dma,/proc/interrupts,/proc/ioports,/proc/net/* |
/sys | 这个目录跟/proc类似,也是一个虚拟的文件系统,主要记录与内核相关的信息,包括目前已加载的内核模块与内核检测到的硬件设备信息等,同样不占硬盘。因为根目录与开机有关,开机过程中仅有根目录会被挂载,其他分区则是在开机完成后进行挂载行为,因此根目录下雨开机过程有关的目录就不能够与根目录放到不同的分区中去,有之下几个目录:/etc:配置文件;/bin:重要执行文件;/dev:所需设备文件;\lib:执行文件所需的函数库与内核所需的模块;/sbin:重要的系统执行文件。 |
(2)/usr的意义与内容
usr是UNIX software resource的缩写,也就是“UNIX操作系统软件资源”所放置的目录,而不是用户的数据。FHS建议所有软件开发者应该将他们的数据合理的放置在这个目录下的子目录下,而不要自行新建该软件自己独立的目录。目录 | 应放置文件内容 |
---|---|
/usr/X11R6/ | 为X Window系统重要数据所放置的目录。 |
/usr/bin/ | 绝大部分的用户可使用命令放置于次目录中。与/bin的不同之处在于是否与开机过程有关。 |
/usr/include/ | C/C++等程序语言的头文件(header)与包含文件(include)放置处,当我们以tarball方式(*.tar.gz的方式安装软件)安装某些数据时,会使用到里头的许多包含文件。 |
/usr/lib/ | 包含各种应用软件的函数库、目标文件(objective file),以及不被一般用户惯用的执行文件或脚本(script)。 |
/usr/local/ | 系统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录。 |
/usr/sbin/ | 非系统正常运行所需要的系统命令,最常见的就是某些网络服务器软件的服务命令(daemon)。 |
/usr/share/ | 放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据,因为几乎都是文本文件,主要有:/usr/share/man:在线帮助文件;/usr/share/doc:软件杂项的文件说明;/usr/share/zoneinfo:与时区有关的时区文件。 |
/usr/src/ | 一般源码放置于此,内核源码则建议放置于/usr/src/linux/目录下 |
(3)/var的意义与内容
/usr是安装时会占用较大硬盘容量的目录,/var则是系统运行后才会逐渐占用硬盘容量的目录,因为/var目录主要是针对常态性变动的文件,包括缓存(cache)、登陆文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file,runfile),或者如mysql数据库的文件。常见子目录如下:目 录 | 应放置文件内容 |
---|---|
/var/cache/ | 应用程序本身运行过程中会产生的一些暂存文件 |
/var/lib/ | 程序本身执行过程中,需要使用到的数据文件放置的目录。 |
/var/lock/ | 将设备上锁,以确保该设备只会给单一软件所使用 |
/var/log/ | 登陆文件放置的目录,比价重要的文件有/var/log/messages,/var/log/wtmp(记录登陆者信息) |
/var/mail/ | 放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为连接文件。 |
/var/run/ | 某些程序或服务启动后,会将它们的PID放置在这个目录下。 |
/var/spool/ | 这个目录通常放置一些队列数据(排队等待其他程序使用的数据),这些数据被使用后通常都会被删除。 |
2、目录树
主要特性有:
(1)目录树的起点为根目录(/,root); (2)目录不只能使用本地端的文件系统,也可以使用网络上的文件系统; (3)每一个文件在此目录树中的文件名(包含完整文件名)都是独一无二的。3、绝对路径与相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称,如/home/dmtsai/.bashrc;
相对路径:相对于目前路径的文件名写法。如./home/dmtsai或../../home/dmtsai/。 “.”:代表当前目录,也可以用“./”表示; “..”:代表上一层目录,也可以用“../”表示。 例:cd ../var/log