我是一个Linux新手,正在尝试理解为什么我在sudo时遇到权限错误。我在CentOS 7上的Virtual Box VM中使用Vagrant。
我正在尝试为elasticsearch设置初始引导密码。我正在尝试使用下面的命令,而不是交互模式,因为我希望能够将该命令添加到ansible play中。
当我以当前用户身份或使用sudo运行命令时
sudo printf "topsecret" | /usr/share/elasticsearch/bin/elasticsearch-keystore add "bootstrap.password"
我收到以下错误:
Enter value for bootstrap.password: ERROR: unable to create temporary keystore at [/etc/elasticsearch/elasticsearch.keystore.tmp], please check filesystem permissions
二进制文件的权限:
-rwxrw-r-x. 1 elasticsearch elasticsearch 1954 Oct 28 20:55 elasticsearch
-rwxrw-r-x. 1 elasticsearch elasticsearch 491 Oct 28 20:45 elasticsearch-certgen
-rwxrw-r-x. 1 elasticsearch elasticsearch 483 Oct 28 20:45 elasticsearch-certutil
-rwxrw-r-x. 1 elasticsearch elasticsearch 982 Oct 28 20:55 elasticsearch-cli
-rwxrw-r-x. 1 elasticsearch elasticsearch 433 Oct 28 20:45 elasticsearch-croneval
-rwxrw-r-x. 1 elasticsearch elasticsearch 2149 Oct 28 20:55 elasticsearch-env
-rwxrw-r-x. 1 elasticsearch elasticsearch 121 Oct 28 20:55 elasticsearch-keystore
-rwxrw-r-x. 1 elasticsearch elasticsearch 440 Oct 28 20:45 elasticsearch-migrate
-rwxrw-r-x. 1 elasticsearch elasticsearch 126 Oct 28 20:55 elasticsearch-node
-rwxrw-r-x. 1 elasticsearch elasticsearch 172 Oct 28 20:55 elasticsearch-plugin
-rwxrw-r-x. 1 elasticsearch elasticsearch 431 Oct 28 20:45 elasticsearch-saml-metadata
-rwxrw-r-x. 1 elasticsearch elasticsearch 438 Oct 28 20:45 elasticsearch-setup-passwords
-rwxrw-r-x. 1 elasticsearch elasticsearch 118 Oct 28 20:55 elasticsearch-shard
-rwxrw-r-x. 1 elasticsearch elasticsearch 427 Oct 28 20:45 elasticsearch-sql-cli
-rwxrw-r-x. 1 elasticsearch elasticsearch 19028621 Oct 28 20:45 elasticsearch-sql-cli-7.4.2.jar
-rwxrw-r-x. 1 elasticsearch elasticsearch 426 Oct 28 20:45 elasticsearch-syskeygen
-rwxrw-r-x. 1 elasticsearch elasticsearch 426 Oct 28 20:45 elasticsearch-users
-rwxrw-r-x. 1 elasticsearch elasticsearch 346 Oct 28 20:45 x-pack-env
-rwxrw-r-x. 1 elasticsearch elasticsearch 354 Oct 28 20:45 x-pack-security-env
-rwxrw-r-x. 1 elasticsearch elasticsearch 353 Oct 28 20:45 x-pack-watcher-env
/etc/elasticsearch目录的权限:
-rwxrw-r-x. 1 root elasticsearch 232 Nov 13 01:03 elasticsearch.keystore
-rwxrw-r-x. 1 root elasticsearch 3110 Nov 12 23:20 elasticsearch.yml
-rwxrw-r-x. 1 root elasticsearch 2915 Nov 12 07:26 elasticsearch.yml.j2
-rwxrw-r-x. 1 root elasticsearch 3691 Nov 12 08:46 jvm.options
-rwxrw-r-x. 1 root elasticsearch 17545 Oct 28 20:55 log4j2.properties
-rwxrw-r-x. 1 root elasticsearch 473 Oct 28 20:55 role_mapping.yml
-rwxrw-r-x. 1 root elasticsearch 197 Oct 28 20:55 roles.yml
-rwxrw-r-x. 1 root elasticsearch 0 Oct 28 20:55 users
-rwxrw-r-x. 1 root elasticsearch 0 Oct 28 20:55 users_roles
我知道如果我跑了
sudo -i
然后运行我的命令,我没有收到错误。
printf "topsecret" | /usr/share/elasticsearch/bin/elasticsearch-keystore add "bootstrap.password"
我想知道为什么sudo -i可以工作而sudo不能工作?是否可以在不使用sudo -i的情况下运行此命令
我遵循了这里的建议,但它并没有改变结果:
无法创建临时密钥库
在此处输入链接描述
如果你需要更多的信息,请让我知道。
发布于 2019-11-13 20:28:55
我能够解决这个问题。
当我在跑步的时候
sudo printf "topsecret" | /usr/share/elasticsearch/bin/elasticsearch-keystore add "bootstrap.password"
printf "topsecret"
使用sudo执行,而/usr/share/elasticsearch/bin/elasticsearch-keystore add "bootstrap.password"
以普通用户身份执行。
我将命令更改为下面的命令,它以sudo的身份执行子shell。
sudo bash -c 'printf "topsecret" | /usr/share/elasticsearch/bin/elasticsearch-keystore add "bootstrap.password"'
https://stackoverflow.com/questions/58829151
复制相似问题