他のユーザーとして実行されるスクリプトのコマンドは、実行に10〜15秒かかります。

他のユーザーとして実行されるスクリプトのコマンドは、実行に10〜15秒かかります。

bashスクリプトを起動します(Javaから同期的にガラス魚ユーザー)他のユーザーとしてコマンドを実行します(例:私のユーザー):

#!/bin/bash

echo myPassword | su -c "command" myUser &

glassfishユーザーとしてbashシェルでこのスクリプトを実行すると、コマンドはすぐに実行されます。ただし、Javaでこのスクリプトを実行すると、10〜15秒後にコマンドが実行されます。

ログインセキュリティがタイムアウトしたと思いますか?

これがSELINUXに関連しているかどうか疑問に思います。以下は、Javaプログラム(Glassfish)を起動するコマンドラインです。

/usr/share/glassfish3/glassfish/bin/asadmin start-domain

以下は、asadmin起動スクリプトのSELINUXステータスです。

$ ls -Z /usr/share/glassfish3/bin/asadmin
-rwxr-xr-x. glassfish glassfish unconfined_u:object_r:bin_t:s0  /usr/share/glassfish3/bin/asadmin

実行中: - Centos 6.4のGNU bash、バージョン4.2.53(1)-リリース(x86_64-redhat-linux-gnu) - java 1.6.45 X86_64およびGlassfish 3.1.2.2

更新:@larsksコメントに応答して

SeLinuxが試行モードになっています。スクリプトが実行されると、次の監査ログが生成されます。Javaで:

BEFORE THE COMMAND

type=SERVICE_START msg=audit(1438862733.335:8932): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="fprintd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=USER_AVC msg=audit(1438862733.336:8933): pid=883 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc:  denied  { send_msg } for msgtype=method_return dest=:1.2520 spid=16027 tpid=16026 scontext=system_u:system_r:fprintd_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=dbus  exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'

HERE IS THE 10-15s WAIT

type=USER_AUTH msg=audit(1438862758.408:8934): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:authentication acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'
type=USER_ACCT msg=audit(1438862758.410:8935): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:accounting acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'
type=CRED_ACQ msg=audit(1438862758.411:8936): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:setcred acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'
type=USER_START msg=audit(1438862758.422:8937): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:session_open acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'
type=USER_END msg=audit(1438862758.429:8938): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:session_close acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'
type=CRED_DISP msg=audit(1438862758.429:8939): pid=16026 uid=1001 auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 msg='op=PAM:setcred acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=? res=success'

NOW THE COMMAND HAS BEEN EXECUTED

スクリプトが実行されると、次の監査ログが生成されます。バッシュから:

BEFORE THE COMMAND

type=SERVICE_START msg=audit(1438863622.854:9013): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="fprintd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=USER_AUTH msg=audit(1438863622.877:9014): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'
type=USER_ACCT msg=audit(1438863622.879:9015): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:accounting acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'
type=CRED_ACQ msg=audit(1438863622.879:9016): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'
type=USER_START msg=audit(1438863622.882:9017): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_open acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'
type=USER_END msg=audit(1438863622.888:9018): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_close acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'
type=CRED_DISP msg=audit(1438863622.888:9019): pid=16215 uid=1001 auid=0 ses=1116 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred acct="administrator" exe="/usr/bin/su" hostname=? addr=? terminal=pts/1 res=success'

NOW THE COMMAND HAS BEEN EXECUTED

ベストアンサー1

selinux AVCがある場合は、ツールを使用して特定の操作を許可するようにローカルポリシーを設定できますaudit2allow

# audit2allow -M local -a

local.ppこれにより、監査ログで selinux 拒否を引き起こすすべての動作を許可するポリシー()が生成されます。その後、次のコマンドを実行してモジュールを有効にできます。

# semodule -i local.pp

ファイルからソースコードを見ることができますlocal.te

あなたの質問に対するAVCの結果は次のとおりです。

module local 1.0;

require {
    type fprintd_t;
    type initrc_t;
    class dbus send_msg;
}

#============= fprintd_t ==============
allow fprintd_t initrc_t:dbus send_msg;

おすすめ記事