ssh에서 시작된 쉘 스크립트의 su는 다른 터미널에서 작동합니다.

다트

멍청한 질문으로 미안하지만 내 상황을 설명하는 방법을 모르겠습니다.

Jenkins의 로그가 있습니다.

ssh www.myserver.com '/var/lib/tomcat7/webapps/deploy_webapp.sh'
+ id
uid=1004(jenkins) gid=1004(jenkins) groups=1004(jenkins),107(tomcat7)
+ sudo su tomcat7
+ id
uid=1004(jenkins) gid=1004(jenkins) groups=1004(jenkins),107(tomcat7)

보안상의 이유로 tomcat7 사용자로 myserver에 액세스 할 수 없습니다. "sudo su tomcat7"은 NOPASSWD를 사용하여 / etc / sudoers에이 명령 만 추가했기 때문에 암호없이 작동합니다.

그래서 질문은 : 왜 tomcat7 사용자 에게 su할 수 없습니까?

Pabouk

스크립트 deploy_webapp.sh에 다음 명령 시퀀스가 ​​포함되어 있다고 가정 합니다.

id
sudo su tomcat7
id

거기에서 무슨 일이 일어나나요?

  1. sshdeploy_webapp.sh사용자가 소유 한 프로세스 에서 스크립트 시작합니다 jenkins.
  2. sudo가 새 프로세스로 시작되고 프로세스 소유자가로 변경됩니다 root.
  3. sudo다른 프로세스 su에서처럼 시작 됩니다 root.
  4. suuser tomcat7로 사용자 의 로그인 쉘을 시작하려고합니다 tomcat7.
  5. tomcat7대부분의 경우 대화 형 셸이 구성되어 있지 않습니다 (확인 grep tomcat7 /etc/passwd).
  6. su출구. (이 세션에서는 tomcat7더 이상 소유 한 프로세스가 없습니다 .)
  7. sudo출구. (이 세션에서는 root더 이상 소유 한 프로세스가 없습니다 .)
  8. 마지막으로 id전체 스크립트와 같은 사용자로 실행 deploy_webapp.sh- jenkins. 전체 스크립트가 동일한 사용자로 실행되고 있습니다. 어느 쪽 sudosu그것을 변경 하지 않습니다 .

무엇을 할 수 있습니까?

  1. su필요한 쉘로 전화 하십시오. 예를 들면 :su -s /bin/bash
  2. id에서 소유 한 프로세스 에서 두 번째 실행합니다 tomcat7. 예를 들면 :su tomcat7 -c id

완전한 예제 스크립트 :

id
sudo su tomcat7 -s /bin/bash -c id

요약

실행될 모든 명령 tomcat7su(옵션으로 -c) 시작된 프로세스에서 실행되어야하며 사용자의 로그인 쉘에주의를 기울여야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

쉘 스크립트는 KDE와 터미널에서 다르게 작동합니다.

분류에서Dev

다른 쉘 스크립트에 의해 시작된 쉘 스크립트에서`pwd`를 얻는 방법

분류에서Dev

wget은 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

분류에서Dev

내보내기 변수는 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

분류에서Dev

이 명령은 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

분류에서Dev

쉘 스크립트의 코드는 다른 작업 전에 실행됩니다.

분류에서Dev

Bash 스크립트는 작동하지 않지만 Mac 터미널에서는 스크립트의 명령이 작동합니다.

분류에서Dev

Lua MQTT 게시는 스크립트에서 작동하지 않지만 ESP8266의 터미널에서 작동합니다.

분류에서Dev

쉘 스크립트는 crontab에서 작동하지 않지만 그렇지 않으면 작동합니다.

분류에서Dev

시간 초과는 bash 스크립트의 누적 쉘에서 작동하지 않습니다.

분류에서Dev

Regex는 터미널에서 작동하지만 Perl 스크립트에서는 작동하지 않습니다.

분류에서Dev

코드는 터미널에서 작동하지만 스크립트에서는 작동하지 않습니다.

분류에서Dev

스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

분류에서Dev

스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

분류에서Dev

스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

분류에서Dev

BASH : grep은 쉘 스크립트에서 작동하지 않지만 echo는 올바른 명령을 보여주고 명령 줄에서 작동합니다.

분류에서Dev

grep은 bash 스크립트에서 작동하지만 터미널에서는 작동하지 않습니다.

분류에서Dev

터미널에서 작동하지만 스크립트에서는 작동하지 않습니다.

분류에서Dev

`test` 비교는 현재 쉘에서 스크립트를 소싱 할 때 다르게 작동합니다.

분류에서Dev

