問題タブ [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.
ruby-on-rails - 書き込まれていないログファイル(乗客)
ローカルでは、私のアプリは正常に実行され、ログに書き込まれます。
私の本番サーバーは、Passengerを実行しているApacheサーバーでCentOSを実行しています。デバッグしようとすると、ログファイルが書き込まれていないことに気付きました。私が最初にしたことはchmod0666でしたが、それが機能しないことがわかったとき、apacheログを調べました。私はこれを見つけました:Railsエラー:ログファイルにアクセスできません。/var/www/vhosts/mysite.com/rails/exp/releases/20091124020342/log/production.logが存在し、chmod 0666であることを確認してください。ログレベルがWARNに引き上げられ、出力が問題が発生するまでSTDERRに送信されます。固定されています。
(注:私はcapistranoで展開しています)
とにかく、グーグルで検索して、SELinuxの問題だと言う人を見つけたので、乗客のドキュメントを調べて、これを見つけました:http ://www.modrails.com/documentation/Users%20guide.html#_my_rails_application_8217_s_log_file_is_not_being_written_to
これは基本的にこれを行うと言っています:chcon -R -h -t httpd_sys_content_t / path / to / your / rails / app
ただし、適切なパスを入力すると、次のようになります。操作はサポートされていません。
かなり困惑しています...何かアイデアはありますか?
java - SELinuxはJavaの実行を妨げます
私は最近、かなり基本的なSELinuxがインストールされているシステムにSunJavaをインストールしました。
Debian Etchを実行していて、フリーでないパッケージリポジトリからSunJavaパッケージをインストールしました。
を実行するとsyslogに表示されるエラー通知は次のとおりjava -version
です。
`Feb 9 14:02:40 dev kernel:audit(1265742160.570:4107):avc:denied {execmem} for pid = 9882 comm =" java "scontext = user_u:system_r:unconfined_t:s0 tcontext = user_u:system_r:unconfined_t: s0 tclass = process
2月9日14:02:40devkernel:audit(1265742160.578:4108):avc:denied {execmem} for pid = 9882 comm = "java" scontext = user_u:system_r:unconfined_t:s0 tcontext = user_u:system_r:unconfined_t:s0 tclass = process`
私はグーグルで調べましたが、Javaがexecmem
制約に違反する操作を実行することを許可するSELinuxポリシーを作成する必要があるようです。これは正しい仮定ですか?もしそうなら、私はどのように始めるべきですか?
更新:
Javaの処理を目的としたターゲットポリシーを探して見つけました。次のコマンドを使用してインストールしました。
$ sudo semodule -i /usr/share/selinux/refpolicy-targeted/java.pp
しかし、これは役に立ちませんでした。引き続きsyslogに同じ監査メッセージが表示されます。
selinux - SElinux の完全性チェック
プロセス名でファイルへのアクセスを (SELinux で) チェックするにはどうすればよいですか?
たとえば、次の 2 つのプロセスがあります。
/usr/bin/foo1
/usr/bin/foo2
それらはユーザー名のアカウントで実行されuserA
、ファイルを変更するために開こうとします:
/home/userA/test.txt
ファイルを開こうとすると、それが必要foo1
です-大丈夫です。しかし、foo2
このファイルを開こうとすると、これに関するメッセージが にあります/var/log
。
問題は、両方のプロセスが同じユーザー ID を持っていることです。また、ユーザー名で RBAC を使用することはできません。
apache - SeLinux をオフにしてポート 81 で Apache を実行する
「semanage port -a -t http_port_t -p tcp 81」を実行し、ポート 81 でリッスンするように httpd.conf を変更しました。httpd サービスを再起動した後、動作しません。しかし、デフォルトのポート 80 で動作しています。SeLinux を確認したところ、実際には無効になっています。誰かが私をそこから抜け出すことができますか?
php - PHP 書き込み権限 - FC13
最近 FC13 をインストールし、収集したデータを特定のディレクトリにキャッシュするメカニズムを PHP コードに記述しようとしています (ここでは、/var/www/html/_php_resources/cache と呼びます)。
ファイルを /var/www/html ディレクトリにコピーし、新しいデータに対して実行chown -R apache:apache /var/www/html/*
します。chmod a+w /var/www/html/_php_resources/cache
現時点では、便宜上、グローバル書き込み権限を使用しています。後で権限を調整します。
chmod
またはmkdir
PHP 関数を使用しようとすると、次のようになります。
警告: chmod(): /var/www/html/_include/php/CacheInit.php で許可が拒否されました
また
警告: mkdir(): /var/www/html/_include/php/CacheInit.php で許可が拒否されました
今、SELinux を無効にすると、すべて正常に動作します。問題は、誰かがそのような明示的な制御を持っていないサーバーに移植できるように、SELinux を無効にして実際に正しく権限を設定したくないということです。
例として、私の個人サイトのホストでは、ディレクトリに読み取り/書き込み権限を設定できますが、SELinux ポリシーの変更は許可されません。
ご参考までに:
- uname -r = 2.6.34.7-56.fc13
- * php -バージョン * = PHP 5.3.3
- rpm -qa | grep httpd = httpd-2.2.16-1.fc13
誰か提案はありますか?
php - PHP/Apache から pdftk を呼び出したときに SegFault が発生するのはなぜですか。PHP/CLI または直接ではありません。
/usr/local/bin/pdftk
Apache で PHP から ( 、 、 などを介してshell_exec()
)exec()
呼び出すと、system()
期待どおりに SYNOPSIS メッセージが返されます。
/usr/local/bin/pdftk input.pdf fill_form input.fdf output output.pdf flatten
経由で呼び出すとshell_exec()
、何も返されません。
まったく同じ文字列をコピーしてシェルの同じパスに (apache ユーザーとして) 貼り付けると、output.pdf ファイルが期待どおりに生成されます。
pdftk
コマンドを PHP シェル スクリプト (shebang is ) に移動し#!/usr/bin/php
て実行すると、php script.php
完全に機能します。
そのシェル スクリプトを (stderr を stdout にリダイレクトして) Apache の PHP から ( 経由でshell_exec(script.php);
) 呼び出すと、次の行になります。
コマンド ラインから (PHP 経由または直接) スクリプトを実行すると、問題なく動作します。Apache 経由で PHP を介してスクリプトを実行すると、通知なしで失敗するか、上記の SegFault が発生します。
RHEL4 の PHP 4.3.9 です。私を撃たないでください。ini_set() を使用してメモリを 512M に設定し、apache ユーザーが (fopen() を使用して) すべてのパスに読み取り/書き込みを行い、apache としてログインしていることを確認しました ...
これを見つけるために/var/log/messagesに行ってチェックしました:
注: SELinux を無効にすると、問題が「修正」されました。これは ServerFault の質問に移動しましたか? 30 秒の SELinux アクセス制御の入門書をここで教えてもらえますか?
linux - UNIXプロセスにディレクトリへの排他的RWアクセスを与える
Linuxプロセスを特定のディレクトリにサンドボックス化し、このプロセスにこのディレクトリへの排他的rwアクセスを与える方法はありますか?たとえば、一時的な作業ディレクトリを作成し、その機能をあまり制限せずに、このディレクトリにのみ書き込むことができるように、Pythonまたは別のスクリプトツールなどを起動します。また、このプロセスのみがこのディレクトリからの読み取りにアクセスできます(もちろんスーパーユーザーを除く)。
基本的にユーザーが任意のコードを実行できるWebサービスをサンドボックス化するためにこれが必要です。現在、ソフトウェア自体で認証を行っていますが、最終的にはすべてのプロセスが1つの同じLinuxユーザーとして実行されます。ユーザーがシステムに害を及ぼすことはないが、Webサービスの他のユーザーから保護されているファイルを読み書きするための一時的なプライベート作業ディレクトリを持っている方法が必要になります。
linux - クラスター オン デマンド、つまりレンタル用クラスター
クラスター オン デマンドとは、特定の仕事のためにクラスターをレンタルすることを意味します。現在、クラスターの構築中にクラスター コンピューターを使用する必要があるクライアントがいます。コアごとにクラスターをレンタルする価格と、最小限の期間が必要かどうかを知っている人はいますか? コアあたり 0.50 ドルから 3.00 ドルまでのすべてを見てきました。使用は、少なくとも 20 時間の FDS を使用した火災シミュレーションに使用されます。クラスターには少なくとも 256 コアが必要です。
linux - Apacheから起動されたサブプロセスに対してSELinuxを無効にするにはどうすればよいですか?
私のApacheモジュールは、ヘルパーサブプロセスを起動します。これは、たとえば、次のことを行いますが、これらに限定されません。
- Apacheと通信できるようにソケットを設定します。
- Apacheの終了時に削除される一時的な場所でファイルの読み取りと書き込みを行います。これらのファイルは、たとえば、データがRAMに快適に収まらない場合に、ネットワーク経由で受信した大量のデータを保存するために使用されます。
- ユーザー指定の実行可能ファイルを生成します。CGIに似ています。これらの生成された各プロセスは、独自の専用ユーザーとして実行されます。
ヘルパーサブプロセスはrootとして起動されるため、ファイルの所有権とアクセス許可を管理し、特定のユーザーとしてより多くのプロセスを生成できます。
私のモジュールの一部のユーザーは、RedHatベースのディストリビューションなどのSELinuxがインストールされたシステムで実行されます。SELinuxは通常私のモジュールに干渉します。これまで、ソフトウェアに適切なポリシーを作成する方法がわからないため、システム全体でSELinuxを無効にするように人々に伝えてきました。ドキュメントは非常に分散していて複雑であり、通常はシステム管理者のみを対象としており、ソフトウェア開発者は対象としていません。
正しい方向へのステップとして、SELinuxの最小限のサポートを実装したいと思います。システム全体でSELinuxを無効にすることなく、SELinuxの制約なしにヘルパーサブプロセスを起動する方法を探しています。それを行う方法はありますか?もしそうなら、どのように?
php - ファイルが確実に実行可能であっても、PHP 関数 is_executable が false を返す
PHP 5.3 を使用しています。
getfacl を使用すると、ファイルのパーミッションは次のようになります。
PHP のプログラム実行関数 ( http://www.php.net/manual/en/ref.exec.php ) の使用にも問題があります。
問題のプログラムは wkhtmltopdf で、/usr/bin ディレクトリにあります。
/usr/bin ディレクトリにまったく同じ権限を持つ convert プログラムがあり、is_executable 関数は true を返します。