AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 39281
Accepted
tutuca
tutuca
Asked: 2011-05-03 07:42:00 +0800 CST2011-05-03 07:42:00 +0800 CST 2011-05-03 07:42:00 +0800 CST

如何在没有密码的情况下使用 sudo 运行应用程序?

  • 772

...但仍然需要管理员权限的应用程序?

为了允许以下操作:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

作为参考,我在亚马逊的 e3 实例上看到了这个设置

任何想法?

sudo
  • 6 6 个回答
  • 120097 Views

6 个回答

  • Voted
  1. Best Answer
    Mark Paskal
    2011-05-03T08:10:04+08:002011-05-03T08:10:04+08:00

    您需要编辑 sudoers 文件。请注意,成功会给您带来不那么安全的系统,而失败可能会破坏 sudo。始终使用 编辑 sudoers 文件sudo visudo,因为 visudo 会检查错误,如果发现任何错误,则不会保存文件。

    在没有密码的情况下授予所有权限以root身份运行是一个坏主意,因此只允许您需要的一个可执行文件(apache2ctl);将以下内容附加到文件的最底部:

    YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl
    

    如果您愿意,您可以将可执行文件的路径替换为“ALL”,从而为您提供完整的无密码 sudo。

    将 YOURNAME 替换为您的用户名,然后按Ctrl+X保存并退出。如果发生错误,它将提供恢复、编辑或保存。

    确保使用可执行文件的完整路径:
    即。/usr/bin/apache2ctl而不仅仅是apache2ctl. 这很重要,因为在不明确说明路径的情况下,sudo 将允许用户当前路径上名为 apachectl 的任何程序以 root 身份运行。

    • 56
  2. Chris
    2012-05-12T22:03:53+08:002012-05-12T22:03:53+08:00

    这个问题的真正答案可能很复杂,因为 sudo非常强大,并且可以配置为做一些很酷的事情。这在文档中得到了彻底的解释。

    简短的答案sudo visudo在终端中运行。如果这是您第一次运行 visudo,它会询问您喜欢哪个编辑器。nano通常被认为是最容易使用的,但请选择您最熟悉/最熟悉的编辑器。您需要决定要授予谁访问权限;它可能ALL适用于每个人(一个非常糟糕的主意)、用户或系统组。组以 % 符号为前缀。例如,如果您想为steroid_users组中的每个人授予 root 权限,而无需为所有命令提供密码,您可以添加:

    %steroid_users ALL=(ALL) NOPASSWD: ALL
    

    到文件末尾,退出并保存文件。如果一切顺利,并且您是 steroid_users 组的成员,您将能够发布sudo *some-command*而无需输入密码。

    请记住,在您登录时可以访问您的终端的任何人 - 或者如果您为基于密钥的身份验证设置了 ssh 设置,或者(更糟糕的是)启用了无密码会话登录 - 可以完整且不受限制地访问您的整个系统。如果您的系统上有多个用户,或者这是一个文件服务器,那么所有用户文件都可能存在风险,因为 root 可以做任何事情!

    此外,如果您犯了错误,visudo 将输出错误消息并且不保存对文件的更改。这将有助于防止完全破坏 sudo。你真的应该阅读文档。Sudo 旨在为用户提供足够的访问权限来完成他们的工作,而无需暴露整个系统。只为某些命令提供无密码访问可能是有利的。

    我希望这有帮助。

    • 25
  3. korjjj
    2012-05-12T21:18:25+08:002012-05-12T21:18:25+08:00

    您需要编辑“/etc/sudoers”文件(有“visudo”命令。)在您的用户或组允许的命令列表之前添加 NOPASSWD。如果您的用户在“管理员”组中 - 您需要以下内容:

    %admin ALL=(ALL) NOPASSWD: ALL
    

    检查https://help.ubuntu.com/community/Sudoers,顺便说一句。

    • 5
  4. Luis Alvarado
    2011-05-03T07:52:54+08:002011-05-03T07:52:54+08:00

    您可以将 nopasswd 标志添加到用户列表中,但这并不能消除所有密码问题。只会询问第一个。

    1. 编辑 sudoers:(sudo visudo您必须使用 sudo。这是一个管理文件。)
    2. 在 Admin Line 之后(最后)添加带有 nopasswd 标志的用户。例如:
      cyrex ALL = NOPASSWD: ALL或cyrex ALL = (ALL) NOPASSWD: ALL
    • 3
  5. Alex
    2011-05-03T07:59:00+08:002011-05-03T07:59:00+08:00
    sudo visudo
    %<GROUP> ALL = NOPASSWD: apache2ctl
    

    或者

    sudo visudo
    %<GROUP> ALL = NOPASSWD: /etc/init.d/apache2
    

    我想这会做到。

    但要小心删除 sudo 的密码。

    • 2
  6. Nathaniel F. Malm
    2014-04-14T12:22:15+08:002014-04-14T12:22:15+08:00

    现在简单回答! 没有办法弄乱任何东西或捏造你的安装。

    只需输入您的密码几次,然后您将永远不必再次输入!这将允许您将本地管理员帐户添加到组“root”,然后从允许整个组“root”超级用户权限的模板中取消注释。您可以在本文的后面部分阅读我针对此过程的安全问题/解决方案。

    %username& 是您的用户名的全局变量(将其替换为所需的用户名)

    第一步:打开一个终端窗口,然后输入“ sudo usermod -a -G root %username%”

    第2步:然后复制/粘贴这个......

    sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`
    

    步骤 2或类型

    sudo nano /etc/pam.d/su`
    

    转到第 19 行并删除前面的“#” # auth sufficient pam_wheel.so trust(对于某些人来说可能是不同的行号)

    *第一个命令将您的 %username% 添加到组“root”

    第二个/第三个命令允许组“root”的所有成员成为没有密码的超级用户,而不是只允许用户“root”su 权限进行身份验证。


    尾注:

    不要乱来/etc/sudoers......“su”身份验证必须经过很多检查/平衡。超级用户身份验证使用与所有其他登录身份验证相同的 pam.d 过程。“/etc/security/access.conf”具有通过 tcp/ip(192.168.0.1) 通信和通过 telnet 服务 (tty1&tty2&tty3...等) 进行访问控制的布局,这允许通过传输协议对每个应用程序进行更精确的过滤。如果您担心安全,那么您应该关注远程/代码威胁,而不是当您离开房间时实际触摸您的计算机的人!!!

    偏执狂的食物(不要在评论中输入这个):

    sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf
    

    ^ 这会阻止非系统成员或 root 成员访问控制台。有时程序会安装被利用的用户名/组!

    • 0

相关问题

  • GUI sudo 不工作?

  • 如何在 sudo 下只运行一次桌面图形应用程序?

  • 如何将用户添加到“sudo”组?

  • Nautilus 自动以 root 身份浏览

  • 为什么我需要 root 权限才能在命令行中卸载驱动器,而不是在 Nautilus 中?如何改变它?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve