文件权限

所有者和群组

由于Linux是一个多人多工的系统,因此可能常常会有多人同时使用这部主机的情况,所有者和群组是一个健全的的安全防护措施.每个用户拥有可操作的文件,且只能操作有权限的

  1. 文件拥有者

    一个文件只能被拥有这个文件权限(读,写)的用户操作,其他用户无法对此文件操作

  2. 群组

    群组在团队开发时候很有用处.一个群组里的人可以共享权限,同时又可以对群组里的 人细化权限,组员拥有共享的文件,也可以有私有的文件.

    比如一个家庭是一个群组,这个家庭是[王大毛家],家里有王大毛,王二毛,王三毛.这三个人分别有自己的房间,同时共同拥有一个客厅.

    • 拥有者: 由于三人分别有各自的房间,所以王二毛可以进入王三毛的房间,但是王二毛不能动王三毛的抽屉,抽屉是王三毛的私人空间,二毛没有权利去动
    • 群组: 由于共同拥有客厅,客厅内的资源,比如电视,沙发,游戏机等三个人都可以使用.

    在这里王大毛家就是群组,三兄弟就是三个使用者,这三个使用者在一个群组里,同时这三个人可以拥有自己的私人空间,同时共享公共空间.

    一个账号可以从属与多个群组

  3. 其他人

    张小猪是[张小猪家]这个群组的,一般情况下他是无法进入到[王大毛家]这个群组,但是如果张小猪认识三毛,可以通过三毛的关系进入到[王大毛家],这个时候张小猪就是属于其他人

  4. 特殊

    Linux里有个特殊的账号root,他拥有所有的权限,可以去任何他想去的地方

  • Linux使用者和群组的记录

    Linux中预设情况下,账号相关信息记录在/etc/passwd这个文件中.个人的密码记录在/etc/shadow文件下.群组记录在/etc/group内.这个三个文件是Linux中账号,密码,群组信息的集中地.

文件权限

文件属性

第一栏文件类型权限

文件权限有十个字元,如下图

  • 第一个表示这个文档是文件,目录,连接档等:
    • d: 表示为目录
    • -: 表示为文件
    • l: 表示为连接档(link file),类似于快捷方式
    • b: 表示为块设备,可供存储的周边设备
    • c: 字符设备文件,比如鼠标,键盘
  • 接下来的字元,以三个一组,且均为[rwx]三个参数的组合,r表示可读,w表示可写,x表示可执行.这个三个顺序不可改变,入股偶没有权限就会出现-
    • 第一组为文件拥有者的权限
    • 第二组为群组中账号的权限
    • 第三组为非本人且没有加入群组(others)的权限

第二栏表示有多少个档名连接到此节点

每个档案都会将他的权限与属性记录到档案系统的i-node中.在目录树中,我们使用档案名来做记录,此处的意思就是有多少个档案名连接到同一个i-node中

第三栏表示该档案拥有者

第四栏表示该档案的所属群组

第五栏表示该档案的大小,预设单位为bytes

第六栏为该档案创建时间或者更新时间

第七栏是该档案名称,如果档案名前有个.则表示为隐藏档案

改变属性和权限

改变群组chgrp

改变的群组必须存在于系统中,也就是/etc/group中有这个群组信息

1
2
3
4
5
chgrp [-R] dirname/filename ...
# -R 进行递归操作
##例子:
#test目录以及所有子目录的群组改为users
chgrp users -R test/

改变拥有者chown

改变的拥有者账号必须存在于系统中,也就是/etc/passwd中有这个账号信息

1
2
3
4
# 将档案或者目录拥有者改为xxx
chwon [-R] 账号名称 档案或目录
# 此命令可以群组,用户一起改
chwon [-R] 账号名称:群组名称 档案或目录

改变权限 chmod

  • 数字类型权限

    [rwx]在Linux中对应着不同数字,可以通过数字来更改类型,规则如下:r: 4,w: 2,x: 1

    比如 owner = rwx = 4 + 2 + 1 = 7

    group =rwx = 4 + 2 + 1 = 7

    others= — = 0+0+0 = 0

    这个情况下,数字类型的权限即为 770

    1
    chmod -R xxx 档案或目录
  • 符号型权限

    符号权限:

操作 身份 权限
chmod u(用户),g(组),o(其他),a(all) rwx +(加入),-(去除),=(设定)
1
2
3
4
5
6
# owner = rwx g = rx o = rx u=rwx,go=rx 是連在一起的,中間並沒有任何空白字元!
chmod u=rwx,go=rx .bashrc
# 所有增加写权限
chmod a+w .bashrc
# 所有去除可执行权限
chmod a-x .bashrc