user1과 su - user1 -c "command"를 실행할 때 결과가 다른 이유는 무엇입니까?

user1과 su - user1 -c "command"를 실행할 때 결과가 다른 이유는 무엇입니까?

다음과 같이 실행할 때사용자 1같은 디렉토리(/홈/사용자1/WWW)

[user1@server1 WWW (master)]# touch c

디렉터리에 파일 c를 만듭니다.

[root@server1 WWW (master) ACCEPTATIE SERVER]# su - user1 -c "touch c"

오류가 발생합니다

터치: 'c'를 터치할 수 없습니다: 권한이 거부되었습니다.

왜 그럴까요?

답변1

이렇게 하면 su - username해당 사용자로 전체 로그인이 수행됩니다. 즉, 해당 사용자의 홈 디렉터리로 이동하게 됩니다. 따라서 이 방법으로 실행하면 touch c사용자의 홈 디렉터리에서 명령을 실행하려고 합니다.

-대신 명령줄에서 삭제하세요.

su user1 -c "touch c"

touch c이는 다음과 같이 실행됩니다user1현재의목차.


추측:

su -다른 사용자가 소유한 이름의 파일이 홈 디렉터리에 이미 존재하기 때문에 원래 명령이 실패했습니다 .cuser1

관련 정보