PHP在空间跑Magento权限

<?php
$output 


shell_exec(’find 
. -
type d 
-
exec chmod 755 {} \

find 
. -
type d 
-
exec chmod 755 {} \

chmod o
+

var var/.
htaccess app
/
etc

chmod 
-
R o
+
w media’)
;
echo 


<
pre
>
$output
</
pre
>

;

?>

标签: php, magento, 权限

Linux用户、用户组、文件权限学习笔记

 

linux的权限系统主要是由用户、用户组和权限组成。
用户就是一个个的登录并使用linux的用户。linux内部用UID表示。
用户组就是用户的分组。linux内部用GID表示。
权限分为读、写、执行三种权限。

 

linux的用户信息保存在/etc/passwd文件中,另外,/etc/shadow文件存放的是用户密码相关信息。

/etc/passwd文件格式:
用户名:密码:UID:GID:用户信息:HOME目录路径:用户shell
其中UID为0则是用户root,1~499为系统用户,500以上为普通用户

 

/etc/shadow保存用户密码信息,包括加密后的密码,密码过期时间,密码过期提示天数等。

 

用户组信息保存在/etc/group文件中.
格式如下:
用户组名:组密码:GID:组内帐号(多个帐号用逗号分隔)

 

用户登录后,/etc/passwd文件里的GID为用户的初始用户组。
用户的初始用户组这一事实不会再/etc/group中体现。

 

 

查看当前用户的用户组命令:
[root@local opt]#groups
root bin daemon sys adm disk wheel
输出的信息中,第一个用户组为当前用户的有效用户组(当前用户组)

 

 

切换有效用户组命令:
[root@local opt]#newgrp 用户组名
要离开新的有效用户组,则输入exit回车。

 

 

新建用户命令:
[root@local opt]#useradd 用户名 -g 初始用户组 -G 其他用户组(修改/etc/group) -c 用户说明 -u 指定UID

 

 

建完用户需要为用户设置密码:
[root@local opt]#passwd 用户名

用户要修改自己密码命令:

[root@local opt]#passwd

修改用户信息命令:

[root@local opt]#usermod 参数 用户名
参数:
 -c 说明
 -g 组名 初始用户组
-e 过期日期 格式:YYYY-MM-DD
 -G 组名 其他用户组
 -l 修改用户名
 -L 锁定账号(在/etc/shadow文件中用户对应密码密码串的前面加上两个叹号(!!))
 -U 解锁

删除用户命令:

[root@local opt]#userdel [-r] 用户名
其中,参数-r为删除用户的home目录。
其实,可能在系统其他地方也有该用户文件,要完整删除一个用户和其文件要先找到属于他的文件:
[root@local opt]#find / -user 用户名
然后删除,再运行userdel删除用户。

 

查看可用shell命令:
[root@local opt]#chsh -l 
修改自己的shell命令:
[root@local opt]#chsh -s

 

查看自己或某人UID/GID信息:
[root@local opt]#id [用户名]
返回信息中groups为有效用户组

 

新增用户组命令:
[root@local opt]#groupadd 用户组名

 

修改用户组名命令:
[root@local opt]#groupmod -n 名称

 

删除用户组命令:
[root@local opt]#groupdel 用户组名

设置用户组密码命令:

[root@local opt]#gpasswd 用户组名

 

如果gpasswd加上参数则有其他功能

 

设置用户组管理员命令:
[root@local opt]#gpasswd -A 用户名 用户组名

 

添加某帐号到组命令:
[root@local opt]#gpasswd -M 用户名 用户组名

 

从组中删除某帐号命令:
[root@local opt]#gpasswd -d 用户名 用户组名

 

passwd相关参数操作:
-l 锁用户
-u 解锁用户
-n 天数  密码不可改天数
-x 天数  密码过期天数
-w 天数  警告天数

 

  文件权限知识


先看个实例:
[root@local opt]#ls -al
ls -al 命令是列出目录的所有文件,包括隐藏文件。隐藏文件的文件名第一个字符为'.'
-rw-r--r--  1 root root    81 08-02 14:54 gtkrc-1.2-gnome2
-rw-------  1 root root   189 08-02 14:54 ICEauthority
-rw-------  1 root root    35 08-05 10:02 .lesshst
drwx------  3 root root  4096 08-02 14:54 .metacity
drwxr-xr-x  3 root root  4096 08-02 14:54 nautilus

 

列表的列定义如下:
[权限属性信息] [连接数] [拥有者] [拥有者所属用户组] [大小] [最后修改时间] [文件名]

 

权限属性列表为10个字符:
第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备
2、3、4个字符表示所有者权限,5、6、7个字符表示所有者同组用户权限,8、9、10为其他用户权限
第二个字符表示所有者读权限,如果有权限则为r,没有权限则为-
第三个字符表示所有者写权限,如果有权限则为w,没有权限则为-
第四个字符表示所有者执行权限,如果有权限则为x,没有权限则为-
第五个字符表示所有者同组用户读权限,如果有权限则为r,没有权限则为-
第六个字符表示所有者同组用户写权限,如果有权限则为w,没有权限则为-
第七个字符表示所有者同组用户执行权限,如果有权限则为x,没有权限则为-
第八个字符表示其他非同组读权限,如果有权限则为r,没有权限则为-
第九个字符表示其他非同组写权限,如果有权限则为w,没有权限则为-
第十个字符表示其他非同组执行权限,如果有权限则为x,没有权限则为-

 

