标签: sudo

ubuntu:让用户以 root 权限运行脚本

我有 ubuntu 8.04,我想编写一个 bash 脚本,root每个用户都可以运行该脚本。

我自己可以做 sudo。

我怎么做?

澄清:我不想用 sudo 来做,因为那样用户将不得不输入他们的密码。我只是想让他们以 root 身份运行脚本,也许是 setuid,不知道。

ubuntu permissions root sudo

10
推荐指数
2
解决办法
4万
查看次数

修复损坏的 sudoers 文件

可能的重复项:
Ubuntu:我的 sudoers 文件被破坏了,我该如何修复它?

问题描述:

我在/etc/sudoers文件中输入了一个错字,从而破坏了它。现在我不能再使用任何 sudo 命令,因为下面的错误被抛出。因此我无法修复我的 sudoers 文件并且被有效地卡住了。

$ sudo nano /etc/sudoers
>>> /etc/sudoers: syntax error near line 39 <<<
sudo: parse error in /etc/sudoers near line 39
sudo: no valid sudoers sources found, quitting
Run Code Online (Sandbox Code Playgroud)

我发现很少有解决方案说我应该启动到恢复模式(如下所示),我显然想避免这种情况。
Ubuntu :我的 sudoers 文件出错了,我该如何修复?

问题:

- 有没有其他方法可以在不重新启动 ubuntu 的情况下修复它?
- 如果在修改 sudoers 文件时很容易将自己锁定在 sudo 之外(每个人都会打错字),为什么不直接从内存中读取 sudoers 配置而不是从文件中读取?将有一个命令(例如 sudo-load)在将配置加载到内存之前确保语法正确,从而避免此类问题。

解决方案:
似乎有两种方法可以恢复它:
- 如果您有 root 密码,您可以简单地发出“su”,然后编辑文件
- 如果您没有 root 密码,您需要重新启动到单用户模式

ubuntu sudo

10
推荐指数
1
解决办法
2万
查看次数

sudoer 报告去哪里了?

所以我正在测试一个小型的 CentOS 构建(机架空间云)。我设置了我的用户并去做了一些 sudo'ing。好吧,我忘记了使用 visudo 将我的用户添加到 sudoers 文件的步骤。所以当然,我收到了这个错误:

不在 sudoers 文件中。此事件将被报告。

以前没见过,所以现在想知道。这是从哪里报告的?它只是发送到邮件,还是记录在某个地方?

谢谢你的帮助

centos sudo

10
推荐指数
2
解决办法
6145
查看次数

在此处文档中通过 SSH 运行命令时不存在 TTY

我正在尝试在此处的文档中像这样通过 SSH 运行命令:

ssh example.com <<END
sudo /etc/init.d/apache2 reload
END
Run Code Online (Sandbox Code Playgroud)

这通常有效,除非我尝试运行需要输入的内容,例如 sudo 的密码。在这种情况下,我收到以下消息:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用-tSSH 上的标志来分配一个伪 tty,例如:

ssh -t example.com "sudo /etc/init.d/apache2 reload"
Run Code Online (Sandbox Code Playgroud)

它会起作用,但是当我用 here-document 尝试同样的事情时,它不起作用,我会得到关于没有 tty 的相同错误:

ssh -t example.com <<END
sudo /etc/init.d/apache2 reload
END
Run Code Online (Sandbox Code Playgroud)

知道我怎样才能使这项工作?

另外,如果您想知道为什么我希望它与 here-document 一起使用而不是仅仅在同一行上传递它,那是因为输入命令(可能有几个)来自脚本读取的配置文件我听说它避免了转义引号、双引号等命令的麻烦。

ssh bash sudo

10
推荐指数
1
解决办法
2万
查看次数

符号链接和 sudo

我创建了一个符号链接:

ln -s /tmp/folder1 /tmp/folder2

然后我去 /tmp/folder2 并运行pwd

$ cd /tmp/folder2/
$ pwd
/tmp/folder2
$ sudo pwd
/tmp/folder1 # <-- This is the odd part
Run Code Online (Sandbox Code Playgroud)

为什么pwdwithsudo给了原目录?我正在编写一个 bash 脚本,需要当前目录的绝对路径。使用 sudo 我似乎无法获得原始目录。

shell bash sudo symbolic-link

10
推荐指数
2
解决办法
3378
查看次数

使用 sudo 安全地使用 find

在 Linux 服务器上,我需要从一组用户中删除 root 权限。但是这些用户有正当理由能够使用“查找”实用程序根据文件名、修改日期和其他元数据搜索文件。

在服务器上,文件名不敏感,但文件内容可能敏感。

