Spring aop 小实例demo

Hadoop从2.4.0版本开始支持hdfs的ACL,在CDH5.0当中也集成了该特性,下面对其进行一些测试:

unnamed user (file owner) 文件的拥有者
unnamed group (file group) 文件的所属组
named user 除了文件的拥有者和拥有组之外,的其它用户
named group 除了文件的拥有者和拥有组之外,的其它用户
mask  权限掩码,用于过滤named user和named
group的权限

一、启用ACL:

<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>

二、测试ACL:

[[email protected] ~]$ groups
hadoop

创建目录并上传文件:

[[email protected] ~]$ hadoop fs -mkdir /input/acl
[[email protected] hadoop]$ hadoop fs -put conf/yarn-site.xml /input/acl
[[email protected] hadoop]$ hadoop fs -ls /input/acl
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml
[[email protected] ~]$ hadoop fs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
other::r-x

同一组的成员有读权限,没有写权限:

[[email protected] ~]$ groups
hadoop
[[email protected] ~]$ hadoop fs -ls /input/acl
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml
[[email protected] hadoop]$ hadoop fs -put conf/capacity-scheduler.xml /input/acl
put: Permission denied: user=mapred, access=WRITE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x

设置mapred用户只读:

[[email protected] ~]$ hdfs dfs -setfacl -m user:mapred:r-- /input/acl
[[email protected] ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
user:mapred:r--
group::r-x
mask::r-x
other::r-x

执行权限被拒绝:

[[email protected] ~]$ logout
[[email protected] ~]# su - mapred
[[email protected] ~]$ hadoop fs -ls /input/acl
ls: Permission denied: user=mapred, access=READ_EXECUTE, inode="/input/acl":hadoop:supergroup:drwxr-xr-x:user:mapred:r--,group::r-x

移除acl:

[[email protected] ~]$ hdfs dfs -setfacl -x user:mapred /input/acl
[[email protected] ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
mask::r-x
other::r-x

重新拥有执行权限,因为mapred是hadoop用户组中的:

[[email protected] ~]$ hadoop fs -ls /input/acl/yarn-site.xml
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml

定义在owner、other里的权限一直都是有效的,其它权限可能用效或者被隐蔽。

named user与named group的值是否生效,还要看其值与mask的“与”值,即mask也要有该权限,才能生效。

mask是用于过滤named user与named group的权限的,可以通过chmod改变。

如:在给同组的其它用户,其它组的用户或组添加acl时,如果给的权限比当前mask大,则mask会随之更新:

[[email protected] ~]$ hdfs dfs -getfacl /input/acl        【初始权限】
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x
mask::r-x
other::r-x
[[email protected] ~]$ hdfs dfs -setfacl -m user:mapred:rwx /input/acl
[[email protected] ~]$ hdfs dfs -getfacl /input/acl            【mapred用户拥有rwx权限,但mask为r-x,则mask自动改为rwx】
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
user:mapred:rwx
group::r-x
mask::rwx
other::r-x

但所属组的用户权限不受影响:

[[email protected] ~]$ hadoop fs -chmod g-x /input/acl        【取消同一用户组的可执行权限,并更新mask的值】
[[email protected] ~]$ hdfs dfs -getfacl /input/acl
# file: /input/acl
# owner: hadoop
# group: supergroup
user::rwx
group::r-x	#effective:r--
group:apache:rwx	#effective:rw-
mask::rw-
other::r-x
[[email protected] ~]$ logout
[[email protected] ~]# su - mapred
[[email protected] ~]$ hadoop fs -ls /input/acl                【上一步取消同一用户组的可执行权限,但没有生效,因为mapred和hadoop属于同一组】
Found 1 items
-rw-r--r-- 3 hadoop supergroup 5919 2014-04-25 15:08 /input/acl/yarn-site.xml

Spring aop 小实例demo,码迷,mamicode.com

时间: 2024-10-27 10:13:52

Spring aop 小实例demo的相关文章

Spring AOP应用实例demo

AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善.OOP引入封装.继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合. OOP的问题,AOP的补充 当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力.也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系.例如日志功能.日志代码往往水平地散布在所有对象层次中,而与它所散布到的对

Spring aop 小例子demo

由于最近的服务项目提供接口有一个需求,所有操作都必须检查操作的服务可用,所以感觉Aop特别适合实施.完成学习的小例子. 关于spring-Aop原理:http://m.oschina.net/blog/174838这篇文章写的非常好. 个人觉着可能上线的时候配置文件更方便一下.所以样例主要是配置文件方式 Demo文件下载地址: http://download.csdn.net/detail/ruishenh/7261121 Spring配置文件 /idle-service-impl/src/ma

[Spring] AOP, Aspect实例解析

最近要用到切面来统一处理日志记录,写了个小实例练了练手: 具体实现类: public interface PersonServer { public void save(String name); public void update(String name, Integer id); public String getPersonName(Integer id); } import org.springframework.stereotype.Component; @Component("pe

SSH框架系列:Spring AOP应用记录日志Demo

分类: [java]2013-12-10 18:53 724人阅读 评论(0) 收藏 举报 1.简介 Spring 中的AOP为Aspect Oriented Programming的缩写,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.以下是Spring AOP的小例子 源代码:https://github.com/nuptboyzhb/SpringAOPDemo 2.例子简介 2.1切面aspect:Logging.java [java] view plainc

Spring AOP通知实例 – Advice

Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能. 在Spring AOP中,有 4 种类型通知(advices)的支持: 通知(Advice)之前 - 该方法执行前运行 通知(Advice)返回之后 – 运行后,该方法返回一个结果 通知(Advice)抛出之后 – 运行方法抛出异常后, 环绕通知 – 环绕方法执行运行,结合以上这三

spring aop 的一个demo(未完,待完善)

假设我们有这样的一个场景 : 对于一个类的众多方法,有些方法需要从缓存读取数据,有些则需要直接从数据库读取数据.怎样实现呢? 实现方案有多种.下面我说下常见的几种实现方案 : 1.直接采用spring xml.或者  annotation AOP完成.但个人认为这种方案似乎有点不是很完美. 原因 :  ①.如果只有针对这个类做切面拦截,这种方案是没有问题的,只需对需要走DB(or 缓存,两者择一)的方法配置切面. ②.那如果是多个类呢?统一做一个切面,对指定方法拦截,如selectXXX.但,还

Spring Aop编程的demo

1: 新建一个普通的bean :Role 属性 Id,name,添加无参构造,setter getter方法 2:新建一个接口:RoleService,随便写一个方法printRole 3:新建一个类RoleServiceImpl,实现RoleService接口,重写printRole方法 注意 @Component 注解别忘了 4:定义切面类 RoleAspect 添加四个通知方法 注意: 添加@Aspect注解 execution中的参数一定要写对,例:"execution(* aop.se

Spring AOP编程实例

整个类包如下: 一.具体各个类 1.1前置通知类 package com.yuan.aop; import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; public class MymethodBeforeAdvice implements MethodBeforeAdvice { @Override public void before(Method arg0, Object[] ar

spring AOP 环绕增强小Demo

前面写了一个前置增强,后置增强的小demo,前置增强即在方法调用前对方法增强:后置增强即在方法调用后对方法增强.环绕增强允许在目标类方法调用前后织入横切逻辑,它综合了前置.后置增强两者的功能. 还继续沿用之前的代码,这里介绍环绕增强的实现类和测试类. 环绕增强类 GreetingAroundAdvice.java package com.paic.zhangqi.spring.aop; import org.aopalliance.intercept.MethodInterceptor; imp