授予用户超级用户权限

授予用户超级用户权限

我正在尝试授予特定用户超级用户权限,特别是 root 具有的全局写入权限。相关用户必须拥有这些权限,而无需使用sudo。这是运行服务的用户,该服务试图将文件写入它没有写入权限的目录。我不知道那是什么目录,或者我只会根据需要更改其权限。我尝试按照此处的说明操作,但没有成功:在 Linux 中添加具有 root 访问权限的新用户。所讨论的用户是elasticsearch。我在 中有以下几行/etc/sudoers

root    ALL=(ALL:ALL) ALL
elasticsearch   ALL=(ALL:ALL) ALL # Attempt to give elasticsearch the same permissions as root

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

这是我的证据,我elasticsearch是该组的成员sudo,但仍然没有写权限/

[16:22:32][root@pre-staging:/]$ groups elasticsearch
elasticsearch : elasticsearch sudo
[16:22:44][root@pre-staging:/]$ sudo -u elasticsearch touch foo
touch: cannot touch `foo': Permission denied

我为什么elasticsearch没有我需要的写权限?

答案1

我不明白为什么 elasticsearch 没有我需要的写权限?

您在 sudoers 文件中写入的内容允许您在作为 elasticsearch 用户时获得 root 权限。但是,您在测试时所做的是从 root 用户更改为 elasticsearch 用户。

你做了什么:

root@pre-staging: sudo -u elasticsearch touch foo

你应该做的:

elasticsearch@pre-staging$ sudo -u root touch foo

... 但实际上,你不应该做任何这些事情。你真正应该做的是回答有关文件被触碰的问题。

我不知道那是什么目录,否则我只会根据需要更改其权限。

也有办法做到这一点,也许你应该这么做。查看斯特拉斯命令并使用它来跟踪所有打开的调用(strace -e trace=open

答案2

使用户帐户成为 root 的一个快速而丑陋的方法是编辑密码文件 /etc/passwd并将用户 ID 更改为 0。用户 ID 是第 3 个条目:

root:x:0:0:root:/root:/bin/bash

这通常不被推荐,但似乎使用正常的“Sudo”方法效果并不好。

编辑:还可以将用户帐户添加到根组,该组仅适用于文件访问。

编辑 /etc/passwrd 时也应小心,因为输入错误可能会造成灾难性的后果。

相关内容