当我在Centos 7 Linux终端中以根用户的身份运行以下命令时,它会产生57行输出:
journalctl --output=json-pretty UNIT=firewalld.service
那么,如何更改下面的代码,以成功地从Java调用它,而不必将密码留在文件中?
这是我的尝试。当我执行以下代码时,控制台只输出exit: 1
String s;
Process p;
try {
p = Runtime.getRuntime().exec("journalctl --output=json-pretty UNIT=firewalld.service");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {}
编辑
当我添加以下内容时:
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = br2.readLine()) != null)
System.out.println("error line: " + s);
生成以下输出:
error line: No journal files were found.
error line: Failed to get realtime timestamp: Cannot assign requested address
问题与权限有关吗?当我从Linux终端以root
的形式运行root
时,我得到了57行输出。但是当我以普通用户的身份运行journalctl --output=json-pretty UNIT=firewalld.service
时,终端告诉我没有找到任何文件。我不想把我的根密码放在Java代码中。
是否有其他方法从Java调用journalctl
,而不必将系统根密码保留在文件中?
发布于 2014-11-27 21:53:11
虽然journalctl
的手册页告诉您,向systemd-journal
添加用户应该允许他们访问所有日志,但CentOS 7上不起作用。
chmod +s /usr/bin/journalctl
,但这让每个人都可以访问日志,这可能不是你想要的,。
正如@RealSkeptic所指出的,用于man
的systemd-journald.service
页面表明,可以赋予组更多的访问权限来阅读日志(并且声明向systemd-journal
添加用户应该足够了)。结合你能做的那些信息
sudo setfacl -Rnm g:systemd-journal:rx,d:g:systemd-journal:rx /run/log/journal/
在此之后,按照手册页将用户添加到systemd-journal
组就足够允许访问日志了:
sudo usermod -a -G systemd-journal your_user_name
发布于 2014-11-27 21:13:57
可以使用systemd-journal
将(普通)用户添加到组usermod -a -G systemd-journal <username>
中。退出并登录到它以使更改生效。这使用户可以访问系统日志文件,而不授予它完全的根权限。
对于不同的操作系统设置,组可能有所不同。通过使用ls -l /var/log/journal/
或ls -l /run/systemd/journal/
(如果不存在/var/log/journal/
),您可以简单地查看日志文件所属的组。
我在Centos LiveCD中尝试过这一点,文件所属的组是root
。因此,您可以将用户添加到组root
中,这与授予它完整的根权限不一样。
尽管如此,我认为一个更好的方法是在日志文件上设置ACL,以允许特定的组访问它们,因为root
组可能有太多的访问权限。systemd-journald.service
手册给出了这个示例ACL修改命令,该命令授予wheel
和adm
对日志的读访问权限。
setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/
https://stackoverflow.com/questions/27178431
复制相似问题