Questions tagged «capabilities»

3
在Linux上“离线”运行子进程的命令(无外部网络)
我有一个程序要在脱机模式下进行测试,而又不中断我的实际网络。该程序仍然需要连接到本地套接字,包括Unix域套接字和环回。它还需要侦听回送并且对其他应用程序可见。 但是尝试连接到远程计算机应该失败。 我想有一个工具,它的工作原理是strace/ unshare/ sudo,只是运行在互联网(和LAN)隐蔽和一切仍在工作的命令: $ offline my-program-to-test 该问题的答案提示:阻止进程的网络访问? 那里有一些建议,例如以其他用户身份运行然后操纵iptables或unshare -n。但是在两种情况下,我都不知道要与主系统共享unix域套接字和环回的诱惑-该问题的答案仅告诉我如何取消共享整个网络。 我正在测试的程序仍然需要连接到我的X服务器和dbus,甚至还能够在环回侦听来自系统上其他应用程序的连接。 理想情况下,我想避免创建chroot或用户或VM等,因为它就像拔掉网络电缆一样令人讨厌。即问题的关键是我怎样才能使它简单如一个sudo。 我希望该过程能够正常运行100%,除了指定非本地地址的网络调用会失败。理想情况下,保持相同的uid,相同的homedir,相同的pwd,相同的所有内容,除了...离线。 我使用的是Fedora 18,因此无法移植的Linux回答就很好(甚至期望)。 我什至很乐意通过编写C程序来解决此问题,如果涉及到这一点,那么涉及编写C的答案就可以了。我只是不知道C程序在保留本地网络的同时撤销外部网络访问权限时需要执行什么系统调用。 任何尝试支持“离线模式”的开发人员都可能会喜欢此实用程序!


1
可以在脚本中使用功能而无需设置解释器二进制文件的大小吗?
现在,我正在cap_net_bind_service MY_USERNAME/etc/security/capability.conf中使用。 现在,我只需要设置cap_net_bind_service+i我最喜欢的脚本语言的解释器就可以通过libcap [-ng] 添加CAP_NET_BIND_SERVICE到有效集合中。 这很好用,但是我想知道是否有一种方法可以在不对解释器二进制代码设置任何上限的情况下实现相同的目的。虽然这不是一个大问题(其他用户帐户没有上限,所以即使在解释器二进制文件中设置了位,他们也无法使用该上限),但由于每次使用解释器时我都必须重新设置标志,这有点令人讨厌更新。

3
如何使用capsh:我正在尝试以最小的功能运行无特权的ping
我正在Debian Gnu / Linux上试验功能。 我已将/ bin / ping复制到当前工作目录。不出所料,它最初是setuid root。 然后,通过执行sudo /sbin/setcap cap_net_raw=ep ./ping,使ping具有最少的功能(不是root),并且ping可以正常工作。 然后sudo /sbin/setcap -r ./ping撤销该功能。现在,它无法按预期工作。 我现在尝试使用ping进行工作capsh。 capsh 没有特权,因此我需要以超级用户身份运行它,但是然后删除超级用户,从而获得所有其他特权。 我想我也需要secure-keep-caps,这没有记录在capsh,而是在功能手册中。我从那里得到位数/usr/include/linux/securebits.h。它们似乎是正确的,因为的输出--print显示这些位是正确的。 我已经摆弄了几个小时,到目前为止,我已经有了这个。 sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} --print -- -c "./ping localhost" 但是,ping出现错误时ping: icmp open socket: Operation not permitted,这是当它不具有此功能时发生的。同样的--print节目Current: =p cap_net_raw+i,这还远远不够e。 sudo /sbin/capsh --caps="cap_net_raw+epi" --print -- -c …

8
如何防止进程写入文件
我想以无法创建或打开任何要写入的文件的方式在Linux上运行命令。它仍然应该能够正常读取文件(因此不能选择空的chroot),并且仍然能够写入已经打开的文件(尤其是stdout)。 如果仍然可以将文件写入某些目录(即当前目录),则可以获得加分。 我正在寻找一种本地解决方案,即不涉及为整个系统配置AppArmor或SELinux之类的东西,也不涉及root特权。不过,这可能涉及安装其内核模块。 我正在研究功能,如果有创建文件的功能,这些功能将很容易实现。如果ulimit涵盖了此用例,则它是另一种方便的方法。


1
'setcap'覆盖最后的功能。如何设置多种功能?
我想让node.js能够侦听端口80并关闭计算机。最初,我依次尝试了以下两个命令: setcap cap_net_bind_service=+ep /usr/bin/nodejs setcap cap_sys_boot=+ep /usr/bin/nodejs 然后我的应用程序无法绑定到端口80。我使用getcap进行了检查: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep 如果我再次为cap_net_bind_service运行setcap: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_net_bind_service+ep 我没有在手册页http://linux.die.net/man/8/setcap中看到任何有关设置多种功能的信息,并尝试了一些绝望的事情: # setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep # setcap cap_net_bind_service=+ep cap_sys_boot=+ep /usr/bin/nodejs Failed to set capabilities on file `cap_sys_boot=+ep' (No such file or …

1
Linux上脚本的功能
如果我想在可执行文件上设置功能(capabilities(7)),CAP_NET_BIND_SERVICE并且该文件是脚本,我是否必须setcap(8)在启动该脚本的解释器上设置功能()还是足以在脚本文件上设置功能()本身? 注意:该问题特别涉及Scientific Linux 6.1,但我认为可以普遍回答。
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.