私のRHEL 7.6サーバーに通常のユーザーがいてSELinuxがオフになっている場合、suコマンドは正しく機能します。ただし、SElinuxをオンにすると、suコマンドは機能しなくなります。私が見つけたPAMソースから
#ifndef HELPER_COMPILE
if (geteuid() || SELINUX_ENABLED)
return PAM_UNIX_RUN_HELPER;
#endif
SELinuxがオンになっている場合は、特別なコマンドを使用してunix_chkpwd
パスワードを確認してください。このコマンドには次のコードがあります。
user = getuidname(getuid());
/* if the caller specifies the username, verify that user
matches it */
if (strcmp(user, argv[1])) {
user = argv[1];
/* no match -> permanently change to the real user and proceed */
if (setuid(getuid()) != 0)
return PAM_AUTH_ERR;
私の場合、userは一般ユーザー名、argv [1]はrootです。この場合、setuid は一般ユーザーの uid に対して実行されます。なぜこれが起こるのか知っていますか? SELinuxがオンになっているときにsuを動作させる方法はありますか?
ベストアンサー1
私のRHEL 7.9システムでは:
semanage login -l | more
Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
これはRHELのデフォルト設定です。これを変更すると、ユーザーがグループsu
内にあっても selinux 適用が機能しない状況が発生します。wheel
私はこれがselinuxを使用してsuに許可されなければならない正しいselinuxタグまたはコンテキストを持つホイールグループユーザーを追加する方法を理解することにつながると信じています。
次のように見えますvisudo
。
%wheel ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
これはv3r4 stigからのもので、これが私が経験したものです。SELinuxがオンの場合、root以外のユーザーにはsu問題が発生します。このセマンティック安全ガイドラインを適用しようとした後。 aを実行setenforce 0
し、su
期待どおりに動作します。 STIGの意味がわからない場合やsemange
コマンドを実行したことがない場合は、これが原因ではない可能性があります。
RHEL 7では、root以外のユーザーが必要な場合は、このグループに参加する必要があると思いsu
ますwheel
。/etc/?
これをキャンセルし、すべてのユーザーを許可できるファイルがどこに設定されているかわかりません。su
しかし、伝統的な単純な面では、ホイールグループのユーザーだけがsuでき、通常は基本的にselinuxとは無関係です。