// 获取访问功能
*String url=request.getRequestPath();*
// 进行权限验证
*User user=request.getSession().get("user");*
*boolean permit=PrivilegeManager.permit( user, url );*
*if( permit ) {*
*chain.doFilter( request, response );*
*} else {*
// 可以转到提示界面
}
ls -al /usr/bin/passwd
-rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd
chown [OPTION]... [OWNER][:[GROUP]] FILE...
dumpe2fs -h /dev/sda3
# dumpe2fs 命令是查询指定分区详细文件系统信息的命令选项
-h 仅显示超级块中的信息,而不显示磁盘块组的详细信息。
visudo
# 实际修改的是 /etc/sudoers 文件
... 省略部分代码 ...
	
	/**
	 * 数据范围过滤
	 *
	 * @param joinPoint 切点
	 * @param user      用户
	 * @param userAlias 别名
	 */
	public static void dataScopeFilter(JoinPoint joinPoint, SysUser user, String deptAlias, String userAlias, boolean isUser) {
		StringBuilder sqlString = new StringBuilder();

		// 将 "." 提取出,不写别名为单表查询,写别名为多表查询
		deptAlias = StrUtil.isNotBlank(deptAlias) ? deptAlias + "." : "";
		userAlias = StrUtil.isNotBlank(userAlias) ? userAlias + "." : "";

		for (SysRole role : user.getRoles()) {
			String dataScope = role.getDataScope();
			// 全部数据权限
			if (DATA_SCOPE_ALL.equals(dataScope)) {
				sqlString = new StringBuilder();
				break;
			} 
			// 自定数据权限
			else if (DATA_SCOPE_CUSTOM.equals(dataScope)) {
				sqlString.append(StrUtil.format(
					" OR {}dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = {} ) ",
					deptAlias, role.getRoleId()));
			} 
			// 部门数据权限
			else if (DATA_SCOPE_DEPT.equals(dataScope)) {
				sqlString.append(StrUtil.format(" OR {}dept_id = {} ",
					deptAlias, user.getDeptId()));
			} 
			// 部门及以下数据权限
			else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {
				sqlString.append(StrUtil.format(
					" OR {}dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )",
					deptAlias, user.getDeptId(), user.getDeptId()));
			} 
			// 仅本人数据权限
			else if (DATA_SCOPE_SELF.equals(dataScope)) {
				if (isUser) {
					sqlString.append(StrUtil.format(" OR {}user_id = {} ",
						userAlias, user.getUserId()));
				} else {
					// 数据权限为仅本人且没有userAlias别名不查询任何数据
					sqlString.append(" OR 1=0 ");
				}
			}
		}

		if (StrUtil.isNotBlank(sqlString.toString())) {
			putDataScope(joinPoint, sqlString.substring(4));
		}
	}
	
	... 省略部分代码 ...

	private static void putDataScope(JoinPoint joinPoint, String sql) {
		// 获得切入点的参数
		Object params = joinPoint.getArgs()[0];
		if (Validator.isNotNull(params)) {
			// 判断参数是否属于 BaseEntity 或者其子类
			if (params instanceof BaseEntity) {
				BaseEntity baseEntity = (BaseEntity) params;
				// 将 SQL 放入 params 字段中
				baseEntity.getParams().put(DATA_SCOPE, sql);
			} 
			// 参数没有继承 BaseEntity
			else {
				try {
					// 反射获取参数中的 params 字段 getter 方法
					Method getParams = params.getClass().getDeclaredMethod("getParams", null);
					Map<String, Object> invoke = (Map<String, Object>) getParams.invoke(params, null);
					// 将 SQL 放入 params 字段中
					invoke.put(DATA_SCOPE, sql);
				} catch (Exception e) {
					// 方法未找到 不处理
				}
			}
		}
	}
[root@node5 ~]# ll -h *.txt
-rw-r--r-- 1 root root  115 Oct 12 10:03 aaa.txt
-rw-r--r-- 1 root root  27K Oct 10 16:27 ceshi.txt
-rw-r--r-- 1 root root 1.2K Apr  3  2020 idea快捷键.txt
-rw-r--r-- 1 root root   16 Oct 10 16:35 test2.txt
-rw-r--r-- 1 root root   12 Oct 10 17:30 test.txt
-rw-r--r-- 1 root root   83 Oct 12 09:59 测试乱码文件.txt

