用户组:好比 如今有4组,把一些功能赋给组php
第1组 能够删除html
第2组 能够查看java
第3组 能够编辑linux
第4组 能够新增nginx
当某一角色 好比管理员 普通管理员就是2个角色 分别属于不一样的用户组 那么他实现的功能就不同了web
从而实现控制shell
一个用户组能够有多种权限 设置好知道 在把角色添加进去就能够了数据库
一个用户的角色和权限来自两部分,一部分继承于全部父用户组的角色和权限,另外一部分来自特别为其分配的角色和权限apache
管理员能够作任何事情, 不受任何约束编程
用户的管理方法,在设计时采起“用户——角色——许可”三级,这是WINDOWS操做系统的用户管理方法。一个用户能够有多个角色,一个角色也能够有多个许可。
因此有数据库设计时分别设计:
用户表:设UserID、用户名、用户信息
角色表:设RoleID、CategoryID、RoleName、Description
用户角色表:UserID、RoleID
分类表:CategoryID、CategoryName、Description
许可表:PermissionID、CategoryID、PermissionName、Description
角色许可表:RoleID、PermissionID
设计好数据库后,便可以从事设计用户、角色、许可的类。类库分数据层类,完成创建、查询、删除、更新等操做。业务层的类,须要实现与数据无关功能,创建如用户拥有角色、许可的列表,验证方式等。
在Linux里面,任何一个文件都具备『User, Group及Others』三种身份的个别权限, 咱们能够将上面的说明以底下的图示来解释:
咱们以王三毛为例,王三毛这个『文件』的拥有者为王三毛,他属于王大毛这个群组, 而张小猪相对于王三毛,则只是一个『其余人(others)』而已。
不过,这里有个特殊的人物要来介绍的,那就是『万能的天神』!这个天神具备无限的神力, 因此他能够到达任何他想要去的地方,呵呵!那我的在Linux系统中的身份代号是『 root 』啦!因此要当心喔!那个root但是『万能的天神』喔!
当你在linux下用命令ll 或者ls -la的时候会看到这些字眼,这些字眼表示为不一样用户组的权限:
r:read就是读权限 --数字4表示
w:write就是写权限 --数字2表示
x:excute就是执行权限 --数字1表示
读、写、运行三项权限能够用数字表示,就是r=4,w=2,x=1。
这个我以前也有疑问,为何读是4而写2,执行是1,为何这样安排?(不明白点击查看)
数字设置权限就是 -_ _ _ _ _ _ _ _ _-,分别为
因此,-rw-r--r--用数字表示成644,好比用FileZilla设置权限,
以上的其余用户,不包括root这个super user。
a、进入目录,即cd命令,所须要的权限为执行权限(x)
b、查看目录内的文件,即ls命令,须要的权限为读取权限(r)
c、建立删除目录内的文件夹/文件,即mkdir/touch命名,须要的权限为写如权限(w)
顺便说下目录只影响下一级的,隔代不影响,比如一个目录abc/sub/,若是abc没有w权限,但sub有w权限,则能够在sub中建立文件,固然abc也须要有x权限,不然都进不去更不用说建立了,但只要能进去(能够经过切换root管理员的方法),就不会再受abc的影响,只会受sub的影响。
通常咱们目录会给5(rx)的权限,也就是读取和执行权限,只有图片上传或缓存等目录须要建立的才会给7(rwx)的权限
a、文件打开,能够用cat/vim命令打开,所需权限为读取权限(r)
b、文件修改,能够用cat/vim命令打开并保存,所需权限为写入权限(w)
c、文件执行,能够直接./abc.out等执行,所须要权限为执行权限(x)
这里须要说明的的是php(或者shell等)不管是命令行执行仍是web端执行,名为执行,其实是读取文件到php内核中取解析,因此只要有读取权限(r)就能够。
通常咱们文件会给4(r)权限,也就是读取权限,只有日志、缓存等须要向文件中写入内容的才会给6(rx)权限
之因此上方没有说755,77七、644权限,而仅仅是是说单个的权限,是由于你的网站目录所属的权限不能确保与执行时所用的用户什么关系,也就是说执行时的用户多是owner、多是group也多是other
查看文件权限命令简单 ls -l
修改文件权限命令 chmod -R (权限)(目录) ——修改文件夹内全部的文件和文件夹及子文件夹属性为可写可读可执行
好比 chmod -R 744 zhoulujun/
咱们本身在ssh链接linux操做时必需要有个用户名才能登陆操做,一样php要想处理php相关的文件,也是在某个用户下操做的,而用户是在哪里建立或定义的呢,通常会是在安装php环境时建立的,例如apache,nginx等环境都会默认建立用户和用户组,而php的读取时就用此用户来读取。
因此网站php文件 要设置 754,html文件,设置744便可。
事实上对于用户程序来讲,一个文件可否读/写/执行,根本就不能提早断定。咱们编程时惟一的办法就是“试一试”——不作任何提早判断,直接把操做执行出去,出错了再说。
而此时若是判执行权限,那就很是危险了:php解释器尝试执行,若是成功了,那么执行此文件的行为就必然会发生,不可避免。这就意味着php解释器能够执行任何有执行权的文件,哪怕不是php代码也不要紧。
这样在系统被黑,存在未知文件植入的状况下,咱们就将失去php解释器的最后一层保护,黑客能够经过php解释器,任意执行任何语言编写的一切恶意程序。其后果将是毁灭性的。
因此“调用php命令来执行脚本时只需读取权限”,这个是固然的,也是必须的。
简而言之:任何语言的解释器,都只要求操做系统尝试读取代码文件,获得代码文本。解释器在获得代码文本以后,会自行负责后续的工做,无需操做系统染指。解释器和代码的关系,犹如编辑器和文稿文件的关系。解释器绝对不会委托操做系统去执行任意文件。
java也是这样的。一切解释型语言的解释器都是这样的,没有任何例外——过去没有,如今也没有,未来更不可能有。