su를 사용하여 www-data로 명령을 실행할 수 없습니다


14
# su -l www-data ./http-app.py
This account is currently not available.
# su -l www-data -c ./http-app.py
This account is currently not available.
# su -c ./http-app.py www-data 
This account is currently not available.
# su -lc ./http-app.py www-data 
This account is currently not available.
# getent passwd www-data 
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# getent shadow www-data 
www-data:*:16842:0:99999:7:::
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:        8.6
Codename:       jessie

나의 문제점은 무엇입니까 suwww-data? 예전에는 ...

아마도이 때문에입니다 /usr/sbin/nologin,하지만 어떻게 나는 드롭 root(시스템에 다른 서비스를 손상시키지 않고,이 스크립트 nologin에 의해 선택되었다 Debian좋은 이유, 내가 믿고 싶어 위해 팀)?

답변:


19

토론없이 su대를 sudo당신은 추가 시도 할 수 -s /bin/sh명령 줄에. (데비안 맨 페이지 웹 서버가 작동하지 않아서이 옵션을 jessie에서 사용할 수 있는지 확인할 수 없습니다 : https://manpages.debian.org/ )


나는 이것이 /bin/sh기본적으로 사용되는 것으로 잘못 가정했으며 -s변경 /bin/bash하거나 이와 유사한 경우에만 옵션을 지정해야합니다 .
NarūnasK

3
고마워, 그것은 데비안 9 su www-data -s /bin/sh에서 루트 타입으로 돌아갑니다 su.
PJ Brunet

4
@PJBrunet- "루트로 돌아가려면"(루트에서 나온 것으로 가정) "exit"를 입력합니다. 새로운 루트 쉘을 시작하려면 su를 입력하십시오.
ChronoFish

31

당신이 사용하는 su"스위치 사용자"로 사용된다. 물론 www-data로그인에 사용할 수없는 사용자 계정 이기 때문에 작동 하지 않습니다. 당신은 그것을 말했다 : /usr/sbin/nologin.

아마 당신이 원하는 것은 sudo"다른 사용자로 명령을 실행"하는 데 사용됩니다.

sudo -u www-data ./http-app.py

나는 항상 su이 목적으로 사용했고 항상 작동했습니다. sudo설치할 여분의 패키지이지만, 맞습니다. 원하는 것을 달성하기 위해 사용할 수 있습니다.
NarūnasK

1

하나의 명령을 실행하고 싶지 않고 www-data해당 사용자를 위해 일부 항목을 테스트하기 위해 전환하려면 다음 과 같이하십시오.

sudo -u www-data sh

조금 더 짧습니다. [ctrl] + [d]를 사용하여 세션을 종료하거나exit


0

이런 종류의 문제로 옵션을 사용했습니다 -p.

su -pc ./http-app.py www-data

-p : 환경이 보존됩니다. 특이하게도 새 계정으로 로그인하려고 시도하지 않으므로 메시지가 표시되지 않습니다.This account is currently not available. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.