如何在 Linux 中模拟类似 Windows 的管理员密码提示?

如何在 Linux 中模拟类似 Windows 的管理员密码提示?

mint install经常使用应用程序,但如果我允许我使用的普通用户对其拥有完全权限,则认为它不安全。我想知道是否有办法仅在输入 root 密码时才能访问此应用程序。基本上能够在终端安装新应用程序时使用类似于Windows的管理员密码提示的功能。我知道我可以使用 su 登录 root,但我知道这绝对不安全。有任何想法吗?

编辑:同样,我不想使用 sudo 或 chmod 或其他任何东西向普通用户授予权限。

答案1

如果您需要执行需要 root 权限的操作,则需要使用某种方法来获取 root 权限,这在大多数现代系统上意味着susudo或其中之一的包装。以 root 身份运行命令(无论是使用susudo)的危险之处在于,它为您提供了更多破坏系统的方法。因此,您应该仅在命令实际需要时以 root 身份运行该命令。

su和的典型配置之间的主要区别sudo在于,对于sudo,您输入与登录时相同的密码,而su需要不同的密码(用户的密码root)。对于典型的单用户计算机,两者在安全性方面没有显着差异。也可以配置sudo为不需要密码。

如果您在终端中工作并且想要以 root 身份运行命令,请su运行:

su -c 'somecommand an_argument another_argument'

sudo

sudo somecommand an_argument another_argument

无论哪种方式,系统都会提示您输入密码( 的 root 密码su、您自己的密码sudo)。 Sudo 可以记住您的密码,并且在接下来的几分钟内不会再次询问您;使用su,您每次都必须重新输入。

您还可以获得图形提示来输入密码(使用gksu, kdesu, ...),但如果您已经在终端中工作,那就不太方便了。

答案2

虽然天下没有免费的饭菜,但还是可以将风险降到最低。

如果您想以 root 身份运行脚本并立即退出而无需密码提示和exit命令,那么您将不得不做出一些妥协。

以下解决方案可让您将加密的两次(或更多)root密码存储在具有当前用户权限的任何位置。

高水平:

  1. root密码加密base64两次并将文件放置在任意位置(例如可以是 1234.txt)。

  2. 使用expect参数调用脚本(上面解码的字符串)

  3. Expect运行所需的脚本并退出。

  4. 清理文件下/root调用expect并删除bash_history(普通用户的)包含root、密码加密文件和 的行base64。要删除任何痕迹,请调用脚本(从普通用户的角度来看)。此脚本仅可由root用户访问。

总的来说,从普通用户的角度来看,这个脚本似乎从未运行过,并且它不包含任何敏感密码。

此外,双重base64加密对我来说似乎相当随机到无辜(尽管我不是安全专家,我不会将其识别为 2x base64)。例如:

V1c5MVFYSmxWMlZzWTI5dFpRbz0K decrypted to YouAreWelcome 

将密码编码两次base64 一次:

$ cat pass.txt | base64 | base64 > innocent_name.txt
$ rm pass.txt

然后:

运行脚本:

$ ./root_wrap.exp "$(cat innocent_name.txt | base64 -d | base64 -d)"

期望脚本:

#!/usr/bin/expect -f

set root_user root;
set root_pass [ lindex $argv 0 ];

spawn bash
expect "*$ "
send -- "whoami\r"
expect "*$ "
send -- "su $root_user\r"
expect "*?assword:*"
send -- "$root_pass\r"
expect "*# "
send -- "./whoam.sh\r"
expect "*# "
send -- "/root/rm_trace.sh\r"
expect "*# "
send -- "exit\r"
send -- "whoami\r"
expect "*$ "
expect eof

清理历史脚本/root/rm_trace.sh

#!/bin/bash

sed -i '/base64/d' /home/<user>/.bash_history
sed -i '/root_wrapp/d' /home/<user>/.bash_history
sed -i '/innocent_name/d' /home/<user>/.bash_history

以 root 身份运行的示例 bash 脚本:

 #!/bin/bash

 echo "now running as root"
 whoami

相关内容