在 Solaris 5.10 上使用 sudo 1.7.4p4,在 RHEL4 u6 上使用 sudo 1.6.7p5 我看不到如何保留我的环境变量,例如 $PYTHONPATH。我已将此行添加到 sudoers,但没有任何区别:
Defaults !env_reset
Run Code Online (Sandbox Code Playgroud)
我做错了什么,还是 sudo 安装根本不尊重 env_reset 标志?
编辑:至少在 Solaris 上,我们发现这个问题取决于 shell!标准的 root shell 是 Bourne,sudo bash另一方面,如果我们在 sudo ( )下运行 bash ,!env_preset 将保留环境(包括 PATH 和 LD_LIBRARY_PATH)。我不得不说,这是相当令人困惑的行为。
sudo environment-variables solaris-10 redhat-enterprise-linux
我第一次sudo使用 openSUSE 时,我总是收到一条奇怪的消息警告
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
root's password:
Run Code Online (Sandbox Code Playgroud)
第一次成功登录后,我不会再收到警告。
我想一直被警告。我觉得这个消息有点花哨。有什么办法可以通过 sudo prompt 发出这样的警告吗?
我正在与一个产品的支持成员一起工作,他坚持说我需要成为 root 才能安装一系列补丁,而 sudo 不起作用;他没有提供任何理由,但他的信念似乎非常坚定。浏览超级用户我无法确定出现这种情况的任何可能原因,并确认,当我运行时:
sudo -l
Run Code Online (Sandbox Code Playgroud)
我得到:
...
User [MY USERNAME] may run the following commands on this host:
(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
据我所知,从 Linux/服务器团队获得真正的 root 访问权限并不是一个直接的过程,所以我更愿意自己安装它们。
是否有任何实际原因为什么 sudo 在服务器上安装软件时的行为与 root 不同?
我有一个交互式 shell 脚本,在一个地方需要 ssh 到另一台机器(基于 Ubuntu)并以 root 身份执行一些东西(用户应该输入他的密码,但远程命令应该像脚本中提到的那样运行):
# ...
ssh remote-machine 'sudo ls'
# ...
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到此错误消息:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
好的,这很清楚。但是我怎样才能规避这一点呢?应该发生这样的事情:
$ ssh remote-machine 'sudo ls /'
[sudo] password for user1:
/bin
/etc
/var
Run Code Online (Sandbox Code Playgroud) 我想将我机器上的文件夹与远程机器上的文件夹同步。远程文件夹只能由root. 我在远程机器上有一个帐户,可以使用sudo. 如何运行 rsync 使其在远程计算机上具有 root 权限?
我尝试了以下方法:
rsync -avz -e ssh /home/ubuntu/my/lovely/folder ubuntu@x.x.x.x:/remote/lovely/folder --delete --rsync-path="sudo rsync"
Run Code Online (Sandbox Code Playgroud)
但是(输入密码后)出现以下错误:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud) Homebrew 很好地允许没有 sudo 权限的包安装,但似乎我需要管理员权限才能安装 Homebrew 本身。
我想在没有 sudo 或管理员权限的 Mac 环境中安装 Homebrew。这可能吗?
我明白了什么su -呢
su将您登录到您的环境中的根相反)我明白了什么sudo呢
但我不确定这是做什么的: sudo su -
任何人都想澄清
我试过把我的别名放在~/.bash_profile, ~/.bashrc, /etc/profile, 和 中/etc/bashrc。
我仍然无法执行以下操作:
alias zf2="php public/index.php"
Run Code Online (Sandbox Code Playgroud)
然后执行:
sudo zf2 orm:info
Run Code Online (Sandbox Code Playgroud)
问题似乎是我无法使用 visudo 将别名指定为命令——这会导致语法错误。
所以我无法调用:
sudo zf2 orm:info
Run Code Online (Sandbox Code Playgroud)
但是,我能够在 /usr/share/scripts/zf2 创建一个脚本,其中包含:
#!/bin/bash
alias zf2="php public/index.php"
zf2 $1
Run Code Online (Sandbox Code Playgroud)
并将此脚本添加为 visudo 中的命令。当此脚本位于最终用户的 PATH 中时,我可以执行
zf2 orm:info
Run Code Online (Sandbox Code Playgroud)
我有不同的别名zf2,我需要向最终用户公开。我更愿意维护别名而不是脚本集合。
这是黑客行为。
我有时需要在终端中快速运行一个又一个的程序,其中一些命令需要,sudo而另一些则不需要,例如:
$ command1; c2; sudo c3 | c4; c5 | sudo c6; c7; sudo c8
Run Code Online (Sandbox Code Playgroud)
我想sudo先启动(也称为输入密码) ,这样等待密码command1时就不会出现瓶颈。c3
大多数时候,我会sudo使用在键盘上随意输入的随机命令,例如:
$ sudo laksdfjlskjf; command1; c2; sudo c3 | c4; c5 | sudo c6; c7; sudo c8
Run Code Online (Sandbox Code Playgroud)
它说command not foundfor laksdfjlskjf,但我已经成功完成了我需要做的事情:启动sudo。没有瓶颈c3。
问题:
有没有比输入(非)随机字符来启动更好的方法sudo?是否有一个不执行任何操作并且可以安全使用的安全命令sudo?