在我的 Ubuntu 上,sudo 缓存凭据。但是,如果我打开另一个终端窗口并在该窗口中使用 sudo,则缓存的凭据不会共享,我必须重新输入密码。
我可以让多个终端中的 sudo 实例共享缓存的凭据吗?
我是 Linux 新手,我在双引导系统上运行 CentOS。我试图编辑一个需要 root 权限的文件,所以我使用了 sudo。我输入了root密码,但失败了。这种情况发生了 3 次,过程结束。然后我以 root (su) 身份登录并能够导航到该文件并以 root 身份进行更改。我错过了什么吗?我将如何编辑 sudoers 文件以使此密码有效?或者是否有另一种方式登录 sudo 组进行这些更改?如何设置 sudo 密码?
我有一个使用sudo
了几次的 bash 脚本。不过,它有一些奇怪的地方。
这是脚本的相关部分。
sudo service apache2 stop
drush sql-dump --root="$SITE_DIR" --structure-tables-key=svn --ordered-dump | grep -iv 'dump completed on' | sudo tee "$DB_DIR/${SITE_NAME}.sql" > /dev/null
sudo svn diff "$DB_DIR" | less
sudo svn commit -m "$MESSAGE" "$DB_DIR"
sudo service apache2 start
Run Code Online (Sandbox Code Playgroud)
第一个密码是停止apache,它按预期工作。如前所述,sudo tee
它不“记得”我有提升的权限,再次要求输入密码,然后将其回显到屏幕上。鉴于这完全tee
是关于回显到屏幕,我已经使用了一些简单的脚本,这些脚本具有| sudo tee
,并且它们都按预期工作。
编辑:
我查看了drush
命令本身,它是一个 bash 文件,它使用exec
. 这听起来可能有潜力 - 有什么想法吗?这是来自drush
.
exec php $SCRIPT_PATH --php=`which php` "$@"
Run Code Online (Sandbox Code Playgroud)
Edit2: 正在查找与 Ruby 脚本有关的内容,并 …
在我的整个职业生涯中,我都是 Windows 用户。我刚买了一台 MacBook Pro,想开始使用 Ruby on Rails 进行开发。
我遇到了几个推荐使用该sudo
命令的安装指南。据我所知,该sudo
命令允许您以管理员身份运行命令。
我不明白的是......我的Mac上只有1个用户帐户,默认情况下我不应该是管理员用户吗?
为什么我需要使用sudo
命令?
我是否正确理解了什么sudo
?
我有个问题。
最近我已经安装了nodejs
(如果你不知道它是什么,它并不重要,可以是其他任何东西)从源到 /opt/node:
$ ls -la /opt
...
lrwxrwxrwx 1 root root 11 2012-07-25 13:48 node -> node-0.6.3/
drwxr-xr-x 6 root root 4096 2012-07-25 13:48 node-0.6.3
...
Run Code Online (Sandbox Code Playgroud)
所以,二进制文件在/opt/node/bin
:
$ ls -la /opt/node/bin
...
lrwxrwxrwx 1 root root 38 2012-06-20 11:44 npm -> ../lib/node_modules/npm/bin/npm-cli.js
...
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,npm
在那里。为了更容易从命令行使用它,我$PATH
在.bashrc
脚本中修复了它:
HOME=$HOME:...:/opt/node/bin
对 root 也是如此.bashrc
:
# which npm
/opt/node/bin/npm
Run Code Online (Sandbox Code Playgroud)
但是如果我用 sudo 运行 npm,npm
则找不到:
$ sudo which npm
$ sudo npm -g install …
Run Code Online (Sandbox Code Playgroud) 我在用户的 .bashrc 文件中定义了一个函数,它在我的命令提示符下显示我当前的 git 分支名称:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1="\\[$(tput setaf 7)\\]\\w \$(parse_git_branch)> \\[$(tput sgr0)\\]"
Run Code Online (Sandbox Code Playgroud)
当我 sudo 到 su 时,看起来我的 PS1 被结转了,并且在每个命令之后我都会收到错误bash: parse_git_branch: command not found
。
我可以更改什么,以便当我对另一个用户 sudo 时,使用其 PS1 而不是我用户的 PS1?
编辑:这似乎只发生在我使用源 Python virtualenv 之后。如果我在获取 virtualenv 之前 sudo su ,则不会发生此错误。
我经常在晚上回家之前让我的工作计算机运行一些耗时的计算。完成后,我希望它关闭。但是,由于关闭需要 root 权限,因此必须使用sudo执行。显然,7 小时后我没有在那里输入我的密码,到目前为止,我不得不以 root 身份执行整个命令列表(cmd1;cmd2;cmd3;...shutdown)——这并不理想。
有没有办法可以在命令列表的末尾“预授权”sudo?以某种方式我可以在执行开始时完成我的密码,这样 bash 以后就不需要我了?
谢谢!
sudo 怎么可能实际运行?如果它只是一个普通的程序,难道你不能在不需要用户身份验证的情况下做同样的事情,让任何人都可以访问计算机自动 root 访问权限吗?它如何在没有 root 密码的情况下以 root 身份执行操作?
这是我的简单 bash:
cat test.sh
#!/bin/bash
echo "hello"
su - root -c /path/to/script.sh <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
./test.sh
hello
su: must be run from a terminal
<current-user>
good bye
Run Code Online (Sandbox Code Playgroud)
(或者)
cat test2.sh
#!/bin/bash
echo "hello"
sudo su <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
又一个错误
(或者)
cat test3.sh
#!/bin/bash
echo "hello"
su root <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
又是错误...
当我尝试:
#!/bin/bash
echo "hello"
sudo -s <<EOF
<password>
echo Now I am root
id
echo "yes!" …
Run Code Online (Sandbox Code Playgroud) 我正在将本地机器备份到远程服务器。因为我想备份整个本地机器,即使是我的本地用户通常无法访问的文件,我使用 sudo 来做,所以命令看起来像sudo rsync -M--fake-super --other-arguments / me@server:/backup/location
.
这有一个问题,即 ssh 尝试使用 root 的 ssh 配置和证书,这些显然没有设置。最近我开始通过定义的别名来引用服务器,~/.ssh/config
并且该方法停止正常工作。
问题是:有没有办法可以使用 sudo 的访问权限,但同时保留普通用户的 ssh 配置?