"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현재 사용자로 실행되어야 하는 서비스를 다시 시작하면 매번 비밀번호를 입력하는 것이 어리석은 것 같습니다. 실제로 일부 서비스를 다시 시작할 때 비밀번호를 두 번 입력해야 하는 경우도 있습니다. 이것이 기능이라는 데 동의할 수 있습니다.일부init.d 스크립트에서 해야 할 일은 소스 코드를 약간만 수정하는 것 뿐인데, suinit.d 스크립트 소스 코드가 변경되지 않도록 레벨에서 어떻게든 수정될 수 있지 않을까 생각합니다.

답변1

예, 보안이 이유이며, 아니요, su이 문제를 해결할 방법이 없습니다. 그러나 sudo원하는 용도로 사용할 수 있으며 비밀번호 입력 필요성을 비활성화할 수 있는 구성 파일이 있습니다.

또한 보안을 완전히 손상시키지 않고 매우 특정한 명령에 대해서만 암호를 비활성화할 수 있도록 복잡한 구성을 허용합니다.

su/etc/pam.d/su인증을 위해 주로 pam을 사용하며, 한 줄 수정 및 추가 가능

auth sufficient pam_succeed_if user = <put username here> quiet

su이 줄을 추가하면 지정된 사용자로 실행할 때 비밀번호를 입력할 필요가 없습니다.

답변2

우선, su당신이 스스로에게 하고 싶은 일은 정말 이상한 일입니다. 왜 이렇게 해야 하는지 이유를 생각하기 어렵기 때문에 근본적인 것을 오해하고 있는 것은 아닌지 걱정됩니다.

둘째, su시스템이 PAM을 사용하는 경우 비밀번호 프롬프트는 실제로 PAM에 의해 제어됩니다(대부분의 비밀번호 프롬프트와 마찬가지로). 물론 이는 모든 주요 Linux 배포판에 해당됩니다. 예를 들어, 이것은 /etc/pam.d/su내 데비안 컴퓨터의 상단입니다:

#
# 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" ]

나는 이것이 보안에 미치는 영향을 확신할 수 없다는 점을 다시 강조하고 싶습니다.

관련 정보