Linux文件权限

  • 文件权限

首先看一下Linux文件的属性,以root身份登录Linux服务器,执行“ls -al”命令。
Linux文件属性
一个Linux文件主要包括七个属性

  1. 类型和权限

     dr-xr-x---
    

    第一个字符代表这个文件的类型
    接下来的字符中,以三个为一组,且均为[rwx]的三个参数的三组。[rwx]分别代表了可读、可写、可执行。三组分别代表了档案拥有者、档案所属群组、其它非本群组。

  2. 连结数
    表示有多少档名连接到此节点

  3. 拥有者账号

  4. 所属群组

  5. 文件的容量大小
    默认单位为bytes

  6. 最近修改日期
    修改时间是上一年则显示年份

  7. 文件名
    以[.]开头的文件代表为隐藏档

例题
例题:
假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?
-rw-r--r--  1 root     root          238 Jun 18 17:22 test.txt 
-rwxr-xr--  1 test1    testgroup    5238 Jun 19 10:25 ping_tsai
答:
文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个账号可以存取此文件,其他人则仅能读此文件;

另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。其中:
test1 可以针对此文件具有可读可写可执行的权力;
而同群组的test2, test3两个人与test1同样是testgroup的群组账号,则仅可读可执行但不能写(亦即不能修改);
至于非testgoup这一个群组的人则仅可以读,不能写也不能执行!
例题:
如果我的目录为底下的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?
    drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/
答:
文件拥有者test1[rwx]可以在本目录中进行任何工作;
而testgroup这个群组[r-x]的账号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!

  • 改变文件属性和权限

  1. 改变文件所属群组

    [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. 改变文件拥有者

    [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
    

    Tips:
    建议使用冒号『:』来隔开拥有者与群组啦!此外,chown也能单纯的修改所属群组呢! 例如『chown .sshd install.log』就是修改群组~看到了吗?就是那个小数点的用途!

  3. 改变文件权限

    .数字类型改变文件权限
    权限的分数对照 r:4 w:2 x:1

    [root@www ~]# chmod [-R] xyz 文件或目录
    选项与参数:
    xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
    
    例题:
    将刚刚你的.bashrc这个文件的权限修改回-rw-r--r--的情况吧!
    答:
    -rw-r--r--的分数是644,所以指令为:
    chmod 644 .bashrc
    

    .符号类型改变文件权限
    基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成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
    

    如果我不知道原先的文件属性,而我只想要增加.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
    

  • 目录与文件的权限的意义

  1. 权限对于文件的重要性

     r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
     w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
     x (execute):该文件具有可以被系统执行的权限。
    

    Linux中,文件的扩展名并没有什么意义

  2. 权限对目录的重要性

     r (read contents in directory):
    
     表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!
     
     w (modify contents of directory):
     
     这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
     
     建立新的文件与目录;
     删除已经存在的文件与目录(不论该文件的权限为何!)
     将已存在的文件或目录进行更名;
     搬移该目录内的文件、目录位置。
     
     总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!
     
     x (access directory):
     
     用户在拥有目录的执行权限,才能进入该目录
    
    例题:
    有个目录的权限如下所示:
    drwxr--r--  3  root  root  4096   Jun 25 08:35   .ssh
    系统有个账号名称为vbird,这个账号并没有支持root群组,请问vbird对这个目录有何权限?是否可切换到此目录中?
    答:
    vbird对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表。因为vbird不具有x的权限, 因此vbird并不能切换到此目录内!(相当重要的概念!)
    

    上面这个例题中因为vbird具有r的权限,因为是r乍看之下好像就具有可以进入此目录的权限,其实那是错的。 能不能进入某一个目录,只与该目录的x权限有关啦!此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r的权限。

    要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给! 为什么w不能随便给,我们来看下一个例子:

    例题:
    假设有个账号名称为dmtsai,他的家目录在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。 若在此目录下有个名为the_root.data的文件,该文件的权限如下:
    -rwx------ 1 root  root  4365 Sep 19 23:20  the_root.data
    请问dmtsai对此文件的权限为何?可否删除此文件?
    答:
    如上所示,由于dmtsai对此文件来说是『others』的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容就是了。
    
    但是由于这个文件在他的家目录下, 他在此目录下具有rwx的完整权限,因此对于the_root.data这个『档名』来说,他是能够『删除』的! 结论就是,dmtsai这个用户能够删除the_root.data这个文件!
    

本文大部分均摘自《鸟哥的Linux私房菜》,作为笔记使用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值