即使我的非特权用户受到威胁,我也希望 root 帐户安全。
在 Ubuntu 上,默认情况下您只能出于“安全原因”使用 sudo。但是,我不确定它是否比仅在文本模式控制台上使用登录更安全。如果攻击者可以以我的普通用户身份运行代码,那么可能会出错的事情太多了。例如添加别名、向我的 PATH 添加东西、设置 LD_PRELOAD 和 X11 键盘记录器等等。我能看到的唯一优势是超时,所以我永远不会忘记注销。
我对 su 也有同样的疑问,但它甚至没有时间限制。某些操作(尤其是 IO 重定向)对 su 更方便,但在安全方面这似乎更糟。
在文本模式控制台上登录似乎是最安全的。由于它是由 init 启动的,如果攻击者可以控制 PATH 或 LD_PRELOAD,那么他已经是 root。按键事件无法被 X 上运行的程序拦截。我不知道 X 上运行的程序是否可以拦截 [ctrl]+[alt]+[f1](并打开一个看起来像控制台的全屏窗口)或它就像 Windows 上的 [ctrl]+[alt]+[del] 一样安全。除此之外,我看到的唯一问题是没有超时。
所以我错过了什么吗?为什么 Ubuntu 的人决定只允许 sudo?我可以做些什么来提高任何方法的安全性?
SSH呢?传统上 root 不能通过 SSH 登录。但是使用上述逻辑不是最安全的做法:
要在禁用 root 帐户的计算机上启动 root shell,您可以运行以下命令之一:
sudo -i
: 运行交互式登录 shell(读取/root/.bashrc
和/root/.profile
)sudo -s
: 运行一个非登录的交互式 shell(读取/root/.bashrc
)在 Ubuntu 世界中,我经常看到sudo su
建议是获取 root shell 的一种方式。为什么要运行两个单独的命令呢?据我所知,sudo -i
等效于sudo su -
并且sudo -s
与sudo su
.
唯一的区别似乎是(比较sudo -i
左侧和sudo su -
右侧):
并比较sudo -s
(左)和sudo su
(右):
主要区别(忽略SUDO_foo
变量 和LS_COLORS
)似乎是版本中的XDG_foo
系统变量sudo su
。
是否有任何情况下这种差异需要使用相当不雅的sudo su
?我可以安全地告诉人们(就像我经常这样)跑步没有任何意义sudo su
还是我错过了什么?
我已经使用 Linux 一段时间了,每当我输入时,sudo
我都以为我正在切换到 root 用户来执行命令。
显然这不是真的,因为我需要的只是我的用户帐户的密码。我猜因为我没有与多个用户一起工作过,所以我在现实世界中并没有真正注意到这一点。
我不确定 Ubuntu 如何设置我的第一个帐户。有root用户吗?我是根吗?我猜我刚刚在安装时创建了一个新用户,但它给了我 root 权限?只是在这里有点困惑......
那么为什么我可以使用我的用户密码运行 root 命令呢?
我看到两者都做同样的事情并且最终我都在同一个目录中。所以它真的一样还是有区别?
也做 su 和 su - 在这两种情况下都让我成为 root 用户。那么它是如何有益的?