[linux基础]linux的权限知识

来源:互联网 发布:windows排名 编辑:程序博客网 时间:2024/06/06 00:33

一,基本概念:

Linux的权限访问是由进程(访问者)和文件(被访问者)两部分组成的,进程权限(进程权限通过task_struct 结构体中的 struct cred表示),文件权限(文件权限存放在struct inode结构体中,)

二,相关权限举例:

1,进程和文件权限举例:
文件(夹)读写权限init.rc 中建立test1 test2 test3 文件夹mkdir /data/misc/test1 0770 root root   mkdir /data/misc/test2 0770 wifi wifimkdir /data/misc/test3 0770 system misc其中test1 目录的owner是root, group 也是roottest2 目录的owner是wifi , group 也是wifitest3 目录的owner是system , group 是misc (任何用户都属于group misc)service xxxx /system/bin/xxxxuser rootdisabledoneshotservice yyyy /system/bin/yyyy user systemdisabledoneshotservice zzzz /system/bin/zzzzuser wifidisabledoneshot结果:xxxx 服务可以访问 test1, test2, test3yyyy 服务可以访问 test3zzzz 服务可以访问 test2, test3


2,进程权限
setuid()函数详解
–real user ID (uid): 实际用户ID,指的是进程执行者是谁
–effective user ID (euid): 有效用户ID,指进程执行时对文件的访问权限
–saved set-user-ID (saved uid): 保存设置用户ID。是进程刚开始执行时,euid的副本。在执行exec调用之后能重新恢复原来的effectiv user ID
–FSUID(File System User ID):Linux新引进的一类用户、组,用于文件访问控制,一般跟euid一样。
真实用户ID(real uid)是login时的用户.而在运行过程中,用于所有的安全检查的是有效用户ID(effective uid).
Linux setuid(uid)函数:
    (1)如果由普通用户调用,将当前进程的有效ID设置为uid.
    (2)如果由有效用户ID符为0的进程调用,则将真实,有效和已保存用户ID都设置为uid.
例子:使用setuid或是setruid,让非root用户也可以读取只有root用户有读写权限的

三,相关问题:


1,如何设置SetUID权限呢?

答:使用“chmod”命令即可为指定文件设置SetUID权限,例如“chmod 4xxx   filename”命令,取消SetUID权限的命令为“chmod xxx   filename”。类似的,执行“chmod 2xxx filename”命令可以设置SetGID权限,使用“chmod xxx filename”命令即可取消SetGID权限


2,S权限位的作用

android的init.rc中有如下一句

s在user位置时候称为SUID  只对二进制有效果,执行者对该程序有x的权限,程序只在执行过程有效,执行者有程序所有者权限,s在group位置时称为SGID针对目录时,用户在该目录下有w权限时,创建的文件和该目录有相同的group,mkdir /data/nvram 2770 root nvram,以上这句中2770中的2含义就是s权限位。作用是在/data/nvram目录下创建的文件的user和group和/data/nvram是完全一样的。


3,目录的w和x权限的作用
目录的w权限表示可以在目录下创建和删减文件,x权限代表用户能否进入该目录成为工作目录


4, 特殊权限Sticky标志位:(只对目录有效)
–旧的UNIX系统定义该位为指示操作系统在程序退出后,保留程序的代码段到swap空间。而在linux系统当中,该位表示防删除位,意味着该位被设置之后,只有文件的拥有者和root用户才能删除该文件。


0 0
原创粉丝点击