명령을 실행할 수 있습니까?
- 매개변수는
-
먼저 (대시)로 시작합니다./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'
. 첫 번째 매개변수가 대시로 시작되지 않는 것 같습니다.
- display 실패합니다
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/bash
nologin을 무시하고-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)