权限_android 普通权限、签名权限、危险权限和特殊权限 - CSDN
权限 订阅
权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。 展开全文
权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。
信息
词    性
名词
释    义
职能权利范围
中文名
权限
外文名
privilege
权限含义
1、职能权利范围2、在法律规定的权限内。职权范围。权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。它常常用“具有批准……事项的权限”来进行表达。
收起全文
  • 本课程从0到1实现一个基于SpringBoot+Jpa+JWT+Spring Security+Vue+ElementUI整合前后端分离权限后台管理系统,数据库采用的是:mysql5.7,本项目主要功能模块有:用户管理、角色管理、菜单管理、部门管理、岗位管理...
  • 本课程是基于SSM+Maven框架的权限管理系统,非常详细,包含源代码和数据库表结构设计,非常适合企业级开发的入门实战课程。技术采用:Spring+SpringMVC+MyBatis+MySql+easyUI+Ajax+Maven,都是现实市场主流技术。...
  • 肖老师这套课程从普通项目的权限设计-->>百万级的中型项目权限设计-->>大型的项目权限设计,非常细致的介绍了各种各样的业务系统的不同权限管理策略。 视频详细介绍了spring security权限框架的使用和...
  • 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了...
  • 也就是说一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个...

    1.基于 RBAC(Role-based Access Control)权限访问控制。也就是说一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个角色(多对多)。

    2.最简单版本
    假设:我们拿到一个用户对象,
    可以通过:用户id –>角色id–>角色名称(什么角色)–>权限id –> 权限标识 –>获取权限。最终获取权限获取角色信息。
    这里写图片描述
    角色:可以简单理解为许多权限的集合。比如二级管理员,三级管理员。

    3.用户组模式
    如果用户数量比较庞大,可以加入用户组模式。需要给用户分组,每个用户组内有多个用户,可以给用户授权外,也可以给用户组授权。最终用户拥有的所有权限 = 用户个人拥有的权限+该用户所在用户组拥有的权限。(这个设计类似 svn 中的用户权限,比如,将一个svn用户加入到 group中,然后设置group的权限,以后加入更多的用户,就不用再一一设置用户的权限了。)

    这里写图片描述

    4.权限分类
    大部分是针对功能模块,比如对信息记录的增删改(信息状态修改,文件的删除修改等),菜单的访问,输入框,按钮的可见性,是否可以新增下级管理员等。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。

    这里写图片描述

    5.完整版
    请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示页面元素的可见性控制等。

    优点:(1)不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。
    (2)方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。

    这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。

    这里写图片描述

    展开全文
  • linux权限详细介绍

    2018-12-26 10:09:17
    这些信息中包含了这个文件的权限信息和所有者以及所在组,还有该文件的大小,该文件最后修改的日期时间,文件名称等信息. 从左往右看, 第一个代表文件的类型, 如果是一个普通文件为"-", 如果是一个目录...
    • 当我们使用"ls -l" 指令查看一个文件或目录信息的时候,系统会显示出,如下信息

    在这里插入图片描述

    • 这些信息中包含了这个文件的权限信息和所有者以及所在组,还有该文件的大小,该文件最后修改的日期时间,文件名称等信息.
    • 从左往右看,

    在这里插入图片描述

    • 第一个"-"代表文件的类型,

      • 如果是一个普通文件为"-",
      • 如果是一个目录为"d",
      • 如果是一个软连接为"l"
      • 如果是一个字符设备为"c"
      • 如果是一个块文件为"b"
    • 然后以三个符号为一组看,第一组表示文件所有者拥有的的权限
      在这里插入图片描述

      • 其中"r"表示该文件拥有读取的权限
      • "w"表示该文件拥有修改的权限
      • “-” 表示暂时还没有其他权限
    • 第二组.表示该文件所在组的用户,拥有的权限
      在这里插入图片描述

      • 同样"r" 表示拥有阅读的权限
      • "-"表示暂时没有其他权限
    • 第三组表示其他组的用户所拥有的权限
      在这里插入图片描述

      • 同样"r" 表示拥有阅读的权限
      • "-"表示暂时没有其他权限
    • 接着看旁边的数字 1

    在这里插入图片描述
    - 如果这个文件类型是一个普通文件,则表示这个文件的硬链接
    - 如果这个文件类型是一个目录,则表示这个目录下的子目录个数

    • 然后第一个root,表示这个文件的所有者为"root"用户
      在这里插入图片描述

    • 第二个"root",表示这个文件的所在组为"root"组
      在这里插入图片描述

    • 接着一串数字
      在这里插入图片描述

      • 表示这个文件的大小为"1796字节",如果是使用"ls -hl" 指令查看的文件信息,会将大小换算为更高的单位
      • 如果此时的文件类型是一个目录,会显示"4096" ,linux中一切皆文件,所以目录其实也是一个特殊的文件,所以4096也代表这个目录的大小)
    • 接着的日期,表示这个文件的最后修改日期为"2013年 10 月 2日"
      在这里插入图片描述

    • 最后,表示这个文件的名称
      在这里插入图片描述

    rwx权限的详解

    • 在前的文件信息中,可以看到"r","w"的权限,实际上还有一个"x"权限,表示可执行权限,但是"rwx"这三个权限在不同的文件类型上,有着不一样的意义.
    1. 如果是描述一个普通文件
    • r 表示这个文件是可以读取,查看的
    • w 表示这个文件是可以进行修改,但是不一定表示这个文件可以删除,因为还需要考虑这个文件所在的目录权限是否有能够删除的权限
    • x 表示这个文件是可以执行的
    1. 如果描述的是一个目录
    • r 表示这个目录可以进行查看

    • w 表示这个文件可以进行增加,删除或重命名

    • x 表示可以进入这个目录

    • "rwx"权限还可以使用数字来表示为:r=4,w=2,x=1,所以rwx=4+2+1=7

    展开全文
  • Android权限管理

    2019-07-17 12:39:52
    Android权限管理(PermissionsDispatcher框架使用)简述一、Android权限二、6.0以上权限管理 简述 由于对于安全考虑,Android对于权限的管理更加的严谨,以6.0位界分为两种处理方式:6.0以下系统还是保持旧的处理...

    Android权限管理(PermissionsDispatcher框架使用)

    简述

    由于对于安全考虑,Android对于权限的管理更加的严谨,以6.0位界分为两种处理方式:6.0以下系统还是保持旧的处理方式,直接在AndroidManifest清单中注册相应权限就可以;6.0以上系统就需要根据权限的等级(普通权限和危险权限)进行权限注册,如果是普通权限还是依照之前的处理方式直接在AndroidManifest清单中注册即可,但是危险权限不仅需要在AndroidManifest清单中注册且还需要在使用时动态申请
    其实现在主流权限管理框架有三个,分别为PermissionsDispatcher、RxPermissions和easypermissions;在使用中作者方向从代码简洁及易用性来说PermissionsDispatcher跟优于其他两种两种框架;PermissionsDispatcher是采用注解的方式进行权限管理,RxPermissions是基于RxJava的权限管理,easypermissions是谷歌推出的;有兴趣的朋友加深去了解一下;但不管怎么样这三个框架都简化了需要动态管理的权限。

    一、Android权限

    在这里插入图片描述在这里插入图片描述
    terminal中使用这个命令可以列出调试手机的所有权限,包含应用自定义的权限:

    adb shell pm list permissions
    

    注意:并不是所有的危险权限都能申请,有某些权限系统是默认禁止的,目前暂时没有任何办法获取

    二、6.0以上权限管理

    在介绍该PermissionsDispatcher框架前我简述一下,官方或网上给出的很多注册方式都没问题的,但是对于Android本身的问题(千奇百怪手机,不同品牌对于系统再次定制),有时总会出现由于考虑不周总会出现这样那样的问题会让你焦头烂额的,我也是经过多种尝试,最终觉的还是这个框架还是目前来说最稳定的管理方式;
    介绍:PermissionsDispatcher是一个基于注解、帮助开发者简单处理Android 6.0系统中的运行时权限的开源库、避免开发者编写大量繁琐的样板代码并进行了简化处理。
    开源地址:https://github.com/hotchemi/PermissionsDispatcher
    文档介绍:http://hotchemi.github.io/PermissionsDispatcher/
    下面开始介绍如何在Android studio使用该框架:

    1、添加依赖
    在项目工程下的build.gradle文件中加入对maven仓库依赖引入的支持

    allprojects {
        repositories {
            jcenter()
            mavenCentral()
        }
    }
    

    之后在module下的build.gradle文件中添加两项依赖:

    implementation 'com.github.hotchemi:permissionsdispatcher:2.3.1'
    annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.3.1'
    

    并将targetSdkVersion设为23(一定要大于等于23),即:targetSdkVersion 23
    2、在Plugins加入PermissionsDispatcher插件
    在Android studio加入PermissionsDispatcher插件有益于你后期快速使用PermissionsDispatcher,可以说几乎于是一键导入;
    第一步在AS File点击Setting进入Setting操作面板

    第二部,在Setting操作面板选择Plugins,在右上角输入框中输入PermissionsDispatcher搜索,并安装,安装后需要重启
    在这里插入图片描述
    3、在工程中使用PermissionsDispatcher插件开始布局Permissions管理
    注意:在使用权限管理框架前,一定要明确一点,一定要Activity/Fragment中使用
    第一步:在需要使用权限管理的Activity/Fragment类中右击如下图,选择Generate -> Generate Runtime Permissions…
    第二步:如下图,在权限管理区域选择相应的权限在这里插入图片描述
    然后在Annotations区域,选择相应的注解,选择的注解同时需要自定义对应的方法名;
    最后点击“Generate”按钮;最好强调移一下点击“Generate”后会有个弹窗,可以选择rebuild,也可以不用,但一定要在生成的方法前使用public,且再次将工程build-》rebuild project一下,结果如下图:
    在这里插入图片描述
    以下为注解说明(注:带注释的方法一定不能private,一定要为public):

    注解 是否必须要 描述
    @RuntimePermissions 在Activity的Class声明此注解,来处理我们的权限
    @NeedsPermission 请求的权限成功后执行的方法
    @OnShowRationale 在申请权限前解释为什么需要这些权限
    @OnPermissionDenied 当用户拒绝授权时将调用该方法
    @OnNeverAskAgain 当用户选择了 “不再提醒” 将调用该方法

    a、@RuntimePermissions注解:这是必须使用的注解,用于标注在你想要申请权限的Activity或者Fragment上

    @RuntimePermissions
    public class TestActivity extends UMengBaseActivity {
    

    b、@NeedsPermission注解:这也是必须使用的注解,用于标注在你要获取权限的方法,注解括号里面有参数,传入想要申请的权限。也就是说你获取了相应的权限成功后就会执行这个方法

    @NeedsPermission(Manifest.permission.CAMERA)
    public void NeedsMethod() {
    	
    }
    

    c、@OnShowRationale注解:这个不是必须的注解,用于标注申请权限前需要执行的方法,注解
    括号里面有参数,传入想要申请的权限,而且这个方法还要传入一个PermissionRequest对象,这个对象有两种方法:proceed()让权限请求继续,cancel()让请求中断。也就是说,这个方法会拦截你发出的请求,这个方法用于告诉用户你接下来申请的权限是干嘛的,说服用户给你权限

    @OnShowRationale(Manifest.permission.CAMERA)
    public void RationaleMethod(final PermissionRequest request) {
    
    }
    

    d、@OnPermissionDenied注解:这个也不是必须的注解,用于标注如果权限请求失败,但是用户没有勾选不再询问的时候执行的方法,注解括号里面有参数,传入想要申请的权限。也就是说,我们可以在这个方法做申请权限失败之后的处理,如像用户解释为什么要申请,或者重新申请操作等

    @OnPermissionDenied(Manifest.permission.CAMERA)
    public void DeniedMethod() {
    
     }
    

    e、@OnNeverAskAgain注解:这个也不是必须的注解,用于标注如果权限请求失败,而且用户勾选不再询问的时候执行的方法,注解括号里面有参数,传入想要申请的权限。也就是说,我们可以在这个方法做申请权限失败并选择不再询问之后的处理。例如,可以告诉作者想开启权限的就从手机设置里面开启

    @OnNeverAskAgain(Manifest.permission.CAMERA)
    public void AskMethod() {
    
    }
    

    为什么注解方法前一定要使用public:
    原因是只要我们实现了@RuntimePermissions和@NeedsPermission这两个必须的注解之后,再build一次project之后,编译器就会在在app\build\intermediates\classes\debug目录下与被注解的Activity同一个包下生成一个辅助类,名称为 “被注解的Activity的名称+PermissionsDispatcher” 的辅助类,用来调用被注解的Activity的方法(就是因为这个所以被注解的方法不能private,private方法的作用域不在其他的类)。所以,第一次用的话,要注解好之后,build一次,下面的方法里面的PermissionsDispatcherActivityPermissionsDispatcher才不会令AS报红。

    最后在相应的方法调用申请方法就可以了
    类名:类名+PermissionsDispatcher
    方法名:@NeedsPermission注解的方法名+WithCheck

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        TestActivityPermissionsDispatcher.NeedsMethodWithCheck(this);//调用此方法即可动态申请权限;
    }
    
    展开全文
  • linux 权限

    2018-06-02 16:40:50
    0 表示管理员(root),超级管理员,最大权限 1 - 500 表示系统用户,与一些系统服务有关 501 - 65535 表示普通用户,也就是自己创建的用户 不同的 Linux 发行版,这些数字可能不一样 #创建用户 useradd ...

    Linux 系统中,UID以如下的方式划分:

    0 表示管理员(root),超级管理员,最大权限
    1 - 500 表示系统用户,与一些系统服务有关
    501 - 65535 表示普通用户,也就是自己创建的用户

    不同的 Linux 发行版,这些数字可能不一样

    #创建用户
    useradd zhangsan
    #删除用户
    
    #仅删除用户
    userdel zhangsan
    #删除家目录
    userdel -r zhangsan
    
    #显示用户id
    id zhangsan
    
    #修改用户密码
    echo "newpassword" | passwd --stdio zhangsan
    

    文件权限
    这里写图片描述
    每一列分别为 权限,文件硬链接数 ,所属用户,所属组,大小,时间,名称

    其中权限里
    第一个 为d代表是目录,为-代表用户可以查看的如文本文件,为c或者d代表块或者设备文件
    这里写图片描述

    r,w,x分别代表读,写,执行权限,没有该权限为-,不能省略
    例如,只能读,则为 r–
    然后r,w,x又分别对应4,2,1
    那么 rwx=7, r-x=5, -wx=3

    #改变文件权限,a代表所有,u代表拥有者,g代表组,o代表其他
    #把拥有者权限改成读写执行
    chmod u=rwx test.txt
    #单独增加某项权限,给所有用户执行权限
    chmod a+x test.txt
    #一起改变三类用户权限,权限分别为 rwx,r-x,-w-
    chmod 752 test.txt
    #更改文件所属用户
    chown root test.txt

    还有3个特殊权限
    SUID,SGID和SBIT
    这里写图片描述
    分别出现在文件所属用户,所属组,和其他上的执行位
    若当这些权限存在,执行位为-时,该位为s(t),执行位为x时,该位为S(T)

    SUID
    1.SUID只对二进制文件有效
    2.调用者对该文件有执行权
    3.在执行过程中,调用者会暂时获得该文件的所有者权限
    4.该权限只在程序执行的过程中有效

    SGID
    它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

    SBIT
    即Sticky Bit,它出现在其他用户权限的执行位上,它只能用来修饰一个目录。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。

    4表示SUID 2表示SGID 1表示SBIT
    写在前面的三种权限之前,若都有,则为7777

    chattr命令用来改变文件属性。又称隐藏权限,不会改变前面的几种权限
    这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

    a:让文件或目录仅供附加用途;
    b:不更新文件或目录的最后存取时间;
    c:将文件或目录压缩后存放;
    d:将文件或目录排除在倾倒操作之外;
    i:不得任意更动文件或目录;
    s:保密性删除文件或目录;
    S:即时更新文件或目录;
    u:预防意外删除。

    #增加和删除a权限
    chattr +a test.txt
    chattr -a test.txt
    
    #查看隐藏权限
    lsattr

    对单个用户设置权限
    文件访问权限控制列表 facl

    #设置权限
    setfacl -Rm u:zhangsan:rwx momo
    #查看权限
    getfacl momo
    展开全文
  • 权限简介 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。 Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。 Linux下权限的粒度...

    权限简介

    • Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
    • Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
    • Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
    • Linux上通常使用chmod命令对文件的权限进行设置和更改。

    一、快速入门

    更改文件权限 (chmod命令)

    一般使用格式

    chmod [可选项] <mode> <file...>

    参数说明:
    
    [可选项]
      -c, --changes          like verbose but report only when a change is made (若该档案权限确实已经更改,才显示其更改动作)
      -f, --silent, --quiet  suppress most error messages  (若该档案权限无法被更改也不要显示错误讯息)
      -v, --verbose          output a diagnostic for every file processed(显示权限变更的详细资料)
           --no-preserve-root  do not treat '/' specially (the default)
           --preserve-root    fail to operate recursively on '/'
           --reference=RFILE  use RFILE's mode instead of MODE values
      -R, --recursive        change files and directories recursively (以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)
           --help		显示此帮助信息
           --version		显示版本信息
    [mode] 
        权限设定字串,详细格式如下 :
        [ugoa...][[+-=][rwxX]...][,...],
    
        其中
        [ugoa...]
        u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
        [+-=]
        + 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
        [rwxX]
        r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
     	
    [file...]
        文件列表(单个或者多个文件、文件夹)

     范例:

    • 设置所有用户可读取文件 a.conf
    chmod ugo+r a.conf 
    或 
    chmod a+r  a.conf
    
    • 设置 c.sh 只有 拥有者可以读写及执行
    chmod u+rwx c.sh
    
    • 设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
    chmod a+r,ug+w,o-w a.conf b.xml
    
    • 设置当前目录下的所有档案与子目录皆设为任何人可读写
    chmod -R a+rw *
    

    数字权限使用格式

    在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,

    如:

    rwx = 4 + 2 + 1 = 7

    rw = 4 + 2 = 6

    rx = 4 +1 = 5

    若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7

    若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6

    若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5

    上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :

    chmod <abc> file...

    其中
    a,b,c各为一个数字,分别代表User、Group、及Other的权限。
    相当于简化版的
    chmod u=权限,g=权限,o=权限 file...
    而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限
    

    范例:

    • 设置所有人可以读写及执行
    chmod 777 file  (等价于  chmod u=rwx,g=rwx,o=rwx file 或  chmod a=rwx file)
    
    • 设置拥有者可读写,其他人不可读写执行
    chmod 600 file (等价于  chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )
    

    更改文件拥有者(chown命令)

    linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。

    语法格式:

    chown [可选项] user[:group] file...

    使用权限:root
    
    说明:
    [可选项] : 同上文chmod
    user : 新的文件拥有者的使用者 
    group : 新的文件拥有者的使用者群体(group)
    

    范例:

    • 设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
    chown tom:users file d.key e.scrt
    
    • 设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
    chown -R James:users  *
    

    二、Linux权限详解

    Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机制,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。

    Linux的文件权限有以下设定:

    • Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
    • Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。
    • 通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

    如果我们要表示一个文件的所有权限详情,有两种方式:

    • 第一种是十位二进制表示法,(三个属组每个数组使用一个二进制位,再加一个最高位共十位),可简化为三位八进制形式
    • 另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式

    十位权限表示

    常见的权限表示形式有:

    -rw------- (600)      只有拥有者有读写权限。
    -rw-r--r-- (644)      只有拥有者有读写权限;而属组用户和其他用户只有读权限。
    -rwx------ (700)     只有拥有者有读、写、执行权限。
    -rwxr-xr-x (755)    拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
    -rwx--x--x (711)    拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
    -rw-rw-rw- (666)   所有用户都有文件读、写权限。
    -rwxrwxrwx (777)  所有用户都有读、写、执行权限。
    

    后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。

    实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为

    r-- = 100
    -w- = 010
    --x = 001
    --- = 000
    

    转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)

    实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:

    rwx = 111 = 7
    rw- = 110 = 6
    r-x = 101 = 5
    r-- = 100 = 4
    -wx = 011 = 3
    -w- = 010 = 2
    --x = 001 = 1
    --- = 000 = 0
    

    由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。

    故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数

    -rw------- =  600
    -rw-rw-rw- =  666
    -rwxrwxrwx =  777
    

    关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:

    d代表的是目录(directroy)
    -代表的是文件(regular file)
    s代表的是套字文件(socket)
    p代表的管道文件(pipe)或命名管道文件(named pipe)
    l代表的是符号链接文件(symbolic link)
    b代表的是该文件是面向块的设备文件(block-oriented device file)
    c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
    

    十二位权限(Linux附加权限)

    附加权限相关概念

     

    linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。

     

    SET位权限:

    suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。 一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。在许多环境中,suid 和 sgid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。所以应该尽量避免使用SET位权限程序。(passwd 命令是为数不多的必须使用“suid”的命令之一)。

    • suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
    • sgid(set Group ID,set GID)意思也是一样,只是把上面的进程拥有者改成进程组就好了。

    SET位权限表示形式(10位权限):

    如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:

    1、-rwsr-xr-x 表示设置了suid,且拥有者有可执行权限
    2、-rwSr--r-- 表示suid被设置,但拥有者没有可执行权限
    3、-rwxr-sr-x 表示sgid被设置,且群组用户有可执行权限
    4、-rw-r-Sr-- 表示sgid被设置,但群组用户没有可执行权限
    

    设置方式:

    SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):

    chmod u+s filename 	设置suid位
    chmod u-s filename 	去掉suid设置
    chmod g+s filename 	设置sgid位
    chmod g-s filename 	去掉sgid设置
    

    粘滞位权限:

     

    粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用ls查看其属性时,其他用户权限处的x将变为t。 使用chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。

    粘滞位权限表示形式(10位权限):

    一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。如:

    1、-rwsr-xr-t 表示设置了粘滞位且其他用户组有可执行权限
    2、-rwSr--r-T 表示设置了粘滞位但其他用户组没有可执行权限
    

    设置方式:

    sticky权限同样可以通过chmod命令设置:

    chmod +t <文件列表..>

    十二位的权限表示方法

    附加权限除了用十位权限形式表示外,还可以用用十二位字符表示。

    11 10 9 8 7 6 5 4 3 2 1 0
    S  G  T r w x r w x r w x
    

    SGT分别表示SUID权限、SGID权限、和 粘滞位权限,这十二位分别对应关系如下:

    第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位(后九位)。

    在这十二位的每一位上都置值。如果有相应的权限则为1, 没有此权限则为0。

    -rw-r-sr-- 的值为: 0 1 0  1 1 0  1 0 0  1 0 0
    -rwsr-xr-x 的值为: 1 0 0  1 1 1  1 0 1  1 0 1
    -rwsr-sr-x 的值为: 1 1 0  1 1 1  1 0 1  1 0 1 
    -rwsr-sr-t 的值为: 1 1 1  1 1 1  1 0 1  1 0 1
    

    如果将则前三位SGT也转换成一个二进制数,则

    • suid 的八进制数字是4
    • sgid 的代表数字是 2
    • sticky 位代表数字是1

    这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中

    • 最高的一位八进制数就是suid,sgdi,sticky的权值。
    • 第二位为 拥有者的权值
    • 第三位为 所属组的权值
    • 最后一位为 其他组的权值

    附加权限的八进制形式

     

    通过上面,我们知道,正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)

    chmod <abc> file...

    我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。

    chmod <sabc> file...

    其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。

    我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则

    -rw-r-sr-- = 0 1 0 1 1 0 1 0 0 1 0 0 = 2644 
    -rwsr-xr-x = 1 0 0 1 1 1 1 0 1 1 0 1 = 4755
    -rwsr-sr-x = 1 1 0 1 1 1 1 0 1 1 0 1 = 6755
    -rwsr-sr-t = 1 1 1 1 1 1 1 0 1 1 0 1 = 7755
    

    对比范例:

    • 设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行
    chmod 755 netlogin
    
    
    • 设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid
    chmod 4755 netlogin

    chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。

    为什么要设置4755 而不是 755? 
    假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

     

    展开全文
  • 系统权限管理设计

    2014-07-16 12:19:47
    关于权限菜单的设计
  • 1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息; 2. 访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到...
  • 权限管理框架

    2018-01-02 18:21:24
     基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。  权限管理包括用户...
  • 功能权限和数据权限

    2017-11-10 16:58:20
    在任何系统中都需要权限控制,没有权限,系统是不健全的时刻会受到各种问题的干扰。 权限分为数据权限和功能权限 1、功能权限:  能不能打开某一个界面,能不能触发一个界面上的一个按钮,某些业务员能不能删除...
  • 水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。 漏洞示例: XXX/...
  • 在Android M中权限系统被重新设计,发生了颠覆性的变化,很多人把握不好这个变化,一是对这个权限策略和套路还没有摸透,二是没有一个很好的实践来支撑,很多人问我关于权限管理的问题,往往我都没有直接回答,因为...
  • 前端权限控制的本质 权限策略 接口权限控制 页面级访问权限控制 创建路由表 Mock权限列表数据 编写导航钩子 数据级操作权限控制 路由控制完整流程图 NEXT——登录及系统菜单加载 源码 本系列目录 前端权限...
  • 推荐最新技术springboot版权限管理(java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大! 注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有...
  • 常用下面这条命令:chmod 777 文件或目录示例:chmod 777 /etc/squid 运行命令后,squid文件夹(目录)的权限就被修改为777(可读可写可执行)。如果是Ubuntu系统,可能需要加上sudo来执行:sudo chmod 777 /etc/...
  • 设计一个灵活、通用、方便的权限管理系统。 在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也...
  • 使用Windows10的时候常常发现我们没有管理员权限,这对我们使用造成了巨大麻烦。今天我来分享一下 win10里面怎么获取最高管理员权限。 (一)Windows10专业版/企业版/教育版方法 1,按下win+R键唤出“运行”窗口,...
1 2 3 4 5 ... 20
收藏数 2,061,105
精华内容 824,442
关键字:

权限