Mac 터미널 명령이 쉘 스크립트에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

터미널에서 변수를받는 쉘 스크립트를 작성 하시겠습니까? (~ $ 명령 변수)

분류에서Dev

ssh를 통해 원격으로 로그인 할 때 쉘 스크립트에서 새 그놈 터미널을 시작할 수 없습니다.

분류에서Dev

PHP에서 호출 된 쉘 스크립트는 작동하지 않지만 명령 줄에서 작동합니다.

분류에서Dev

.sh 스크립트는 터미널에서 작동하지만 "터미널에서 실행"을 통해 실행될 때는 작동하지 않습니다.

분류에서Dev

쉘 스크립트를 통해 찾을 수 없지만 터미널에서 작동하는 명령

분류에서Dev

쉘 스크립트를 통해 찾을 수 없지만 터미널에서 작동하는 명령

분류에서Dev

쉘 스크립트는 수동으로 작동하지만 cron에서는 작동하지 않습니다.

분류에서Dev

이 "읽는 동안"이 터미널에서는 작동하지만 쉘 스크립트에서는 작동하지 않는 이유는 무엇입니까?

분류에서Dev

"adb"명령이 macOS 셸 스크립트에서 예상대로 작동하지 않지만 macOS 터미널에서는 제대로 작동합니다.

Related 관련 기사

  1. 1

    쉘 스크립트는 KDE와 터미널에서 다르게 작동합니다.

  2. 2

    다른 쉘 스크립트에 의해 시작된 쉘 스크립트에서`pwd`를 얻는 방법

  3. 3

    wget은 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

  4. 4

    내보내기 변수는 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

  5. 5

    이 명령은 터미널에서 작동하지만 쉘 스크립트에서는 작동하지 않습니다.

  6. 6

    쉘 스크립트의 코드는 다른 작업 전에 실행됩니다.

  7. 7

    Bash 스크립트는 작동하지 않지만 Mac 터미널에서는 스크립트의 명령이 작동합니다.

  8. 8

    Lua MQTT 게시는 스크립트에서 작동하지 않지만 ESP8266의 터미널에서 작동합니다.

  9. 9

    쉘 스크립트는 crontab에서 작동하지 않지만 그렇지 않으면 작동합니다.

  10. 10

    시간 초과는 bash 스크립트의 누적 쉘에서 작동하지 않습니다.

  11. 11

    Regex는 터미널에서 작동하지만 Perl 스크립트에서는 작동하지 않습니다.

  12. 12

    코드는 터미널에서 작동하지만 스크립트에서는 작동하지 않습니다.

  13. 13

    스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

  14. 14

    스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

  15. 15

    스크립트에서 터미널을 시작하고 터미널에서 실행할 다른 스크립트를 실행하는 방법

  16. 16

    BASH : grep은 쉘 스크립트에서 작동하지 않지만 echo는 올바른 명령을 보여주고 명령 줄에서 작동합니다.

  17. 17

    grep은 bash 스크립트에서 작동하지만 터미널에서는 작동하지 않습니다.

  18. 18

    터미널에서 작동하지만 스크립트에서는 작동하지 않습니다.

  19. 19

    `test` 비교는 현재 쉘에서 스크립트를 소싱 할 때 다르게 작동합니다.

  20. 20

    Mac 터미널 명령이 쉘 스크립트에서 작동하지 않는 이유는 무엇입니까?

  21. 21

    터미널에서 변수를받는 쉘 스크립트를 작성 하시겠습니까? (~ $ 명령 변수)

  22. 22

    ssh를 통해 원격으로 로그인 할 때 쉘 스크립트에서 새 그놈 터미널을 시작할 수 없습니다.

  23. 23

    PHP에서 호출 된 쉘 스크립트는 작동하지 않지만 명령 줄에서 작동합니다.

  24. 24

    .sh 스크립트는 터미널에서 작동하지만 "터미널에서 실행"을 통해 실행될 때는 작동하지 않습니다.

  25. 25

    쉘 스크립트를 통해 찾을 수 없지만 터미널에서 작동하는 명령

  26. 26

    쉘 스크립트를 통해 찾을 수 없지만 터미널에서 작동하는 명령

  27. 27

    쉘 스크립트는 수동으로 작동하지만 cron에서는 작동하지 않습니다.

  28. 28

    이 "읽는 동안"이 터미널에서는 작동하지만 쉘 스크립트에서는 작동하지 않는 이유는 무엇입니까?

  29. 29

    "adb"명령이 macOS 셸 스크립트에서 예상대로 작동하지 않지만 macOS 터미널에서는 제대로 작동합니다.

뜨겁다태그

보관