zoukankan      html  css  js  c++  java
  • linux基础知识-11

    一、用户所有者,组所有者,权限

    linux中每个文件都有三个属性,允许用户控制文件的访问方式。

    当建立一个文件时,当前用户就是这个文件的用户所有者(也就是说这个文件是哪个用户建立的),组所有者就是这个用户的主要组,一般和用户同名。普通用户不能更改文件用户所有者,但可以更改组所有者(比如之前学习的newgrp可以定义主要组)。

    文件的权限定义了三个不同极别的用户如何使用这个文件:

    二、三种权限

    通过上图我们知道用户所有者,组所有者,其它人都对文件有着不同的权限设置,其中每组权限分为rwx,被标记 “-” 的表示这组权限中没有这个权限。比如 rw- 表示没有x权限。

    标记 权限 说明
    r 对于文件表示可以读取文件的内容,对于文件夹表示可以浏览目录中的文件列表
    w 对于文件表示可以修改文件的内容,对于文件夹表示可以创建和删除文件
    x 执行 对于文件表示可以执行(类似于windows的exe文件),对于文件夹表示可以进入此文件夹中。

    三、三种访问级别

    每个文件都有三组不同的读,写,执行权限,分别用于文件所有者(u),组所有者(g)和其它人(o)。

    当有人访问一个文件时,系统会按如下顺序访问:

    1. 当前用户是文件所有者吗? 如果是启用用户权限。
    2. 当前用户是组所有者的成员吗? 如果是启用组权限。
    3. 如果前面两者都不是启用其它权限。

    (一)其它人的权限测试

    cclove@home:~$ echo "hello" > /tmp/abc.txt
    cclove@home:~$ su - linux
    密码:
    $ echo "hello" >> /tmp/abc.txt
    -su: 1: cannot create /tmp/abc.txt: Permission denied
    $ ls -l /tmp/abc.txt
    -rw-r--r-- 1 cclove cclove 6 7月  14 18:57 /tmp/abc.txt
    

    我们先用cclove用户创建文件/tmp/abc.txt,之后切换到linux用户,追加字符串到/tmp/abc.txt文件中,但发现没有权限。 之后我们用ls -l查看一下,发现其它人只能读,不能写,所以不能修改人家的文件。

    (二)共同组成员的权限测试

    首先我们查看一下abc.txt文件的组所有者权限是读和写,这说明只要是cclove组的成员就可以修改abc.txt。 之后我们切换到linux通过id查看一下,发现linux用户的次要组有cclove,这说明linux在cclove这个组中,对这个文件有修改权限。

    这里要注意一下,老陌通过修改/etc/group文件:

    cclove : x : 1000 : linux
    

    把linux放到cclove最后一个字段,表示这个用户属于cclove组,如果有多个用户,用逗号分隔。

    (三)符号链接文件的权限

    链接文件就是创建的快捷方式,这里link_abc.txt是abc.txt的快捷方式。我们发现权限是rwxrwxrwx,但实际上它链接到abc.txt,所以权限同abc.txt。

    四、修改文件权限

    chmod ugoa  +-=  rwx  filename
    
    缩写 说明
    u 用户所有者
    g 组所有者
    o 其它人
    a 以上三组(所有)
    + 增加权限
    - 减去权限
    = 设置权限
    r
    w
    x 执行

    例:

    给文件abc.txt 用户所有者添加x权限,组所有者添加w权限,其它人去掉r权限。

    五、修改文件的组所有者

    之前老陌通过newgrp临时修改用户的主要组,之后创建文件则以修改后的组为准,但是如果已经创建文件了就无能为力了。

    我们需要用chgrp来修改(change group):

    chgrp GROUP file……
    

    此命令的作用是将文件的组所有者改成GROUP,可以一次性修改多个文件。
    只有文件的所有者才能更改文件的所属组,而且这个用户必须是新组的成员。

    通过上图我们来分析一下:

    先创建文件file,查看他的组所有者是laomo, 之后查看文件所有者用户的次要组都有谁,查看之后用chgrp修改file的组所有者为netdev,之后再查看成功。

    最后修改file的组所有者为music失败,因为laomo用户不是music组成员,所以修改不了。如果非要改可以用管理员账号改。

    六、修改文件的用户所有者

    这个需要管理来操作,普通用户没有权限修改。

    chown USER file……
    

    将文件的用户所有者改成USER。

    通过上图我们来分析一下:

    首先查看文件的用户所有者是laomo,之后我们用chown修改成me用户(me是老陌新创建的用户),注意要以管理员权限修改, 再次查看文件的所有者已经变成了me。

  • 相关阅读:
    git命令行clone指定分支、更新、冲突解决、提交代码步骤
    row_number() over() 一句话概括,以及max()函数的一种查询分组中最大值的用法
    在实体类中对与记录数量的属性进行修改时,定义相关方法在实体类中,进行修改时方便
    JQuery 获取多个select标签option的text内容
    Mybatis&orcale update语句中接收参数为对象
    zTree异步加载展开第一级节点
    zTree获取当前节点的下一级子节点数
    Mybatis报错 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'parentCode' not found. Available parameters are [0, 1, param1, param2]
    ztree插件异步加载 使用RESTEasy报错 Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected.
    Mybatis 报错 There is no getter for property named '***' in 'class java.lang.String'
  • 原文地址:https://www.cnblogs.com/myccloves/p/9313355.html
Copyright © 2011-2022 走看看