`su` 명령: 권한이 거부되었습니다.

`su` 명령: 권한이 거부되었습니다.

bash에 root로 다음 명령을 입력하면 su -s /bin/bash오류가 발생하지 않습니다.

을 입력하면 su -s /bin/bash -m [MyUserName]오류가 발생합니다.Permission denied.

내가 아는 한, 이것은 문서화와 관련이 있습니다 /etc/bashrc.

읽었습니다: /etc허가가 있습니다, 허가 754가 있습니다/etc/bashrc544

파일 실행을 허용하도록 권한을 변경하는 명령이 많이 있습니다. Q: 실행 권한이 꼭 필요합니까? 왜? 아니면 이 문제를 해결할 수 있는 다른 방법이 있나요?

편집하다

일부는 더 많은 정보를 요청했습니다. 그래서 그들은:

이 명령은 su -s /bin/bash -m [MyUserName]전체 명령에서 추출한 것입니다 su -s /bin/bash -m [MyUserName] /some/path/tomcat/bin/startup.sh -[some] [args].

처음에는 이것이 Tomcat과 관련이 있다고 생각했지만 su -s /bin/bash -m [MyUserName]Tomcat 부분 없이 입력할 수 있으면 문제는 Tomcat 부분이 아닙니다. 내가 아는 한, 전체 명령은 특수 사용자로 명령을 실행하는 데 사용됩니다.

답변1

문제는 귀하의 권한입니다 /etc. 이것들은 있어야 755하고 그렇지 않아야 합니다 754.

전체 오류 텍스트는 다음과 같습니다.

su -s /bin/bash -m roaima
Password: _
bash: /etc/bash.bashrc: Permission denied
I have no name!

이는 시스템이 /etc/passwd홈 디렉터리, 전체 이름 등과 같은 세부 정보를 읽는 데 어려움을 겪고 있음을 나타냅니다.

권한을 수정 /etc하면 문제가 저절로 해결됩니다.

답변2

매뉴얼 페이지 사용:

-m, -p, --preserve-environment
    Preserves  the  whole  environment, ie does not set HOME, SHELL,
    USER nor LOGNAME.

따라서 루트로 'su -m'을 실행하면 bash가 ~/.bashrc를 읽게 되며, 이는 보존된 환경으로 인해 /root/.bashrc로 확장되며 사용자 권한이 없습니다. /etc 및 /etc/bashrc 권한도 잘못되었습니다. /etc의 권한은 755여야 하고 /etc/bashrc의 권한은 644여야 합니다.

관련 정보