问题标签 [selinux]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 你禁用 SELinux 吗?
我想知道这里的人们是否通常在默认情况下启用 SELinux 的安装中禁用它?如果是这样,你能解释为什么,它是什么样的系统,等等?
我想尽可能多地对此发表意见。
linux - 是否可以在进程级别限制 linux 可用的标准流?
我希望能够生成一个只能访问 stdin、stdout 和 stderr 的 linux 进程(不多也不少)。我可以在流程级别本身执行此操作吗?我还含蓄地声明(矛盾修饰法)我不希望生成的进程能够更改流的另一端指向的“事物”。
比喻:
- 该进程有一个来自某个地方的输入管道,它无法更改管道的起始位置,因此它无法控制输入的来源。
- 该进程具有输出和错误管道,它无法更改输出管道的另一端指向的位置,因此它无法控制输出的位置。
- 它无法创建任何新管道。
我目前也在看 SElinux。这是否允许我创建一个只能访问这三个流的进程?谢谢你。
linux - Linux 中的最佳安全实践
在维护 Linux 服务器时,您强烈推荐哪些安全最佳实践?
(即打开防火墙,禁用不必要的服务,提防 suid 可执行文件,等等。)
另外:是否有关于 Selinux 的明确参考?
编辑:是的,我打算把机器放在互联网上,至少有 openvpn、ssh 和 apache(目前,没有动态内容),并为某些人提供 shell 访问。
active-directory - 如果缓存数据存在,LDAP 不会更新
我们有一个 SELinux 客户端,它使用连接到 Active Directory 服务器的 LDAP 对网络用户进行身份验证。由于我们的机器必须“不受限制”地运行,我们必须使用 nscd 来缓存组和密码信息。
这就是问题所在。如果我们在 Active Directory 服务器上更改组信息,然后登录客户端,如果该用户存在缓存,LDAP 似乎会忽略服务器并仅使用缓存的数据。我们能够获得更新的唯一方法是使 passwd 缓存无效。
/etc/nsswitch.conf 的重要部分:
谢谢。
更新:发现strace getent passwd
在读取 /etc/nsswitch.conf 之前会检查 nscd 缓存,因此 nss 的配置无关紧要。
更新 2:今天玩 nss_updatedb 看看它是否有效。到目前为止还没有任何乐趣,尽管这个方法看起来正是我们需要做的。
ruby-on-rails - 如何调试 cron 未执行给定脚本或其他脚本的问题?
我有一个希望每天运行的 Rails 脚本。我知道有很多方法,并且某些人不赞成使用 cron 的script/runner
方法,但它似乎满足了我的需求。
但是,我的脚本没有按计划执行。
我的应用程序位于/data/myapp/current
,脚本位于script/myscript.rb
. 我可以手动运行它而不会出现问题root
:
当我这样做时,特殊日志文件 ( log/myscript.log
) 会按预期记录到:
我将它设置为cron
每天早上 4 点运行。 root
的 crontab:
事实上,它看起来就像在今天早上之前尝试运行的一样!
但是,我的日志文件中没有条目,并且它应该更新的数据也没有得到更新。日志文件权限(作为测试)甚至设置为全局可写:
我在 CentOS 5 上运行。
所以我的问题是...
- 我还能在哪里寻找信息来调试它?
- 这可能是 SELinux 问题吗?是否有我可以设置或更改的安全上下文来解决此错误?
谢谢!
更新
感谢保罗和卢克。事实证明这是一个环境问题,将其捕获stderr
到日志文件使我能够找到错误。
将特定的 Ruby 可执行文件添加到命令中就可以了:
python - 您如何自动化大型项目的启动/调试?
设想:
有一个复杂的软件,手动启动很烦人。我所做的是创建一个 python 脚本来启动可执行文件并附加gdb进行调试。
进程启动脚本:
- 确保设置了环境变量。
- 确保将本地构建目录添加到环境
LD_LIBRARY_PATH
变量中。 - 将当前工作目录更改为可执行文件期望的位置(不是我的设计)
- 使用配置文件启动可执行文件是唯一的命令行选项
- 将可执行文件的输出通过管道传输到第二个日志记录进程
- 记住可执行文件的 PID,然后启动并将 gdb 附加到正在运行的可执行文件。
该脚本有效,但有一个警告。ctrl-c 不会中断被调试者并将控制权返回给 gdb。因此,如果我在没有活动断点的情况下“继续”,我将永远无法再次停止该进程,它必须被另一个 shell 杀死/中断。顺便说一句,运行“kill -s SIGINT <pid>”,其中 <pid> 是被调试者的 pid,确实让我回到了 gdb 的提示符......但是必须以这种方式做事真的很烦人
起初我以为 Python 正在抓取 SIGINT 信号,但情况似乎并非如此,因为我设置了信号处理程序将信号转发给被调试者,但这并不能解决问题。
我已经尝试了对 python 脚本的各种配置(调用 os.spawn* 而不是子进程等)。似乎无论我怎么做,如果 python 启动子进程,SIGINT (ctrl-c) 信号不要路由到 gdb 或子进程。
目前的思路
- 这可能与被调试者和 gdb 需要一个单独的进程组 ID 相关......对此有任何信任吗?
- SELinux 可能的错误?
信息:
- 数据库 6.8
- Python 2.5.2(Python 2.6.1 也存在问题)
- SELinux 环境(向进程传递信号的错误?)
我考虑过的替代方案:
- 设置一个 .gdbinit 文件来完成脚本所做的工作、环境变量和当前工作目录是这种方法的一个问题。
- 手动启动可执行文件并附加 gdb (yuck)
问题: 您如何自动化大型项目的启动/调试?
更新: 我在下面尝试了 Nicholas Riley 的示例,在我家里的 Macintosh 上,它们都允许 cntl-c 以不同的程度工作,在生产 boxen(我现在相信它可能正在运行 SELinux)上它们不...
java - SELinux 和 Java
是否有使用 SELinux 处理 Java 应用程序的最佳实践?是否能够为每个 Java 应用程序配置 SELinux,还是只能处理 VM,因为它会进行最后的系统调用?
java - SELinux、Fedora 和 Trusted Applet 崩溃?
出于某种原因,如果我在启用 SELinux 的 Fedora 11 下运行 Firefox 3.5.x,当我尝试动态嵌入小程序时,我的浏览器会崩溃。在 Windows、Ubuntu 和 Mac 下,提示用户信任签名者,然后信任正在执行的 java 小程序,但在 Fedora 下,我从未看到此提示。如果我禁用 SELinux,我不会收到任何提示,并且小程序会在没有任何通知的情况下嵌入!
记住受信任的小程序可以执行用户程序和操纵用户数据,这变成了一场噩梦。以前有没有其他人不得不处理 SELinux 和 Fedora/SuSE/Linux 以及受信任的小程序?如果是这样,您是如何克服这种不良行为的?
php - PHP 的配置设置“error_log”不起作用
我在这里做错了什么?
我在 .ini 文件中设置了 error_log 以及error_reporting = E_ALL | E_STRICT
.
我还缺少什么?这通常给我。我希望在 .ini 文件中而不是在我的脚本中设置这个。
正在发生的另一件有趣的事情是,当我故意尝试在我的一个脚本中抛出错误时,Apache 会一遍又一遍地重新启动。
这是我发生一次错误后的事件日志。看时间戳。
这已经被问了 1000 次,我在发布之前浏览了不同的帖子,但我还没有找到答案。只要我一直在使用 PHP 编程,这一直是工作的噩梦。
linux - 有没有办法在 Linux 上构建一个没有文本重定位的 libxml2?
下午好,
我在使用 libxml2 时遇到了困难。
我尝试构建 Perl 模块 XML-LibXML,它是我们标准运行时环境的一部分。但是,这次在 RHEL5 机器上安装失败,因为构建过程抱怨缺少 libxml2:
但是,该文件是可用的。开始构建
导致了真正问题的更多证据:
经过一番调查,我发现问题似乎libxml2.so
是由文本重定位造成的:
Ans 因为我们在目标机器上激活了 SElinux,所以链接 libxml.2 失败了!
是否有可能libxml2
正确创建,或者我是否必须要求管理员扭曲 SElinux 以允许重定位?
我真的不敢相信我是唯一一个在 SElinux 处于活动状态的 Linux 上遇到这个问题的人。我错过了什么?
任何帮助表示赞赏!
问候,斯特凡