Linux中,文件按用户权限分,有Owner、Group、Others三种权限。按读写方式可分为read、write、execute权限。Linux是多用户、多任务环境操作系统,权限的管理相当重要。
1、用户组
对于文件a,归用户A所有,但现在有用户B、C也需要访问,那么,就可以将A、B、C放到一个用户组T里,这个组里的文件对文件a都有访问权限。这就是用户组(group)的概念。而用户C不在这个组里,这个用户相对于T就是Others了。用户组可以更加方便地管理某一类文件被多个用户分享的情况。
root用户具有最大的权限,可以对任何文件、用户进行更改。
默认情况下,系统上所有的账号和一般身份用户及root都记录在/etc/passwd这个文件中,密码则记录在/etc/shadow中,所有的都记录在/etc/group中。
2、文件属性
用ls -al命令可以列出当前文件夹下面的所有的文件的属性,共有7列,格式为
[权限] [连接] [所有者] [用户组] [文件容量] [修改日期] [文件名]
如
drwxrwxr-x 11 stack stack 4096 Jun 22 23:10 devstack
(1)文件类型与权限
第一列为文件类型及权限,共有10个字符,第一个字符表示这个文件是“目录、文件或链接文件“等,意义如下:
- d:目录
- -:文件
- |:连接文件
- b:可供存储的接口设备
- c:串行端口设备,如键盘
后面9个字符,3列一组。每一组均为"rwx"3个参数的组合,r表示read,w表示write,x表示execute,如果没有权限,则用-代替。第一组为文件所有者的权限,第二组为同用户组的权限,第三组其他非本用户组的权限。
rwx这三个权限对于文件与目录的意义是不同的:
- 文件:文件的rwx权限,Linux中,文件是否能被执行由权限x决定,而不像windows中一样,由后缀名决定;w权限是写权限,但并没有删除该文件的权限;
- 目录:r权限,表示有读取目录结构列表的权限。w权限,表示有更改该目录结构列表的权限,如新建新文件与目录、删除文件与目录(无法该文件与目录的权限如何),转移文件与目录等;x权限,表示用户能进入该目录成为工作目录。
(2)连接
第二列表示有多少文件名到此节点(i-node)。每个文件都会将它的权限与属性记录到文件系统的i-node中,一个i-node对应一个文件,这个i-node保存了这个文件的位置、权限等信息。这个属性就记录了有多少不同的文件名连接到同一个i-node号。
(3)文件所有者
文件被谁创建,这个文件就归谁所有,当然,root用户可以更改这个属性。
(4)所属用户组
一个文件可能属于多个用户组
(5)文件容量大小
默认单位为B
(6)文件创建日期或最近修改日期
显示为格式为”月 日 时“,如果修改时间太久,则只显示年份。
(7)文件名
如果文件名之前有一个.号,则表示这个文件为”隐藏文件“。
3、改变文件属性与权限
(1)改变文件所属用户组命令:chgrp(change group缩写)
命令格式:
chgrp [-R] 组名 文件名
-R为递归更改,即同子目录下的所有文件、目录都改成这个组。
(2)改变文件所有者:chown(change owner缩写)
有两种命令格式
chown [-R] 用户 文件
chown [-R] 用户:组名 文件
利用第二个命令可以直接将文件的所有者和用户组改变
(3)改变权限:chmod:
我们知道,文件权限有9个字符,3个一组,Linux中,权限的数字分别为
r为4,w为2,x为1,每组权限,可以由这三个数字相加,如rwx = 4 + 2 + 1 = 7。
命令格式为:
chmod [-R] xyz 文件
如xy z = 777,则表示将三组的权限全改为rwx。
还有一种方式,就是用符号类型来改变文件权限。
- u:表示用户所有者
- g:表示用户组
- o:其他组
chmod -R u=rwx,go=rx test
表示将用户所有者权限改为rwx,用户组和除用户组外的其他组改为rx权限。
我们还可以在文件原有的权限上更改权限。如
chmod a+w test
表示将文件test权限在原权限之上加上x权限(对用户、用户组、其它组全加上)
4、目录配置