我不是系统工程师(我更像是软件开发人员)。我在 Linux Centos 系统上尝试部署应用程序时遇到以下问题。
作为第一个操作,我需要安装 Java 并执行一些初步检查,安装一些工具。在此初步阶段,我执行了以下命令:
sudo yum install redhat-lsb-core
我得到了一个类似这样的错误:
USERNAME is not in the sudoers file. This incident will be reported
所以我怀疑这个用户不是root用户或者不允许进入/etc/sudoers文件。是吗?我可以检查什么来确认这个嫌疑犯?
使用此用户我还尝试执行以下操作:
cat /etc/sudoers
我得到了:
cat: /etc/sudoers: Permission denied
演出:
grep 'x:0:' /etc/passwd
我获得了:
[email protected] [~]# grep 'x:0:' /etc/passwd
root:x:0:0:root:/root:/bin/bash
因此我认为只有一个 root 用户,而不是我正在使用的用户。
那么,您是否认为唯一的解决方案是要求处理该服务器的人员授予我执行sudo
命令的权限?
答案1
如果您不在文件中/etc/sudoers
,那么您就无法以 身份运行命令sudo
。
也就是说,如果您是软件开发人员但不在文件中/etc/sudoers
,只需让服务器管理员安装您需要安装的软件包。
你的问题实际上是XY问题;您似乎不需要sudo
像您想安装的那样拥有访问权限redhat-lsb-core
。
root
了解了这一点,如果您只要求服务器上的人员运行以下命令可能会更好:
yum install redhat-lsb-core
正如你在问题中明确指出的那样:
“我不是系统工程师(我更像是软件开发人员)。”
root
除非你知道你sudo
在服务器上做什么,否则确实需要访问sudo
权限,那么最好让知道如何处理root
该服务器上的进程的人来处理这些事情。
但至于sudo
访问权限的具体细节,root
用户需要将您指定sudoer
为/etc/sudoers
。
无需执行任何其他操作。基本用户/etc/sudoers
默认不包含在内,原因显而易见:如果每个人都包含在文件中/etc/sudoers
,那么他们都只是相当于,root
那么有什么好处呢?
答案2
系统所有者(有权访问 root 的人)必须授予您以 root 身份执行任务的权限。sudo
是一个 root 委派工具。root 可以将特定任务委派给用户,或向用户(或组)授予一般 root 访问权限。
如果普通用户能够授予自己 root 权限,那么这将是一个巨大的安全问题。这就是为什么/etc/sudoers
只有 root 才能编辑的原因。哦,使用visudo
而不是直接编辑该文件。