다른 사용자로 명령을 실행하는 방법

다른 사용자로 명령을 실행하는 방법

명령을 실행할 수 있습니까?

  • 매개변수는 -먼저 (대시)로 시작합니다./usr/bin/echo -n foo
  • 다른 사용자 및 그룹으로, 예를 들어apache:apache
  • 명령 사용su
  • /sbin/nologin로그인 쉘이 ? 로 설정된 경우

나는 시도했다:

  • su -s "/usr/bin/echo" -g apache apache -n foo
    • display 실패합니다 su: invalid option -- 'n'. 첫 번째 매개변수가 대시로 시작되지 않는 것 같습니다.
  • su -c "/usr/bin/echo -n foo" -g apache apache
    • nologin: invalid option -- 'c'로그인 쉘이 -c작동하지 않는 것 같으면 표시에 실패합니다 ./sbin/nologin

답변1

su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
  • -s /bin/bashnologin을 무시하고 -c옵션 값 해석을 허용합니다.
  • -c "/usr/bin/echo -n foo"대시로 시작하는 첫 번째 인수를 피할 수 있습니다.

답변2

Sudo가 구하러 옵니다!

sudo -u <user> -g <group> -- echo -n foo

답변3

사용자의 로그인 쉘이 로 설정된 경우 /sbin/nologin사용자는 로그인할 수 없으며 su -일반적으로 작동하지 않습니다.

그러나 su -m현재 사용자의 환경과 로그인 셸을 유지하도록 선택할 수 있습니다.

su -m <user> -c "<command>"

예를 들어:

su -m apache -c "echo hello; id"

인쇄:

hello
uid=33(apache) gid=33(apache) groups=33(apache)

관련 정보