我们有一个dfs服务器,其中存储了自动运行的结果。 由于某些奇怪的原因,相同进程和同一用户创建的不同文件夹的权限已经开始变化。
使用Files mkdir创建目录。以确保我尝试使用setfacl设置权限的相同权限。
当我从dfs服务器目录上的unix机器运行时,setfacl工作正常 但是我需要在Windows OS上运行java进程。
来自cygwin,setfacl也可以正常工作。
然而,当通过Java运行时,它无法设置权限
这是从cygwin和java进程运行时的区别
CygWin的
setfacl.exe --set user::---,group::rwx,other::--x acl.txt
output:-----rwx--x 1 user group 0 Nov 18 21:43 acl.txt
correct
爪哇
String commandLine ="C:/tools/cygwin/bin/setfacl.exe --set user::--
-,group::rwx,other::--x" +" " + dir.getAbsolutePath();
List<String> commandList = Arrays.asList(commandLine.split(" "));
ProcessBuilder processBuilderCommand = new ProcessBuilder(commandList);
Process process = processBuilderCommand.start();
process.waitFor();
output:-
drwxrwx---+ 1 useradmin group 0 Nov 18 21:52 acl
incorrect
请注意,用户之间的差异已更改为管理员,因此不确定是否存在差异原因
问题是java没有设置我尝试使用setfacl从processbuilder设置的权限
getfacl对java和shell有不同的输出。
java: - (不正确)
$ getfacl acl
# file: acl
# owner: Administrators
# group: group
user::rwx
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
group:Users:r-x
mask:rwx
other:---
default:user::rwx
default:group::---
default:group:Authenticated Users:rwx
default:group:SYSTEM:rwx
default:group:Users:r-x
default:mask:rwx
default:other:---
Cygwin的
$ getfacl acl
# file: acl
# owner: Administrators
# group: group
user::---
group::rwx
other:--x