修改文件所属组命令:
[root@local opt]#chgrp [-R] 组名 文件名
其中-R为递归设置

 

修改文件的所有者和组命令:
[root@local opt]#chown [-R] 用户[:用户组] 文件名

 

修改文件访问权限命令:
[root@local opt]#chmod [-R] 0777 文件名

Magento 移站(手工架站)步骤

一些情况下,我们不想用安装方式来架设 Magento 网站,而想手动架站。

步骤如下:

1、建立数据库。要点数据库要建立 UTF8格式连接串为utf8_general_ci。
2、导入数据库。要点:要记得关闭外键检查,或者使用导入SQL文件方式。set FOREIGN_KEY_CHECKS=0;
3、修改数据配置文件,为你的域名。表名:core_config_data
4、修改数据配置文件为你的网站环境。文件名:app/etc/local.xml。
5、如果你是商店配置,记得修改入口文件,即:index.php。

要点:$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'XX';

这里填入你的store view 的code 。

6、清空缓存要点:删除 var/cache var/session var/tmp 几个文件夹。
7、目录权限。 几个目录必须要有写权限。 chmod o+w var/ media/ app/etc/ -R 及 chmod g+w var/ media/ app/etc -R
 

基于RBAC的权限设计模型

1  RBAC 介绍

RBAC 模型作为目前最为广泛接受的权限模型

NIST (The National Institute of Standards and Technology,美国国家标准技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)[1]。RBAC0模型如图1所示。

clip_image001.jpg 
图表 1 RBAC 0 模型

l          RBAC0 定义了能构成一个RBAC控制系统的最小的元素集合

在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展

l          RBAC1 引入角色间的继承关系

角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的继承。而受限继承关系则进一步要求角色继承关系是一个树结构。

l          RBAC2 模型中添加了责任分离关系

RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型用户的访问许可。

l          RBAC3 包含了RBAC1和RBAC2

既提供了角色间的继承关系,又提供了责任分离关系

建立角色定义表。定出当前系统中角色。

因为有继承的问题,所以角色体现出的是一个树形结构。

test.bmp

2        权限设计:

 

配置资源以及资源的操作 : 这里资源可以定义为一个通用的资源模型。提供通用的资源统一接口。

 

 

 

 

 

数据库 ER 图:

clip_image002.gif

 

关系图:

 

clip_image003.gif

 

未命名.bmp

 

3        分析:

 

    根据以上的关系图和ER图可以看出。整个权限可以抽象为五个对象组成。

OrgBean : 用于描述org模型

Role : 用于描述角色。

Permission : 用于描述权限

Resource : 用于描述资源

Operation : 用于描述操作。

 

其中Permission中有Resource , Operation 的聚合,资源和操作组成权限

Role 和 Permission 都有自包含。因为设计到权限的继承。

资源Resource 也可能出现一颗树形结构,那资源也要有自包含。

 

思想 :

权限系统的核心由以下三部分构成: 1. 创造权限, 2. 分配权限, 3. 使用权限,然后,系统各部分的主要参与者对照如下: 1. 创造权限 - Creator 创造, 2. 分配权限 - Administrator 分配, 3. 使用权限 - User :

1. Creator 创造 Privilege , Creator 在设计和实现系统时会划分,一个子系统或称为模块应该有哪些权限。这里完成的是 Privilege 与 Resource 的对象声明,并没有真正将 Privilege 与具体 Resource 实例联系在一起,形成 Operator 。

2. Administrator 指定 Privilege 与 Resource Instance 的关联 。在这一步, 权限真正与资源实例联系到了一起, 产生了 Operator ( Privilege Instance )。 Administrator 利用 Operator 这个基本元素,来创造他理想中的权限模型。如,创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等等 ... 这些操作都是由 Administrator 来完成的。

3. User 使用 Administrator 分配给的权限使用各个子系统。 Administrator 是用户,在他的心目中有一个比较适合他管理和维护的权限模型。于是,程序员只要回答一个问题,就是什么权限可以访问什么资源,也就是前面说的 Operator 。程序员提供 Operator 就意味着给系统穿上了盔甲。 Administrator 就可以按照他的意愿来建立他所希望权限框架 可以自行增加,删除,管理 Resource 和 Privilege 之间关系。可以自行设定用户 User 和角色 Role 的对应关系。 ( 如果将 Creator 看作是 Basic 的发明者, Administrator 就是 Basic 的使用者,他可以做一些脚本式的编程 ) Operator 是这个系统中最关键的部分,它是一个纽带,一个系在 Programmer , Administrator , User 之间的纽带。

 

4        权限API

   getPermissionByOrgGuid(String orgGuid )

      通过传入一个org的Guid , 拿到当前这个org对象都具有那些访问权限

 getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid)

    通过传入一个org的Guid 和 一个资源的Guid , 返回改Org对当前这个资源的访问权限

 

