一.用户和用户组
1.Linux的每个文件中,依据权限分三种身份
用户
用户组
其他人(others)
用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的支持。
2.Linux用户身份和用户组记录的文件
在linux系统默认的情况下账号、密码、用户组信息分别记录在:
/etc/passwd : 记录系统上的账号、一般用户、root相关信息
/etc/shadow : 记录个人的密码信息
/etc/group : 记录Linux所有的组名
至于更多的与账号用户组信息有关的设置,还有这三个文件的格式,以后学到在做记录。
二.Linux文件权限的概念
1.Linux文件属性
利用ls -l(或ll)命令显示文件属性,第一个字段是文件的权限,共10位,第一位是文件类型,接下来三个为一组共三组,为用户、用户组、其他人的权限,权限有r,w,x三种。
[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 4 18:27 anaconda-ks.cfg
-rw------- 1 root root 199 Sep 8 17:14 .bash_history
-rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout
-rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile
-rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc
-rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc
drwx------ 3 root root 4096 Sep 5 10:37 .gconf
drwx------ 2 root root 4096 Sep 5 14:09 .gconfd
-rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log
-rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 权限 ] [连接] [拥有者][群组] [文件容量] [ 修改日期 ] [ 档名 ] 对文件来讲,权限的效能为:
r : 可读取此文件的实际内容,如读取文本文件的文字内容等
w : 可以编辑、新增或者修改该文件的内容(但不含删除该文件)
x : 该文件具有可以被系统执行的权限
对目录来说,权限的属能为:
r : (read contents in directory)表示具有读取目录结构列表的权限
w : (modify contents of directory)表示具有更改该目录结构列表的权限
x : (access directory)代表用户能否进入该目录成为工作目录的用途
2.Linux下的文件类型与扩展名
第一个字符所代表的是文件类型。
当为[d]则是目录,例如上表档名为『.gconf』的那一行;
当为[-]则是普通文件,例如上表档名为『install.log』那一行;
若是[l]则表示为连结档(link file);
若是[b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是[c]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
若是[s]则表示为数据接口文件
若是[p]则表示特殊的文件类型,主要目的在解决多个程序同时访问一个文件所造成的错误问题 基本上Linux下没有所谓的"扩展名", 一个文件能否被执行与它前面的10个属性有关。然而可以被执行和可以执行成功是不一样的。能否执行成功必须要看该文件的内容,看是否有可执行的数据。
Linux下的"扩展名"使用来表示该文件是什么种类,帮助我们更好的了解文件的用途而已,下面有数种常用的扩展名:
*.sh : 脚本或批处理文件(scripts)
*.Z、*.tar、*.tar.gz、*.zip : 经过打包的文件
*.html、 *.php : 网页相关文件
三.文件属性和权限
1.chgrp : 改变文件所属用户组
请记得,要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!例如:
[root@www ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息~找不到这个群组名~
2.chown : 改变文件所有者
语法及举例:
[root@www ~]# chown [-R] 账号名称 文件或目录
[root@www ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦连同次目录下的所有文件都变更
范例:将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
范例:将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
3.chmod : 改变文件权限
数字类型改变文件权限
用数字代表各个权限,各权限的分数对照如下:
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
[root@www ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
符号类型改变文件权限
chmod
u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录
[root@www ~]# chmod u=rwx,go=rx .bashrc
# 注意!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格!
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod a+w .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod a-x .bashrc
[root@www ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc