鸟哥的linux私房菜_文件权限与目录配置

鸟哥的linux私房菜_文件权限与目录配置

6. linux的文件权限与目录配置


6.1.用户与用户组


a. 文件所有者


b. 用户组概念


c. 其他人概念


6.2. 文件权限概念


6.2.1 Linux 


子主题 1


第一个字符代表这个文件是『目录、文件或链接文件等等』:
o  当为[ d ]则是目录,例如上表档名为『.config』的那一行;
o  当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
o  若是[ l ]则表示为连结档(link file);
o  若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
o  若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。


6.2.2  如何改变文件属性与权限


1) chgrp:改变文件所属的用户组


语法


[[email protected] ~]#  chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。


范例


[[email protected] ~]#  chgrp users initial-setup-ks.cfg
[[email protected] ~]#  ls -l 
-rw-r--r--. 1 root users 1864 May 4 18:01 initial-setup-ks.cfg


2) chown: 改变文件所有者。


语法


[[email protected] ~]#  chown [- R]  账号名称 文件或目录
[[email protected] ~]#  chown [-R]  账号名称:组名 文件或目 录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更


范例


范例:将 initial-setup-ks.cfg 的拥有者改为 bin 这个账号:
[[email protected] ~]#  chown bin initial-setup-ks.cfg
[[email protected] ~]#  ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg


范例:将 initial-setup-ks.cfg 的拥有者与群组改回为 root:
[[email protected] ~]#  chown root:root initial-setup-ks.cfg
[[email protected] ~]#  ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg


3) chmod :改变文件权限


语法


[[email protected] ~]#  chmod [-R] xyz  文件或目 录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更


符号类型改变文件权限 
基本上就九个权限分别是(1)user (2)group (3)others 三种身份啦!那么我们就可以藉由 u, g, o 来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份


范例


[[email protected] ~]#  chmod u=rwx,go=rx .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格符!
[[email protected] ~]#  ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc


6.2.3  目录与文件之权限意义:


6.2.4 Linux  文件种类与扩展名


文件种类


普通文件


ls -la 显示的属性为[-] ,例如[-rwxr--r--];
依照文件内容,又大致分为:
纯文本文件
二进制文件
数据格式文件


连接文件


类似windows下快捷方式,[l]


目录


第一个属性为[d]


设备与设备文件


与系统外设及存储相关的一些文件,通常都集中在/dev这个目录。通常又分为两种:


1.块(block)设备文件:就是一些存储数据,以提供系统随机访问的设备接口,例如硬盘、软盘等。 你可以随机的在硬盘的不同块读写,这种设备就是成组设备。可查看下/dev/sda,会发现第一个属性是[b];
2.字符(character)设备文件: 也即是一些串行端口的文件的接口设备,例如键盘、鼠标等。这些设备的特征就是 “一次性读取”,不能够截断输出。举例来说,你不可能让鼠标“跳到”另一个页面,只能”滑到“另一地方。其第一属性是[c];


套接字(sockets)


数据接口文件,这种文件通常被用在网络上的数据连接。我们可以启动一个程序来监听客户端的请求,而用户就可以通过这个socket来进行数据通信了。其第一个属性为[s]


管道(FIFO、pipe)


FIFO是一种特俗的文件类型,他主要解决多个程序同时访问一个文件造成的错误问题。第一个属性为[p]


文件扩展名


基本上linux的文件是没有所谓的扩展名。
*.sh 脚本或者批处理文件;
*Z、*.tar、*.tar.gz、 *.zip、 *.tgz:经过打包的压缩文件。由不同的压缩文件 gunzip、tar等;
.html、.php:网页相关文件;


linux文件的长度限制


*单一文件或者目录的最大允许文件名为255个字符;
*包含完整目录及名称的完整文件名为4096个字符;


linux文件名的限制


一般来说,你在设定 Linux 底下的文件名时, 最好可以避免一些特殊字符比较好!例如底下这些: * ? > < ; & ! [ ] | \ ' " ` ( ) { }
因为这些符号在文字接口下,是有特殊意义的!另外,文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』


6.3 Linux  目录配置


6.3.1 Linux  目录配置的依据--FHS


是什么


根据 FHS(注 2)的标准文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循 FHS 的标准。 也就是说,FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为 Linux 操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。


目录定义成为四种交互作用的形态