#-rw-r--r--即是文件权限的描述
未过滤之前sql:
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email
    , u.phonenumber, u.password, u.sex, u.avatar, u.salt
    , u.status, u.del_flag, u.login_ip, u.login_date, u.create_by
    , u.create_time, u.remark, d.dept_name
from sys_user u
    left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
      a : 对于文件,只能在文件中增加数据,但是不能删除也不能修改数 
              据。(不能用vim来添加或删除数据,只能用echo,如:echo   内
              容>>文件名)
               对于目录,只允许在目录中建立和修改文件,但是不允许删除。
            (相当于把已经有的数据锁起来)
chmod 4755 文件名
或者
chmod u+s 文件名
<dependencies>
<dependency>
<groupId>top.it6666</groupId>
<artifactId>common_utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Spring Security依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
</dependencies>
/**
 * @author BNTang
 */
@SpringBootApplication()
@ComponentScan(basePackages&nbsp;=&nbsp;{&quot;top.it6666&quot;})
@MapperScan(&quot;top.it6666.service_auth.mapper&quot;)
public&nbsp;class&nbsp;AuthApplication&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SpringApplication.run(AuthApplication.class,&nbsp;args);
&nbsp;&nbsp;&nbsp;&nbsp;}
}
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
public class Student {
    public String name; // public变量
    public void study() { // public方法
        System.out.println("学生正在学习");
    }
}

public class Main {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "Tom";
        student.study();
    }
}
<property>
    <name>hbase.security.authorization</name>
    <value>true</value>
</property>
<property>
    <name>hbase.coprocessor.master.classes</name>
    <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
    <name>hbase.coprocessor.region.classes</name>
 <value>org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</value>
</property>
<property>
  	<name>hbase.coprocessor.regionserver.classes</name>
  	<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
1、本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。
2、如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,
   微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,
   保存时,格式应选择UTF-8 NO BOM。
3、权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限
   设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。
   提示:目录的访问权限既可以分配给组,也可以分配指定用户。

现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r
 D:/SVN" displayname= "SVNService" depend= Tcpip start= auto

项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以
有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3        (项目一,子目录略)
|---svntest        (项目二,子目录略)
|---authz        (共享的权限配置文件)
|---passwd        (共享的密码文件)

#=====配置开始=====
每个资源库conf里svnserve.conf文件
[general]
anon-access = none
auth-access = write
password-db = D:/SVN/passwd
authz-db = D:/SVN/authz
[sasl]



共享的passwd文件
[users]
sgl=sglaaa=aaa12aa
bbb=bbb123


共享的authz文件
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss

#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r                #所有登录用户默认权限为只读
@group_admin = rw   #可以分配给组,该组有读写权限
wws = rw            #也可以像这样分配给指定用户

#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/]            #设置对jsyxv3版本库中,所有项目的访问权限
* =                 #未授权用户没有任何权限
@group_user1 = rw

[jsyxv3:/程序管理]    #设置对jsyxv3版本库中程序管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user2 = rw

[jsyxv3:/项目管理]    #设置对jsyxv3版本库中项目管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user3 = rw

[svntest:/]            #设置对svntest版本库中,所有项目的访问权限
* =                 #未授权用户没有任何权限
@group_user1 = rw

[svntest:/程序管理]    #设置对svntest版本库中程序管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw

[svntest:/项目管理]    #设置对svntest版本库中项目管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====

4、最后重要提示:
    4.1、启动的服务与客户端检出的关系:
      4.1.1、如果启动的服务指向一个具体的版本库,如红字部分描述:
        sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe 
       --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip
        start= auto ,则客户端检出的地址应为:svn://192.168.0.1/
     4.1.2、如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
        sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe 
       --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto,
       则客户端检出的地址应为:svn://192.168.0.1/svntest
    4.2、如果权限管理完成时,对各版本库还未完成导入工作,请记得使用对SVN目录有读写权限的
        用户身份进行操作,否则有可能会提示操作失败(因为权限不够)。
  • 1
  • 2
  • 3
  • 4
  • 5