“su”명령에서 사용자 쉘을 무시할 수 있습니까?


9

만약 내가한다면

su - -c 'mkdir bin' user1

그때 나는 얻는다

su: /usr/bin/ksh: No such file or directory

사용자 쉘이로 설정 ksh되어 /etc/passwd있고 ksh설치되지 않았기 때문 입니다.

질문

이 경우 사용자로서 명령을 어떻게 수행합니까?


왜 사용자의 쉘이 존재하지 않는 것으로 설정되어 있습니까?
MDMarra 1

1
/etc/passwdNIS에서 왔습니다.
Sandra

1
잘 설명합니다.
MDMarra

답변:


18

-이후 su를 입력하지 않으면 해당 사용자의 환경이로드되지 않지만 명령은 여전히 ​​해당 사용자로 실행됩니다.


귀하의 실제 문제를 오해 한 것으로 보입니다. 다른 사람들이 말했듯 -s이 실제로 원하는 옵션입니다.


여전히 / etc / passwd에있는 쉘을 사용하려고 시도하는데 더 큰 문제인 것 같습니다.
freiheit

쉘은 $ SHELL 환경 변수에 고유 한 ID를 넣지 만 / etc / passwd는 su가 실행할 쉘을 찾는 위치입니다. `
-`

8

당신이 사용할 수있는:

su -s /bin/sh -c 'mkdir bin' user1

-sSU에 옵션은 / etc / passwd에에 무엇이든 사용에 쉘, 오버라이드 (override)를 지정합니다.

나는 떨어졌다 -프로파일을로드뿐만 아니라, 그것은 아마도 명령에 대한 사용자의 홈 디렉토리로 작업 디렉토리를 변경됩니다, 때문에, 사용자 1의 홈 디렉토리에 현재를 '빈'을하지 만들 거라고, 그래서 명령에서 예배 규칙서.


5

su의 -s /-shell 옵션을 사용하면 사용자 환경의 다른 부분을 유지하면서 사용할 쉘을 선택할 수 있다고 생각합니다. / bin / sh는 posix로 지정되므로 어디서나 사용할 수 있습니다.

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