bash에 root로 다음 명령을 입력하면 su -s /bin/bash
오류가 발생하지 않습니다.
을 입력하면 su -s /bin/bash -m [MyUserName]
오류가 발생합니다.Permission denied.
내가 아는 한, 이것은 문서화와 관련이 있습니다 /etc/bashrc
.
읽었습니다: /etc
허가가 있습니다, 허가 754
가 있습니다/etc/bashrc
544
파일 실행을 허용하도록 권한을 변경하는 명령이 많이 있습니다. 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여야 합니다.