getPermissionByResourceGuid(String resource)

    通过传入一个资源的Guid , 得到当前资源下都有那些权限定义。

 

havingHeritPermission(String orgGuid , String resouceGuid) : Boolean

    传入一个orgGuid, 资源GUID ,查看改OrgGuid下对资源是否有向下继承的权限。这里继承是资源的继承。即对父栏目权限,可以继承下去对父栏目下的子栏目同样有权限

 

havingPermission(String orgGuid , String resourceGuid) : Boolean

    判断某Org对某一资源是否用权限

 

以上是粗粒度的权限API 。 以下为细粒度的权限

 

getOperationByPermission(String permissionGuid)

    通过permission 的Guid 得到该permission 的所有有效操作。

 

getOperationByGuid(String permissionGuid , String resourceGuid)

    通过permision的Guid , 资源的Guid 得到该资源下所有的有效操作。

 

screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid)

    通过permission , resource , org的Guid 得到改Org对这一资源的有效操作。

 

hasOperation(String operationGuid) : boolean

    通过传入的operationGuid 返回是否具有操作权限

 

5        权限的实现:

1 .表单式认证,这是常用的,但用户到达一个不被授权访问的资源时, Web 容器就发

出一个 html 页面,要求输入用户名" title="用户名" >用户名和密码

2 .用 Filter 防止用户访问一些未被授权的资源, Filter 会截取所有 Request/Response ,

然后放置一个验证通过的标识在用户的 Session 中,然后 Filter 每次依靠这个标识来决定是否放行 Response 。

这个模式分为:

Gatekeeper :采取 Filter 或统一 Servlet 的方式

Authenticator : 在 Web 中使用 JAAS 自己来实现。

 

Filter 拦截只是拦截该用户是否有访问这个页面,或这一资源权限。真正做到显示后拦截是在应用程序内部去做。

 

做显示拦截提供API , 标签这两种方式

标签: IT, 权限, 用户

*** 08 | 09 . 10 ***

 

*** 08 | 09 . 10 ***


小屋    发表于2009年10月01日 23:47 阅读(29) 评论(1)

分类: 个人日记 权限: 公开

 

10月份

09年的十月份,10月1

却也又一年了。

去年的那个10月

就永远消失在头发长长几次,鞋子换三双,家回两次的过程中吧。

标签: 权限, 日记, 过程

PHP安全基础

1、你的程序安全吗?
  1)有没有安全意识,平常编码习惯
  2)是否有被攻击或者注入

结论:安全是永恒的话题,没有绝对的安全,需要我们在平常的工作中养成良好的编码习惯和安全意识,需要不断的吸收最新的安全知识,并作相应的防范措施。

   就PHP来看,主要碰到的有几大类:
     1)服务器安全配置和PHP自身问题
     2)SQL注入
     3)XSS跨站脚本攻击
     4)编码安全意识

2、安全问题都是可以防范的,但是很难覆盖所有的方面,只要在平常编码中注意安全问题,才能较少甚至基本杜绝安全问题
2.1 服务器安全配置和PHP自身问题
    1)服务器自身漏洞和运行权限、共享权限(/tem/sess..)等
    2)目录浏览
    3)文件浏览、执行权限(gif89a)
    4)Cookie/Session暴露与会话劫持
    5)PHP的Register Globals
    6)系统函数/eval等和用户提交的数据
    7)数据过滤与输出(引号问题…)
    8)错误报告(生产环境一定要记得关闭)
    9)其它(文件包含-路径、来源判断、…)
2.2 SQL注入
    程序中最经常遇到的问题:
    1)“靠山靠”不住,摆脱依赖引号处理或魔术引号(magic_quotes_gpc)
    2)Mysql系统函数问题(其它的DBMS类似)
    3)避免在查询语句中使用“不可靠”数据
    4)数据类型预先处理
    5)使用mysql_real_escape_string或mysql_escape_string
2.3 XSS跨站脚本攻击
   跨站脚本攻击主要有2类:
    1)HTML/JS
    2)CSS(expression) – CSS中的Javascript
    攻击分类:
    1)来自内部的攻击,利用自身
    2)来自外部的攻击,外部JS、iframe等

   跨站攻击的危害其实也不小,简单的列一下它能做什么:
       得到web shell权限、帐号等隐私数据、挂马、弹广告等
3、如何防范?
    1)保护账号,避免弱口令(基本)
    2)服务器和PHP安全配置,并且要保持更新
    3)养成良好的安全编码意识,培养安全意识
    4)不要为了方便或者省时间留下安全隐患
    5)任何输入数据都是不可靠的,都需要经过处理
    6)输出页面时需要考虑是否有影响
    7)重要数据不要保存在客户端
    8)避免理所当然的精神,习惯误区
    9)经常检查、测试你的系统或者程序

   安全是永恒的话题,也是程序员必须面对的重要问题之一。
   此篇介绍的不是安全的全部,唯入门而已,主要是为大家开启安全之门。