Linux支持多人同时登录系统处理,每个登录用户都会创建一个shell进程.shell进程的id是唯一的,除了linux核心模块其他文件是可以实现同时操作的.

支撑多人同时对系统进行操作的基础,的是Linux安全的文件权限设计.

在Linux上任何东西都是文件,而文件的权限从使用者分为:owngroupother.从行为分为:rwx.

而文件类型常见的分为:-dl

拥有者(own)、群组(group)、other

一个Linux文件,它将用户分成了三类.拥有它的人(own),它所属群组的用户(group),其他陌生人(other).

群组里面都是放着具体的用户,同一个群组的用户拥有的权限是一样的.

一个用户可以属于多个群组,也可以单独属于一个群组.

Linux世界中有个超级用户(root),它就像Linux世界的神,无所不能.

一个公司约少人拥有root账户,约安全.针对不同的开发需求,应该创建有限的权限用户和群组给开发使用.

文件和目录属性和权限

在Linux中用查看当前目录信息最常用的命令是 :ls -al.这个命令会显示目录下所有文件和目录即使是隐藏的.

如上图,展示一个文件或目录的基础信息.它属于谁(4,5),不同的用户对文件或目录拥有的权限是什么(1).

具体对照如:

文档权限部分代表含义如下:

权限部分第一个字符代表该文件的类型,一个文件常见的类型有:

  • -表示文件
  • d表示目录
  • l表示链接
  • b表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • c表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

后面的字符串,三个字符一组.字符顺序是固定的[rwx].r表示可读权限,w表示可写权限,x表示可执行权限.这个三个权限位置是固定的.字符上如果是-表示该用户类型没有该权限.

文件权限类型是用三个一组的字符表示,而一共有三组权限.它们分别表示:文件拥有者权限,所属群组权限,其他用户权限.

1
2
3
4
5
6
7
[-][rwx][r-x][r--]
1 234 567 890

// 1 表示该文件类型是
// 234 表示 拥有者的权限 是 rwx
// 567 表示所属群组拥有的权限是 rx
// 890 表示其他用户拥有的权限是 r

##修改文件和目录的属性和权限

Linux中文件权限修改指令有:

  • chgrp:改变文件所属群组
  • chown:改变文件拥有者
  • chmod:改变文件的权限, SUID, SGID, SBIT等等的特性

chgrp

修改文件所属的群组

1
2
3
4
5
6
7
8
9
10
[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' <== 发生错误讯息啰~找不到这个群组名~

chown

改变某个文件或目录的所有者和所属的组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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

chmod

用来变更文件或目录的权限

数字类型

Linux为每个权限类型设定了数值.

  • r : 4
  • w : 2
  • x : 1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:

1
2
3
owner = rwx = 4+2+1 = 7 OR rw- = 4+2 = 6
group = rwx = 4+2+1 = 7 OR r-x = 4+1 = 5
others= --- = 0+0+0 = 0 OR -w- = 2

命令格式: chmod xxx filename

1
2
3
4
5
6
7
8
9
[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指定三种用户类型.

可以通过算数符号+,-,=给用户类型设定权限.

1
2
3
4
5
6
7
8
9
10
[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 ~]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

参考

http://cn.linux.vbird.org/linux_basic/0210filepermission.php