上表中的目录就是一些代表性的目录,
1) 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
2)不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
3)不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
4)可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。


FHS 针对目录树架构仅定义出三层目录


根目录


意义


所有目录都由根目录衍生出来,与开机、还原、系统修复等操作有关。非常重要。
FHS建议根目录所在的分区要越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较好,根目录所在的文件系统也不容易发生问题。


内容


/bin : 系统有很多放置执行文件的目录,但是/bin 比较特殊。因为/bin放置的单用户模式下还能够被操作的命令。在/bin目录下的命令可以被root与一般账号使用,主要有cat 、chmod、chown、date、mv、mkdir、cp、bash等常用命令;


/boot: 这个目录主要放置开机会使用的文件,包括linux内核文件以及开机菜单与开机所需要的配置文件等。


/dev :在linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录当中。


/etc :系统主要的配置文件几乎都放置在这个目录下。例如人员账号密码,各种服务的启始文件等。一般来说这个目录可以被一般用户查阅,但是只有root用户可以修改;FHS建议不要放置可执行文件(binary)在这个目录中。
比较重要的文件有:/etc/inittab 、 /etc/init.d 、/etc/modprobe.conf 、 /etc/X11、/etc/fstab、 /etc/sysconfig等。
/etc/init.d : 所有服务的默认启动脚本全都放置在这里,例如要启动和关闭iptables的话,“/etc/init.d/iptables star”“/etc/init.d/iptables stop”


/home :系统默认的用户主文件夹,在你创建一个一般用户账号时,默认的用户主文件夹都会放到这里。 ~:代表当前用户主文件夹 ~tom 代表tom的主文件夹;


/lib: 系统的函数库非常多,而lib放置的则是开机时会用到的函数库,以及在/bin 或者/sbin 下面的命令会调用的函数库。


/media: 放置的是可删除的设备,例如 软盘,官光盘 dvd等


 /mnt: 如果想要暂时挂载额外的设备,可以放到这个目录中,


/opt : 给第三方软件放置的目录。什么是第三方软件:举例来说kde这个桌面管理系统,是一个独立的计划,不过他可以安装到linux系统中,因此kde这个软件建议安装到opt目录下。如果想要安装额外的软件,可以安装到这个目录下,不过按照以前的习惯安装到 /usr/local ;


/root :系统管理员的主文件夹。 


/sbin : linux 有非常多的命令是用来设置系统环境的,这些命令只有root才能使用来设置系统,其他用户只能有来查阅。常见的命令包括 fdisk、fsck、ifconfig、init、mkfs等;放在/sbin 下的一般为开机过程中所需要的,包括开机、修复,还原等。至于服务器软件程序,一般放在/use/sbin中, 本机自动安装的软件则放在/usr/local/sbin中;


/srv : 可视为service的缩写,是一些网络服务启动之后,这些服务所取用的数据目录;例如www ftp服务等。


/tmp : 一般是用户或者执行的程序暂时存放文件的地方;


/usr 目录


意义


unix software resource 的缩写,“unix 操作系统软件资源”; FHS建议 所有的软件开发者应该将他们的数据合理的放置在这个目录的子目录下,不要自行新建该软件的独立目录;


内容


/usr/X11R6: 为x11系统重要数据所放置的目录


/usr/bin : 绝大部分用户可以使用的命令都放置在这里。注意与/bin的不同之处(是否与开机有关)


/usr/include : c/c++ d等陈旭语言的头文件放置处,


/usr/lib: 应用软件的函数库、目标文件(object file)、以及不被一般用户惯用的执行文件或者脚本。


/usr/local : 系统管理员在本机自行安装自己下载的软件。建议安装到此目录,这样回比较便于管理。


/usr/sbin : 非系统正常运行所需要的系统命令。最常见的就是某些网络服务软件的服务命令;


/usr/share : 放置共享文件夹的地方;


/usr/src : 一般源码放置在这里。至于内核源码建议放置在/usr/src/linux下;


/var 目录


意义与内容:
var主要包括常态性变得文件,包括 缓存、登录文案、以及某些软件运行所产生的文件。


6.3.2  目录树(directory tree)


目录树的特性


1目录树的启始点为根目录 (/, root);
2 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可
以利用 Network File System (NFS) 服务器挂载某特定目录等。
3 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。


6.3.3  绝对路径与相对路径