Eya*_*vin 1 permissions command-line bash sudo
如果我有一个文件
$ touch some_file.txt
Run Code Online (Sandbox Code Playgroud)
我想将它移动到需要sudo
权限的目录
$ cp some_file.txt /usr/local/bin
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
cp: cannot create regular file ‘/usr/local/bin/some_file.txt’: Permission denied
Run Code Online (Sandbox Code Playgroud)
然后我必须在命令前加上前缀sudo
才能使其工作
$ sudo cp some_file.txt /usr/local/bin
Run Code Online (Sandbox Code Playgroud)
当我执行需要权限的命令时,如何自动获得 sudo 密码提示?
就像是:
$ cp some_file.txt /usr/local/bin
cp: cannot create regular file ‘/usr/local/bin/some_file.txt’: Permission denied
Please enter sudo password:
************ # Entering my password
# Command executed successfully
Run Code Online (Sandbox Code Playgroud)
虽然这可能是可能的,但这是一个非常非常糟糕的主意。这将鼓励您只是盲目地运行,sudo
而不是调查为什么您没有权限以及您实际尝试做什么。在某些情况下,这可能会导致您sudo
在不必要的地方使用,例如,可能会导致您更改配置文件的所有权等。
而不是只是一味地要求的sudo
密码,你可以使用bash的历史快捷方式和运行:
sudo !!
Run Code Online (Sandbox Code Playgroud)
该!!
扩展到您运行以前的命令。例如:
$ whoami
terdon
$ sudo !!
sudo whoami
root
Run Code Online (Sandbox Code Playgroud)
至少,通过这种方式,您可以看到正在发生的事情。它只比您要求的复杂一点,而且更安全一点。