Questions tagged «privileges»

8
获得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登录。但是使用上述逻辑并不是最安全的做法: 通过SSH允许root 切换到文字模式 以root身份登录 SSH到另一台机器 以root身份登录?
120 security  sudo  login  su  privileges 

3
sudo内部如何工作?
sudo内部如何运作?不像root一样,怎么可能没有root密码就可以成为root su?该过程涉及哪些系统调用等?这不是Linux上一个巨大的安全漏洞吗(例如,为什么我不能编译一个补丁大sudo,既可以执行常规操作sudo却又不要求非特权用户使用的密码)? 我已经阅读过login和su internals。我还阅读了sudo应该如何使用?但尽管标题,他们主要是处理之间的差异su和sudo。
74 sudo  root  privileges 


6
用root权限以编程方式写入文件的最安全方法是什么?
大型应用程序需要在特定时间对需要根权限的文件执行少量写入操作。它实际上不是文件,而是硬件接口,它作为文件公开给Linux。 为了避免给整个应用程序以root特权,我编写了一个bash脚本来执行关键任务。例如,以下脚本将启用硬件接口的端口17作为输出: echo "17" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio17/direction 但是,由于suid我的系统上的bash脚本已禁用,我想知道什么是实现此目的的最佳方法。 使用此处介绍的一些解决方法 sudo从主应用程序使用调用脚本,并相应地编辑sudoers列表,以避免在调用脚本时要求输入密码。给sudo特权我有点不自在echo。 只需使用编写一个C程序,fprintf并将其设置为suid root。硬编码字符串和文件名,并确保只有root可以编辑它。或从文本文件中读取字符串,类似地确保没有人可以编辑该文件。 我没有想到的其他解决方案比上面介绍的解决方案更安全或更简单?


8
超级用户不能侵犯哪些访问权限?
神父 Br。乔治在他的一次演讲中(用俄语)告诉人们,有些访问权限是超级用户不能侵犯的。那就是有些访问权限可以禁止超级用户做某事。 我无法在Internet上找到此信息,并且很好奇它们是什么。这可能与系统的核心执行有关,不是吗?也许他无法停止某些系统进程?也许他不能在实模式下运行进程? 这个问题与SELinux没有关系(George在问题之前就在谈论它)。


3
什么脚本可以允许普通用户使用网络名称空间?
我有一个使用网络名称空间(netns)的体系结构。我想允许普通用户在这些netns中进行一些操作。 我可以编写一个netns-exec.sh受本文启发的脚本,由执行sudo,包含: ip netns exec $1 su $USER -c "$2" 并添加到我的sudoer文件中: user ALL=(ALL) /path/to/netns-exec.sh 但是我发现它是如此丑陋,我完全可以做噩梦。有没有更好的解决方案,允许普通用户使用名称空间?是否可以将用户分成一些有用的组?我搜索了一下,但一无所获。

3
GID,当前,主要,补充,有效和真实组ID?
以下链接在不同的上下文中讨论了这些概念。我已经阅读了它们的定义,但是我仍然无法说出它们之间的关系,或者它们中的某些是否相同。 当前组ID 组号 主要和补充组ID 有效和真实的组ID(也在Wikipedia上) 这是我困惑的一个例子: 根据man id,如果输入id,我应该得到他们所谓的有效和真实的组ID。 id uid=501(joe) gid=501(joe) groups=501(joe), 100(users) 但是,Wikipedia引用的输出id来区分主要 ID 和补充 ID。此外,维基百科区分主要组ID 和补充组ID ,还是有效组ID 与实际组ID。这些概念如何相互关联? 另外,主要组ID = 组ID = 当前组ID是否正确?

4
为什么sudo在Linux上有效但在Android上无效?
我还没有机会阅读有关Android,Linux或UNIX的足够知识来自己回答这个问题。sudo可以在Linux机器上运行,但不能在Android上运行,除非您将移动设备(例如Samsung GT-N8013)root。为什么移动设备需要植根,而不是典型的Linux安装? 我的问题的上下文与/programming/14019698/adb-shell-sudo-on-windows-7/14019726#14019726相关 (此外,程序是否有任何办法可以要求root在Android 上运行,就像您具有在Windows上以“以管理员身份运行”的特权升级一样?如果您认为此问题应在其自己的线程上,我可以创建一)

1
允许某些来宾执行某些命令
我想创造一些我的Debian / Ubuntu的主机的新用户是能够更新使用命令的服务器apt-get update和apt-get dist-upgrade,但我不wan't给他们充分sudo访问能够为其他人做任何事情。这可能吗?也许有一种方法可以创建一个他们无法编辑但可以执行的脚本,该脚本将以root用户身份执行?



2
Ubuntu 9.04上的漏洞演示
对于一门有关IT安全的课程,我想向学生展示特权升级。为此,我浏览了exploit/linux/localMetasploit框架中的列表,发现(包括其他内容)exploit/linux/local/sock_sendpage自2009年8月起。 从2009年4月起,我使用32位Ubuntu Server 9.04(http://old-releases.ubuntu.com/releases/9.04/ubuntu-9.04-server-amd64.iso)设置了VM 。根据漏洞描述uname -r2.6.28-11-generic 相信自2001年5月以来的所有Linux 2.4 / 2.6版本都将受到影响:2.4.4至2.4.37.4(含);2.6.0至2.6.30.4(含) 因此,看来我设置的Ubuntu服务器应该适合演示。但是,我无法使其正常运行。 我在服务器上添加了一个(常规)用户,并且SSH访问有效。在Metasploit框架内,我可以使用创建SSH会话auxiliary/scanner/ssh/ssh_login。但是,当我运行漏洞利用程序时, [*] Writing exploit executable to /tmp/mlcpzP6t (4069 bytes) [*] Exploit completed, but no session was created. 我没有任何进一步的信息,即使设置DEBUG_EXPLOIT为true也是如此。/tmp是writabe,也来自Metasploit SSH会话: $ sessions -c "touch /tmp/test.txt" [*] Running 'touch /tmp/test.txt' on shell session 1 ([redacted]) $ sessions -c "ls -l /tmp" …

5
如何在shell脚本中放弃root特权?
OpenVPN中的“ --up”选项通常用于路由等。因此,在OpenVPN放弃root特权以无人运行的情况下进行处理。但是,我正在调用需要以非特权用户身份运行的shell脚本。 我怎么做?我研究了Drop Process Privileges,特别是多项式和tylerl的答案,但是我不知道如何实现。我在Centos 6.5中工作,并且suid被阻止为“ chmod u + s”和“ setuid()”。 有一个OpenVPN插件(“ openvpn-down-root.so”),该插件使“ --down”选项调用的脚本能够以root用户身份运行。可能存在等效项,例如“ openvpn-up-user.so”,但我没有找到它。 编辑0 根据Nikola Kotur的回答,我已经安装了Ian Meyer的runit-rpm。尽管chpst命令在终端中有效,但在up脚本中,它失败并显示“找不到命令”。起作用的是“ sudo chpst”以及设置适当的显示和语言。请参阅为什么我的终端无法正确输出unicode字符?鉴于此,up脚本需要以下四行: LANG="en_US.UTF-8"; export LANG GDM_LANG="en_US.UTF-8"; export GDM_LANG DISPLAY=:0; export DISPLAY sudo chpst -u user -U user /home/user/unprivileged.sh & 编辑1 根据0xC0000022L的评论,我发现“ sudo -u用户”和“ sudo chpst -u用户-U用户”一样有效: LANG="en_US.UTF-8"; export LANG GDM_LANG="en_US.UTF-8"; export …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.