我想使用 sudo 来允许用户搜索服务器上任何地方的文件。“find”实用程序很棒,但它会产生各种副作用,例如使用“-exec”生成任意命令。

我可以find在我的限制下工作吗?

linux find sudo

10
推荐指数
2
解决办法
2548
查看次数

应该在服务器管理中使用 sudo 还是只使用 su root ?

哪种方法更好?

对于桌面使用,似乎 sudo 更好,因为:

  • 作为普通用户,我可以拥有更一致的历史记录
  • 不需要记住两个密码,当我不经常做管理工作时尤其如此。
  • 安装时无需创建额外的 root 帐户。

但是在服务器管理方面呢?

在服务器中,您通常已经创建了一个 root 帐户,并且您可能经常进行管理工作。所以 sudo 的优势似乎不再成立。

更重要的是,在大多数发行版中,在命令行上配置 su 很容易,只需将用户添加到轮组中即可。(你甚至可以-G wheeluseradding时通过。)因此配置 su 可以很容易地自动化到 shell 脚本中。

但是对于sudo?您需要先添加用户,然后以visudo交互方式运行。这很糟糕,因为您无法将其自动化为 shell 脚本。

(嗯,你可以。例如,

echo '%wheel    ALL=(ALL)   ALL' >> /tmp/sudoers.tmp
cp /etc/sudoers /etc/sudoers.old
visudo -c -f /tmp/sudoers.tmp &&  mv /tmp/sudoers.tmp /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

但至少没有那么容易。)

那么你有什么看法呢?对于服务器环境,您更喜欢 sudo 还是 su root?

unix su root sudo

9
推荐指数
1
解决办法
3423
查看次数

如何在 sudoers 的同一行上同时设置 NOPASSWD 和 SETENV?

在 sudoers 文件中,如何在同一行上使用多个 Tag_Specs。

通常,如果我不想要求输入密码,我会这样做:

who  where = (aswhom) NOPASSWD: commands
Run Code Online (Sandbox Code Playgroud)

我想使用SETENV标签以便用户可以保留环境变量。这可以正常工作:

who  where = (aswhom) SETENV: commands
Run Code Online (Sandbox Code Playgroud)

从 sudoers(5) 手册页:

    Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' |
                  'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' |
                  'LOG_OUTPUT:' | 'NOLOG_OUTPUT:')
Run Code Online (Sandbox Code Playgroud)

我看不到如何在同一个条目上使用多个标签。我想在同一条线上使用NOPASSWDSETENV

linux sudo

9
推荐指数
1
解决办法
1万
查看次数

即使提供了 Sudo Pass,Ansible 也无法对 Sudo 进行身份验证

问题

使用最新的、稳定的 Ansible 版本,我有一个奇怪的问题,我的剧本在“Gathering_Facts”期间挂在一台服务器上,但在使用 Sudo 时在其他类似服务器上运行良好。在 Ansible 服务器上,我以我的用户(NIS 用户)身份运行,并在远程服务器上使用sudo(以 root 身份)进行更改。如果我从此设置中删除 Sudo,一切正常。

设置

软件版本

  • 操作系统:RHEL 6.4
  • Ansible 版本ansible 1.8.2
  • 须藤版本
    须藤版本 1.8.6p3
    Sudoers 策略插件版本 1.8.6p3
    sudoers 文件语法版本 42
    Sudoers I/O 插件版本 1.8.6p3
    
  • SSH 版本:OpenSSH_5.3p1、OpenSSL 1.0.0-fips 2010 年 3 月 29 日

服务器地图

                   -------- User1@Server1: sudo -H -S -p(挂在 Gathering_Facts 上)
                  /
用户 1@Ansible ----
                  \
                   -------- User1@Server2:sudo -H -S -p(工作正常)

用户

  • User1:Server1 和 Server2 上的 NIS 可访问用户。
  • root:每个服务器的本地 root 用户。

Ansible 配置

我的 …

sudo rhel6 ansible

9
推荐指数
2
解决办法
1万
查看次数

是否可以从命令行锁定 sudo,而无需编辑 sudoers 或注销并重新登录?

当您运行时,sudo在您上次运行后至少 5 分钟内不会询问密码。您可以通过添加 to 来更改此Defaults timestamp_timeout=0超时。这也立即锁定了它。sudoerssudo visudo

我的问题是是否有一种方法可以只执行一次,并且无需visudo.

linux sudo

9
推荐指数
1
解决办法
1519
查看次数

标签 统计

sudo ×10

linux ×3

bash ×2

root ×2

ubuntu ×2

ansible ×1

centos ×1

find ×1

permissions ×1

rhel6 ×1

shell ×1

ssh ×1

su ×1

symbolic-link ×1

unix ×1