답변:
당신은에 그렇게 할 수 없다 su
거나 sudo
, 모두가 필요합니다.
sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
관련 부분 man sudo
:
-H The -H (HOME) option requests that the security policy set
the HOME environment variable to the home directory of the
target user (root by default) as specified by the password
database. Depending on the policy, this may be the default
behavior.
-u user The -u (user) option causes sudo to run the specified
command as a user other than root. To specify a uid
instead of a user name, use #uid. When running commands as
a uid, many shells require that the '#' be escaped with a
backslash ('\'). Security policies may restrict uids to
those listed in the password database. The sudoers policy
allows uids that are not in the password database as long
as the targetpw option is not set. Other security policies
may not support this.
su
루트 인 경우 비밀번호를 제공하지 않아도 사용자를 전환 할 수 있습니다. 칼렙의 답변보기
비밀번호없이 /etc/pam.d/su
허용하도록 파일을 수정할 수 있습니다 su
. 이 답변을 참조하십시오 .
당신이 다음에 인증 파일을 수정 한 경우, 그룹의 일부 사용자했다 그 somegroup
수 su
에 otheruser
암호없이.
auth sufficient pam_rootok.so
auth [success=ignore default=1] pam_succeed_if.so user = otheruser
auth sufficient pam_succeed_if.so use_uid user ingroup somegroup
그런 다음 터미널에서 테스트
rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser
sudo 대신 su를 사용하려면 다음과 같이 사용할 수 있다고 생각합니다.
su - <username> -c "<commands>"
-
지정된 사용자의 로그인을 시뮬레이션합니다-c
명령을 실행하고 싶다고 알려줍니다추신. 불행히도이 방법으로 rvm을 사용하여 루비를 설치할 수는 없지만 관련이 없습니다.
sudo
처음 에 추가 해야했으며 그렇지 않으면 비밀번호를 묻습니다.
sudo
. sudo를 함께 예를 들어, 작동 : sudo su - www-data -c "touch /tmp/test"
성공적으로 www가 데이터로 파일 생성
위의 답변은 나에게 실제로 유용하지만 실제 질문에 대답하는 것은 ...
스크립트가 해당 사용자에서 실제로 실행되고 있는지 확인하려면 어떻게해야합니까?-
사용하다:
ps -ef | grep <command-name>
출력에는 스크립트와 스크립트를 실행하는 실제 사용자가 포함되어야합니다. BSD와 같은 시스템 사용자, 예를 들어 MAC은 다음과 같은 정보를 찾을 수 있습니다.
ps aux | grep <command-name>
su
?