标签: privileges

获得 root 权限的最安全方法是:sudo、su 还是 login?

即使我的非特权用户受到威胁,我也希望 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 通过 SSH
  • 切换到文本模式
  • 以 root 身份登录
  • ssh 到另一台机器
  • 以 root 身份登录?

security login su sudo privileges

129
推荐指数
3
解决办法
3万
查看次数

sudo 的内部结构如何工作?

sudo内部如何运作?不像 ,它怎么可能在没有 root 密码的情况下成为 root 用户su?该过程涉及哪些系统调用等?这难道不是 Linux 中一个巨大的安全漏洞(例如,为什么我不能编译一个打了很多补丁的补丁sudo,它只是做了常规操作sudo,但没有要求非特权用户的密码)?

我已阅读login 和 su internals。我还阅读了如何使用 sudo?但尽管标题,他们主要是处理之间的差异susudo

root sudo privileges

83
推荐指数
3
解决办法
1万
查看次数

文件权限中的“s”属性是什么意思?

请比较以下两行:

-rws---r-x 1 root root 21872 2009-10-13 21:06 prg1 

-rwx---r-x 1 root root 21872 2009-10-13 21:06 prg2 
Run Code Online (Sandbox Code Playgroud)

上的 setuid 位prg1以及“其他”的读取和执行位是否意味着任何用户都可以使用 root 权限运行它?该 prg2也有读取和执行“其他”,但没有设置setuid位,这是否意味着它仍然可以通过任何用户,但没有root权限运行?

setuid privileges

83
推荐指数
2
解决办法
20万
查看次数

允许用户监听 1024 以下的端口

我需要允许用户(与 root 不同)运行侦听端口 80 的服务器。

有没有办法做到这一点?

linux networking tcp privileges authbind

73
推荐指数
4
解决办法
14万
查看次数

以编程方式写入具有 root 权限的文件的最安全方法是什么?

一个巨大的应用程序需要在某个特定时间对需要 root 权限的文件执行少量写入。它不是真正的文件,而是作为文件暴露给 Linux 的硬件接口。

为了避免为整个应用程序授予 root 权限,我编写了一个 bash 脚本来执行关键任务。例如,以下脚本将启用硬件接口的端口 17 作为输出:

echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Run Code Online (Sandbox Code Playgroud)

但是,由于suid我系统上的 bash 脚本被禁用,我想知道实现这一目标的最佳方法是什么。

  1. 使用此处介绍的一些解决方法

  2. sudo从主应用程序调用脚本,并相应地编辑 sudoers 列表,以避免在调用脚本时需要密码。授予 sudo 权限让我有点不舒服echo

  3. 只需编写一个 C 程序,使用fprintf,并将其设置为 suid root。对字符串和文件名进行硬编码,并确保只有 root 可以编辑它。或者从文本文件中读取字符串,同样确保没有人可以编辑该文件。

  4. 我没有想到的其他一些解决方案比上面介绍的更安全或更简单?

setuid privileges

35
推荐指数
4
解决办法
4006
查看次数

lsof: 警告: 不能 stat() fuse.gvfsd-fuse 文件系统

这里到底发生了什么?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec  4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Run Code Online (Sandbox Code Playgroud)

fuse lsof privileges

31
推荐指数
2
解决办法
9万
查看次数

什么决定了哪些 Linux 命令需要 root 访问权限?

什么决定了哪些 Linux 命令需要 root 访问权限?我理解为什么apt-get需要root特权是可取的;但是这些命令与其他命令的区别是什么?这仅仅是可执行文件的所有权和执行权限的问题吗?

linux root privileges

25
推荐指数
2
解决办法
7884
查看次数

为什么普通用户可以关闭计算机?

我使用了该命令poweroff,意外地系统关闭了。我没有用过sudo所以我没想到电脑会被关闭。为什么我可以在没有 root 权限的情况下使用这个命令?

privileges halt

25
推荐指数
1
解决办法
3635
查看次数

为什么 sudo 可以在 Linux 上运行而不是在 Android 上运行?

我还没有机会阅读足够的关于Android、Linux 或 UNIX 的内容来回答这个问题。sudo可以在 Linux 机器上运行,但不能在 Android 上运行,除非您对移动设备(例如三星 GT-N8013)进行 root 操作。为什么移动设备需要 root 而不是典型的 Linux 安装?


我的问题的上下文与/sf/ask/981378891/#14019726有关

(另外,有没有什么方法可以让程序像root在 Android 上一样运行,就像你在 Windows 上提升“以管理员身份运行”的权限一样?如果你认为这个问题应该在它自己的线程上,我可以创建一)

root sudo android privileges

24
推荐指数
4
解决办法
4万
查看次数

GID、当前的、主要的、补充的、有效的和真实的组 ID?

以下链接在不同的上下文中讨论了这些概念。我已经阅读了它们的定义,但我仍然无法说出它们之间的关系,或者它们中的一些是否相同。

这是我的困惑来源的一个例子:

根据man id,如果我输入id,我应该得到他们所谓的有效真实的组 ID。

id uid=501(joe) gid=501(joe) groups=501(joe), 100(users)
Run Code Online (Sandbox Code Playgroud)

但是,维基百科参考了 的输出id来区分ID和补充ID。此外,维基百科区分主要补充有效真实的组 ID。这些概念如何相互关联?

另外,主要组ID =组ID =当前组ID是真的吗?

users group privileges

23
推荐指数
2
解决办法
3万
查看次数

标签 统计

privileges ×10

root ×3

sudo ×3

linux ×2

setuid ×2

android ×1

authbind ×1

fuse ×1

group ×1

halt ×1

login ×1

lsof ×1

networking ×1

security ×1

su ×1

tcp ×1

users ×1