「user」で「su -m user command」を使用している場合は、パスワードを要求しませんか?

「user」で「su -m user command」を使用している場合は、パスワードを要求しませんか?

含まれているスクリプトをrootの下で実行すると、su -m user service userservice startパスワードは必要ありません。しかし、ユーザーとして実行すると、user常にパスワードを求められます。本当に迷惑です。セキュリティ上の理由でパスワードの入力を求められますか?su -m user command次のような環境で実行時にパスワードを要求しないようにする方法はありますかuser

編集1:su現在、ユーザーがパスワードを入力するのを避ける必要があるのは、私がインストールした多くのサービスの所有権があるから/etc/init.d/scriptsです。su -m user現在ユーザーとして実行する必要があるサービスを再起動すると、毎回パスワードを入力するのは愚かです。実際には、一部のサービスを再起動するときにパスワードを2回入力する必要があるかもしれません。これが機能であることに同意することができます。一部init.dスクリプトでやるべきことは、ソースコードを少しだけ変更することだけですが、suinit.dスクリプトのソースコードが変更されないようにレベルで何とか変更できないかと思います。

答え1

はい、セキュリティが理由であり、いいえ、suこの問題を解決する方法はありません。ただし、sudo目的の目的で使用でき、パスワード入力の必要性を無効にできる設定ファイルがあります。

また、セキュリティを完全に損なうことなく、非常に特定のコマンドに対してのみパスワードを無効にできるように複雑な構成を可能にします。

su/etc/pam.d/su認証には主にpamを使用し、1行の変更と追加が可能

auth sufficient pam_succeed_if user = <put username here> quiet

suこの行を追加すると、指定したユーザーとして実行するときにパスワードを入力する必要はありません。

答え2

まず、su自分がやりたいことは本当に奇妙なことです。なぜこのようにすべきか理由を考えにくいので、根本的なことを誤解しているのではないかと心配されます。

次に、suシステムがPAMを使用している場合、パスワードプロンプトは実際にPAMによって制御されます(ほとんどのパスワードプロンプトと同様)。もちろん、これはすべての主要なLinuxディストリビューションに当てはまります。たとえば、これは/etc/pam.d/su私のDebianコンピュータの一番上です:

#
# The PAM configuration file for the Shadow `su' service
#

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

コメントアウトされていない最初の行は、ルートにパスワードを要求しない理由です。コメントアウトすると、ルートにパスワードの入力を求められます(おそらく多くのスクリプトが破損する可能性があります)。

現在のユーザーをターゲットユーザーと比較するためのデフォルトのpamモジュールについてはわかりませんが、pam_exec.soを使用してこれを実行できます。次のようなものです(認めます。セキュリティへの影響は不明です)。

auth       sufficient pam_exec.so seteuid quiet /usr/local/sbin/pam-same-user

/usr/local/sbin/pam-same-user次のスクリプトはどこにありますか?

#!/bin/sh

[ "$PAM_USER" = "$PAM_RUSER" ]

私はこれがセキュリティに与える影響を確信できないことを再び強調したいと思います。

関連情報