如何禁用 root 密码缓存?我看了这个问题,但我真的不明白该怎么做,与我的问题不一样,但它是间接相关的。
我尝试将其添加到/etc/sudoers:
timestamp_timeout=0
Run Code Online (Sandbox Code Playgroud)
但它给了我:
>>> /etc/sudoers: syntax error near line 46 <<<
Run Code Online (Sandbox Code Playgroud)
所以我就按了x。46是我添加的行,所以其他的都没有问题。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
对比:
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
问题:与第二个示例相比,第一个示例提供了哪些额外的安全性?
如果登录 root 后需要自己的用户密码,它会提供额外的安全性吗?为什么?
我想只将 sudo 命令的输出写入某个文件,即在写入 sudo 后我在终端上获得的行即
[sudo] password for user:
Run Code Online (Sandbox Code Playgroud)
如果我使用sudo ls > fileorsudo ls 2> file然后我分别得到整个命令的 stdout 和 stderr 。我也不能使用sudo > fileor sudo 2> file,然后我会得到错误,我应该在 sudo 之后使用一些选项或命令。那么,有可能实现吗?
来自https://unix.stackexchange.com/a/489913/674
登录是一个用户空间结构;内核不关心这个。
有很多这样的例子;例如,cron 作业可以作为任何用户运行,无需该用户登录。 ...使用 SSH 连接计为登录。
既然有登录和不登录的例子,请问什么是登录?哪些活动算作登录,哪些不算?
让我猜猜。是否有任何涉及询问用户名和密码,并检查该信息/etc/passwd并/etc/shadow算作登录的活动?否则,不登录?
正在运行su登录吗?
正在运行sudo登录吗?或者不,因为它不要求目标用户的密码?
还有哪些其他教育示例?
谢谢。
我有 Linux Mint 19 Tara,今天我安装了新的软件包更新,您可以在下面的图片中看到。之后在sudo使用过程中sudo显示*而不是没有。Sudo 有效,但这很奇怪,在我按 Enter 后,星星会消失。
$ sudo echo
[sudo] password for matej: *********
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是控制台,一开始我可以写我的用户名,但密码在没有我干预的情况下得到确认。所以我无法登录到控制台。
我正在使用一个简单的终端命令,它向 iptables 添加规则并且它执行没有问题:
sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT
当我在 bash 脚本中运行该命令时,它返回 sudo: ./script.sh: command not found
该脚本如下所示:
#!/bin/bash
sudo iptables -A OUTPUT -p tcp -m string --string "facebook.com" --algo kmp -j REJECT
Run Code Online (Sandbox Code Playgroud) 我制作了一些脚本,其中包含一些设计需要 sudo 权限的功能。我在.bashrcforLinux和.bash_profilefor 中添加了这些路径,MacOS以便可以从任何地方调用它。
但我不希望用户sudo每次想要调用这些脚本函数时都键入。有什么方法可以暗示sudo每当调用这些函数时,终端都会假设它是从 root 用户调用的?
我想我应该sudo -i在脚本的开头添加还是在每个函数的开头添加?或者有没有其他替代方式来暗示sudo?此外,很高兴知道您是否认为暗示 sudo 会很糟糕或危险,以及是否不推荐这样做。
dangerous-function包含一些功能的脚本示例,我试图在不指定的情况下完成sudo
#!/bin/bash
start-one()
{
## do dangerous stuff with sudo
systemctl start dangerous.service
}
start-two()
{
systemctl start dangerous1.service
}
start-launchwizard()
{
systemctl start dangerous2.service
}
## Calling functions one by one...
"$@"
Run Code Online (Sandbox Code Playgroud)
我不想打电话给他们,sudo dangerous-function start-one
我只想打电话给他们,dangerous-function start-one但仍然得到与前一个相同的结果。
如果我调用 sudo,但等待一段时间没有输入密码,它会超时退出。有什么方法可以改变这种行为(在超时之前腾出时间或完全消除它)?
usermod通过 sudo 命令成功。
sudo usermod -aG some_group some_user
Run Code Online (Sandbox Code Playgroud)
但是如果通过su来执行的话,就会出现错误。
su
...I enter root password...
usermod -aG some_group some_user
bash: usermod: command not found
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
如何配置我的系统?
事实上,我有一个无法更改的脚本。该脚本使用 su 下的 usermod 命令。
sudo -i COMMANDCOMMAND在$HOMEroot 中运行。
当我尝试运行当前目录的脚本时,这会导致错误:
$ sudo -i ./myscript.sh
-bash: ./myscript.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)
找不到 /home/user/myscript.sh 因为在我的情况下 sudo -i 命令将当前目录移动到 /root 。
如何使sudo -i命令保持当前目录?
sudo并sudo -i有不同的环境,它需要的环境sudo -i