Su

如何以不同的使用者身份執行命令

  • January 7, 2021

是否可以執行命令

  • 參數首先以-(破折號)開頭,例如/usr/bin/echo -n foo
  • 作為不同的使用者和組,例如apache:apache
  • 使用命令su
  • 當登錄外殼設置為/sbin/nologin

我試過:

  • su -s "/usr/bin/echo" -g apache apache -n foo
    • 失敗su: invalid option -- 'n'。看起來第一個參數可能不是以破折號開頭。
  • su -c "/usr/bin/echo -n foo" -g apache apache
    • 失敗nologin: invalid option -- 'c'。如果登錄 shell 是,它看起來-c不能使用/sbin/nologin
su -s /bin/bash -c "/usr/bin/echo -n foo" -g apache apache
  • -s /bin/bash覆蓋 nologin 並允許解釋-c選項的值
  • -c "/usr/bin/echo -n foo"允許避免使用破折號開始的第一個參數

sudo 來救援!

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

引用自:https://unix.stackexchange.com/questions/372850