(在 Centos 上通过 Docker)
我知道我可以使用visudo. 有没有办法直接从命令行将用户添加到 sudoer 列表中,这样我就不必以交互方式进行操作?
我之所以这么问,是因为我正在尝试配置不具有交互性的 Docker centos 容器。
我有一个 Amazon EC2 实例。我可以正常登录,但是“su”和“sudo”现在都不能正常工作(以前它们可以正常工作):
“su”要求输入密码,但我使用 ssh 密钥登录,我认为 root 用户甚至没有密码。
“sudo <anything>”这样做:
sudo: /etc/sudoers is owned by uid 222, should be 0
sudo: no valid sudoers sources found, quitting
Run Code Online (Sandbox Code Playgroud)
我可能做了“chown ec2-user /etc/sudoers”(或者,更可能是“chown -R ec2-user /etc”,因为我厌倦了rsync失败),所以这是我的错。
我该如何恢复?我停止了实例并尝试了 AWS EC2 控制台上的“查看/更改用户数据”选项,但这没有帮助。
编辑:我意识到我可以杀死这个实例并创建一个新实例,但希望避免极端情况。
我有一个网络服务器,也播放网络广播。作为 www-data 用户,我想运行一些命令,例如我在/etc/sudoers文件中做了这个:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
Run Code Online (Sandbox Code Playgroud)
并形成 PHP 我可以在不使用密码的情况下通过以下方式操作音量:
exec('sudo -u user amixer set Master 3%-');
Run Code Online (Sandbox Code Playgroud)
和:
exec('sudo -u user amixer set Master 3%+');
Run Code Online (Sandbox Code Playgroud)
但是现在我希望能够通过运行命令来重新启动我自己的服务:
exec('sudo -u user service servicename restart');
Run Code Online (Sandbox Code Playgroud)
所以我试过:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /bin/service
Run Code Online (Sandbox Code Playgroud)
和这个:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, /bin/service
Run Code Online (Sandbox Code Playgroud)
甚至这个:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer
www-data ALL=(ALL) NOPASSWD: /bin/service
Run Code Online (Sandbox Code Playgroud)
但他们似乎都没有工作。请帮帮我。
对不起,伙计们 - 我的错误。我做了一些更改,尝试将表单 /sbin 链接到 /bin
现在我已将其更改为:
www-data ALL=(ALL) NOPASSWD: /usr/bin/amixer, NOPASSWD: /usr/sbin/service
Run Code Online (Sandbox Code Playgroud)
它有效!谢谢!话题关闭。
我已经阅读了很多关于为特定用户启用 sudo 访问的帖子,但到目前为止这些都无济于事。
情况是:
我正在运行 Debian 测试。系统上只有两个帐户:“root”和用户帐户“benny”。用户“benny”应该能够使用 sudo 以 root 权限运行命令(当然我先安装了 sudo),这就是我使用 visudo 编辑“/etc/sudoers”文件的原因,如下所示:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
benny ALL=(ALL:ALL) ALL #<<<<<<<<<<<<<<< EDIT HERE!
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ALL ALL= NOPASSWD: /usr/sbin/g15daemon
Run Code Online (Sandbox Code Playgroud)
这根本不起作用 - 发出“sudo”命令时,它一直说“benny 不在 sudoers 文件中”。将报告此事件。所以我将 benny …
操作系统: Arch Linux
Linux版本: 4.16.11
须藤版本: 1.8.23
我需要什么:
any executable与sudo使用密码提示/home/username/script.sh没有密码提示的情况下执行一个可执行文件。当我这样配置时
username ALL=(ALL) NOPASSWD: /home/username/script.sh
Run Code Online (Sandbox Code Playgroud)
我对 有想要的效果script.sh,但我不能executable用sudo.
例子
$ sudo ./script.sh # runs fine!
Run Code Online (Sandbox Code Playgroud)
尝试别的
$ sudo nano /etc/sudoers
[sudo] password for username:
Sorry, user username is not allowed to execute '/usr/bin/nano
/etc/sudoers' as root on hostname.
Run Code Online (Sandbox Code Playgroud)
看来这是替换的结果ALL有NOPASSWD,看来我需要两者。如果sudoers文件已ALL供用户使用,我可以使用密码提示执行任何我想要的操作
username ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我试图结合 ALL 和 NOPASSWD 但没有结果
username ALL=(ALL) …Run Code Online (Sandbox Code Playgroud) 我想给usersudo 特权。我添加user到管理员组:
usermod -a -G admin user
然后我使用 visudo 检查管理员用户是否已设置为接收 sudo 权限。我取消了该行的注释admin ALL=(ALL) ALL。
它没有用。
sudoers 文件:
Defaults env_reset
root ALL=(ALL:ALL) ALL
admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud) 当我被禁止运行sudo 时,我收到以下消息:
barack.obama 不在 sudoers 文件中。此事件将被报告。
但是它向谁报告,如何报告?
我很难passwordless sudo在我的 Debian 服务器上为一个用户创建。我已将以下行添加到sudoers文件中:
deployer ALL = NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
令我惊讶的是,我可以轻松地创建一个新用户
adduser deploy
passwd -l deploy
su deploy
touch somefile
Run Code Online (Sandbox Code Playgroud)
添加deploy ALL = NOPASSWD: ALL到sudoers,和
sudo cp somefile /etc/init.d/somefile
Run Code Online (Sandbox Code Playgroud)
不会提示我输入密码。
您能否解释一下我的现有用户(部署者)和新用户(部署者)之间的区别,以便passwordless sudo对一个用户有效,但对另一个无效?
在 Linux 中,登录信息与 UID 相关联。但是,当我打开 sudoers 文件时,sudoers 是由用户名而不是 UID 定义的。
为什么使用用户名而不是 UID?
sudoers 文件在usermod -l运行时会自动更改吗?
片段:
# User privilege specification
root ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud) 我知道上面的行允许<user>运行 sudo 命令而无需输入密码。但语法的实际含义是什么?如果您可以链接到一篇文章那就太好了。谢谢