hdfs管理员指南指出创建文件或目录时,其所有者是客户端进程的用户标识,其组是父目录的组(bsd规则)这条规则有例外吗?以用户'clienta'的身份运行进程有没有办法创建一个拥有不同所有者的文件?我和你一起跑步 hadoop.security.authentication=simple . 看来我可以打电话了 setOwner 事实上,这是一个非常有效的回退解决方案。
hadoop.security.authentication=simple
setOwner
9bfwbjaz1#
看起来正常吗??
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException { // TODO Auto-generated method stub Configuration conf = new Configuration(); conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/core-site.xml")); conf.addResource(new Path("/hadoop/projects/hadoop-1.0.4/conf/hdfs-site.xml")); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter the directory URI..."); String dirPath = br.readLine(); URI uri = new URI(dirPath); System.out.println("Enter the user..."); String user = br.readLine(); FileSystem fs = FileSystem.get(uri, conf, user); fs.mkdirs(new Path(uri.toString()), FsPermission.getDefault()); FSDataOutputStream fsDataOutputStream = fs.create(new Path(uri.toString()+"/file.txt")); fsDataOutputStream.writeBytes("This is a demo file..!!!!"); }
mzillmmw2#
不确定这是否是您想要的,但是您可以从当前用户帐户的脚本/进程中执行以下操作,以在hdfs中使用其他用户帐户创建一个文件。但是,如果您的其他用户有密码,您需要手动输入密码或找到自己的方法来执行相同的操作。例如
su - otherUser -c 'hadoop fs -touchz myfile'
如果这不是您要找的,那么,是的,设置所有者是使用其他用户创建文件后的唯一方法。附录:如果您希望hdfs访问具有严格的安全性,比如用户隔离,以便只有目录/文件的真正所有者才能访问它,那么您可能可以将hadoop配置为使用kerberos安全性。看一下这些链接(请看第一部分的子任务):https://issues.apache.org/jira/browse/hadoop-4487而且,http://hadoop.apache.org/docs/current/hadoop-auth/configuration.html希望这有帮助。谢谢
2条答案
按热度按时间9bfwbjaz1#
看起来正常吗??
mzillmmw2#
不确定这是否是您想要的,但是您可以从当前用户帐户的脚本/进程中执行以下操作,以在hdfs中使用其他用户帐户创建一个文件。但是,如果您的其他用户有密码,您需要手动输入密码或找到自己的方法来执行相同的操作。
例如
如果这不是您要找的,那么,是的,设置所有者是使用其他用户创建文件后的唯一方法。
附录:如果您希望hdfs访问具有严格的安全性,比如用户隔离,以便只有目录/文件的真正所有者才能访问它,那么您可能可以将hadoop配置为使用kerberos安全性。
看一下这些链接(请看第一部分的子任务):
https://issues.apache.org/jira/browse/hadoop-4487
而且,
http://hadoop.apache.org/docs/current/hadoop-auth/configuration.html
希望这有帮助。
谢谢