2.1、Linux的文件权限和目录配置
2.1.1、Linux文件属性
以root身份登录后,执行“ls–al”将会出现如下内容:
从上述可以看出,共有七列数据,下面将一一讲述
<span style="font-size:10px;">[root@localhost ~]# ls -al 总用量 44 dr-xr-x---. 5 root root 4096 8月 6 14:44 . dr-xr-xr-x. 17 root root 4096 7月 25 05:33 .. -rw-------. 1 root root 1426 7月 25 05:35 anaconda-ks.cfg -rw-------. 1 root root 431 8月 6 11:13 .bash_history -rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout -rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile -rw-r--r--. 1 root root 176 12月 29 2013 .bashrc drwx------. 4 root root 29 8月 6 10:23 .cache drwxr-xr-x. 3 root root 17 8月 6 10:23 .config -rw-r--r--. 1 root root 100 12月 29 2013 .cshrc drwx------. 3 root root 24 7月 24 21:39 .dbus -rw-r--r--. 1 root root 1474 7月 24 21:53 initial-setup-ks.cfg -rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc -rw-------. 1 root root 66 8月 6 14:44 .xauthqxoZZ4</span>
- 第一列代表文件的类型与权限
第一列共有10个字符,第一列代表这个文件是“目录、文件或链接文件等”
- 若是[d]则表示目录
- 若是[-]则表示文件
- 若是[l]则表示链接文件
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为[rwx]的三个参数的组合, [r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。
- 第一组:文件拥有者的权限
- 第二组:同群组的权限
- 第三组:其他非本用户组的权限
- 第二列表示有多少个文件名链接到此节点
记录有多少不同的档名连结到相同的一个i-node,一般来说,若是文件则为1,若是文件夹(目录)则表示其下文件和目录的个数. - 第三列表示文件(或目录)的拥有者
- 第四列表示文件的所属群组
- 第五列表示文件的容量大小(默认单位为bytes)
- 第六列表示文件的建档日期或者是最近的修改日期
- 第七列表示文件的全路径及其文件名
2.1.2、文件属性和权限更改
Linux文件属性和权限的更改主要通过以下几个命令来实现:
(1)chgrp:更改文件所属用户组
(2)chown:更改文件拥有者
(3)chmod:改变文件的权限
- 改变所属用户组:chgrp
[root@localhost tmp]# ls -al dir
总用量 4
drwxrwxr-x. 3 www1234 www1234 32 8月 6 15:14 .
drwxrwxrwt. 25 root root 4096 8月 6 15:14 ..
drwxrwxr-x. 3 www1234 www1234 17 8月 6 15:13 dir2
-rwxrw-rw-. 1 www1234 www1234 0 8月 6 15:13 file.txt
[root@localhost tmp]# ls -al dir
总用量 4
drwxrwxr-x. 3 www1234 www1234 32 8月 6 15:14 .
drwxrwxrwt. 25 root root 4096 8月 6 15:14 ..
drwxrwxr-x. 3 www1234 www1234 17 8月 6 15:13 dir2
-rwxrw-rw-. 1 www1234 www1234 0 8月 6 15:13 file.txt
从上可以看出,dir2和file.txt文件是属于www1234用户组。
[root@localhost tmp]# chgrp user -R dir [root@localhost tmp]# ls -al dir 总用量 4 drwxrwxr-x. 3 www1234 user 32 8月 6 15:14 . drwxrwxrwt. 25 root root 4096 8月 6 15:15 .. drwxrwxr-x. 3 www1234 user 17 8月 6 15:13 dir2 -rwxrw-rw-. 1 www1234 user 0 8月 6 15:13 file.txt |
- 改变文件所有者:chown
[root@localhost tmp]# chown user1 -R dir [root@localhost tmp]# ls -al dir 总用量 4 drwxrwxr-x. 3 user1 user 32 8月 6 15:14 . drwxrwxrwt. 25 root root 4096 8月 6 15:22 .. drwxrwxr-x. 3 user1 user 17 8月 6 15:13 dir2 -rwxrw-rw-. 1 user1 user 0 8月 6 15:13 file.txt |
关于文件的复制cp
复制行为会复制执行者的属性与权限,通过以下例子可以理解:
[root@localhost tmp]# ls -al /home/www1234/file.txt -rwxrw-r--. 1 www1234 www1234 0 8月 6 15:13 /home/www1234/file.txt [root@localhost tmp]# cp /home/www1234/file.txt /home/user1/file.txt [root@localhost tmp]# su user1 [user1@localhost tmp]$ ls -al /home/user1/file.txt -rwxr--r--. 1 root root 0 8月 6 15:36 /home/user1/file.txt |
从上表看出,用户www1234文件file.txt的用户所有者,所属用户组均为www1234,而执行复制的操作的执行者是root用户,所以复制的文件属于root用户所有,文件的读写属性也发生了变化。
- 改变权限:chmod
数字类型改变权限:r:4,w:2,x:1
每种身份(owner、group、others)各自的三个权限(r、w、x)分数是需要累加的。
例如:[-rwxr-x---]
owner:rwx=4+2+1=7
group:r-x=4+1=5
others:---=0+0+0=0
改变main.c的权限:
chmod 777 main.c 权限变为[-rwxrwxrwx]
- 权限对文件的意义:
在Windows底下一个文件是否具有执行的能力是藉由扩展名来判断的, 例如:.exe, .bat, .com 等等
- r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x (execute):该文件具有可以被系统执行的权限.
在Linux底下,我们的文件是否能被执行,则是藉由是否具由x这个权限来决定的!跟档名是没有绝对的关系的。
- 权限对目录的意义:
- r (read contents in directory):
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据. 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!
w (modify contents of directory):
建立新的文件与目录;
删除已经存在的文件与目录(不论该文件的权限为何)
将已存在的文件或目录进行更名;
搬移该目录内的文件、目录位置.x (access directory):
用户具备进入该目录成为工作目录的权限
2.1.3、Linux目录配置
Linux目录结构
目录 | 应存放文件内容 |
/bin | 系统启动时需要的执行文件(二进制) |
/boot | 这个目录主要放置开机时会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件等 |
/dev | 在Linux系统上任何设备和接口设备都是以文件的形式存放在系统目录的。只要通过访问目录下的某个文件就等于访问某个设备。 |
/etc | 系统的主要配置文件几乎都放置在这个目录内,例如人员的账号密码文件、各种服务的起始文件等。一般来说,这个目录下的各文件属性是可以让一般用户查阅的,但只有root用户有修改权力。 |
/home | 这是系统默认的用户主文件夹。在你创建一个一般用户账户时,默认的主文件夹都会规范到这里。~:代表当前这个用户的主文件夹,~dmtsal:代表dmtsal用户的主文件夹 |
/lib | 系统的函数库非常多,而/lib放置则是开机时会用到的函数库,以及/bin或/sbin下面的命令或调用的函数库 |
/media | /media下面放置的是可删除的设备,包括软盘、 光盘、DVD等设备都挂载于此。常见的文件名有/media/floppy,/media/cdrom等。 |
/mnt | 如果你想暂时挂载某些额外设备,一般可以放置到这个目录中。 |
/opt | 给主机额外安装软件所摆放的目录,第三方软件安放的目录。以前的 Linux 系统中,习惯放置在 /usr/local 目录下 |
/root | 系统管理员的主文件夹 |
/sbin | 可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行 |
/svr | 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内 |
/tmp | 这是让一般用户或者是正在执行的程序暂时放置文件的地方。这个目录是任何人都能访问的,但一般开机后都会对/tmp下的数据进行删除。 |
/proc | 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等 |
/lost+fount | 统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found |
/sys | 这个目录和/proc非常相似,也是一个虚拟文件系统,主要记录与内核相关的信息。包括目前已加载的内核模块与内存检测到的硬件设备信息等。这个目录同样不占硬盘容量。 |
/usr:应用程序存放目录,所以系统默认的软件都会放到/usr目录下,这个目录有点类似于windows系统中的“C:\Windows\”和“C:\Program files\”这两个目录的综合体,系统刚安装完毕,系统会占用最多的硬盘容量。
目录 | 应存放文件内容 |
/usr/X11R6 | 该目录用于保存运行X-Window所需的所有文件。该目录中还包含用于运行GUI要的配置文件和二进制文件。 |
/usr/bin/ | 这个目录是可执行程序的目录,普通用户就有权限执行; 当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录 |
/usr/sbin/ | 非系统正常运行所需要的系统命令。最常见的就是某些网络服务器软件的命令 |
/usr/include/ | C/C++等程序语言的头文件与包含文件的放置处,当我们以tarball方式(*.tar.gz的安装方式安装软件)安装某些数据时,会使用到里面的很多头文件。 |
/usr/lib/ | 包含各应用软件的函数库、目标文件,以及不被用户惯用的执行文本或脚本 |
/usr/local/ | 系统管理员在本机自行安装自己下载的软件时,建议安装到此目录,这样比较方便管理。 |
/usr/share/ | 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,是用户都共用的。 |
/usr/src | 是内核源码存放的目录 |
/var:
/usr是安装时会占用较大硬盘容量的目录,/var是在系统运行后才会逐渐占用硬盘容量的目录。/var目录主要针对常态性变动的文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file,run file)或者mysql数据库文件。
目录 | 应存放文件内容 |
/var/cache | 应用程序本身运行过程中会产生的一些缓存文件 |
/var/lock/ | 某些设备或者某些文件资源一次只能被一个应用程序所使用,如果同时两个应用程序使用设备时,就有可能产生一些错误的状况,就需要对设备进行上锁。 |
/var/log/ | 随时更改的日志文件 |
/var/mail/ | 放置个人电子邮件的目录,不过这个目录也被放置到/var/spool/mail目录中,通常这两个目录互为连接文件 |
/var/run | 某些程序启动后,它会将它们的PID放置在这个目录 |
/var/spool/ | 这个目录通常放置一些队列数据 |
2.1.4、绝对路径与相对路径
- 绝对路径:由跟目录(/)开始写起的文件名或目录名称
- 相对路径:相对于目前路径文件名的写法
- . :表示当前目录,也可以使用./代替
- ..:表示上一层目录,也可以用../来表