루트 쉘을 기본값 이외의 것으로 설정하는 것은 나쁜 습관입니까?


16

일단 내 유능한 유닉스 / 리눅스 사용자 인 내 친구가 루트의 쉘을 sh 이외의 것으로 설정하면 (예 : bash 또는 zsh) 문제가 발생할 수 있다고 일부 스크립트는 쉘이 sh이고 이상한 것으로 가정하기 때문에 .

그러나 우분투에는 기본 루트 쉘이 bash로 설정되어 있고 Gentoo는 bash도 사용한다고 생각합니다. 누군가 신화를 터뜨릴 수 있습니까?

답변:


12

예. 부팅하는 동안 시스템이 실패하면 루트 셸에 로그인 할 수 있습니다. 별도의 / usr이 있으면 일부 쉘이 성공적으로 시작되지 않을 수 있습니다.

toor비표준 쉘로 계정 (uid 0, gid 0)을 만드는 동안 기본 쉘로 루트를 유지하는 것이 좋습니다.


FBSD 7.2에서 8.0으로 업그레이드 할 때 이런 일이 일어 났고 다시 빌드하는 것을 잊었습니다 bash. 나는 수정을 단일 사용자 모드로 부팅하지만 때문에 그것은 단지 일을 /bin/sh아직 연결되었다 FBSD의의 포크 bourne하지 bash.
gvkv

설치를 명확하게하기 위해 설치한다고 말하고 zsh어떻게 든 /usr손상되면 문제가 있습니까? 하지만 내 시스템이 /bin/sh가리키는 /bin/bash하고 bash, 왜 안 것 자체가 sh영향을받을 수?
phunehehe

1
시스템이 부팅 할 루트 "보증인"의 기본값-업그레이드 안내서는 최소한 루트에 로그인 할 수 있도록주의를 기울입니다. 그러나 다른 경우에는 해당되지 않을 수 있습니다. 해결책은 일상적인 사용을 위해 기본이 아닌 쉘을 사용하여 루트 계정을 복제하고 그대로 루트를 유지하는 것입니다.
Maciej Piechotka

1
zsh/usr/bin/잘못 설치되어 있으면 안됩니다 . 모든 포탄은 안에 있어야합니다/bin
xenoterracide

1
@xenoterracide : 젠투의 zsh는 /bin있지만 일부 파일 은에 보관합니다 /usr/share. 또한 부팅 중에 로그인 하는 동안 문제가 발생했다고 분명히 말했습니다 (일부 서비스가 실패한 경우).
Maciej Piechotka

7

문제가되지 않아야합니다.

쉘 스크립트 파일은 실행되는 쉘을 명시 적으로 인코딩합니다. 첫 번째 줄로 인코딩되거나 다른 프로그램이나 스크립트가 특정 쉘을 실행하고 쉘 스크립트를 인수로 제공합니다.

내가 생각할 수있는 유일한 프로그램은 로그인 프로세스 외에도 사용자 계정 셸 정보를 사용하는 procmail입니다. 사용자가 메일 서버에서 shell / bin / false로 설정하면 정말 재미 있습니다 ... 그러나 일반적으로 procmail을 루트로 실행하지 않습니다.

다른 후보는 루트의 crontab에있는 줄입니다. 나는 crond의 정책이 어떤 쉘을 사용 해야하는지 모르겠다.


$ SHELL은 일반적으로 시작시 crondaemon에 의해 / bin / sh로 설정됩니다.
echox

3

Bourne 쉘용으로 작성된 스크립트는 대부분 문제없이 BASH, ZSH 또는 $ foo에 대해 실행됩니다.

많은 Linux 시스템에는 원래 sh가 설치되어 있지 않으며 대신 / bin / bash에 대한 심볼릭 링크가 있습니다.

일부 스크립트가 쉘이 명시 적으로 숨겨져 있다고 가정하면 다시 작성해야합니다. 스크립트에 필요한 인터프리터를 선택하는 shebang 메커니즘이 있습니다. sh 인 경우 스크립트는 #!/bin/sh첫 번째 행으로 포함되어야 합니다.

이 상황에서는 기본 쉘 설정이 관련이 없어야합니다.


2

루트 쉘을 변경해도 문제가 발생하지 않는다고 생각합니다. 루트의 기본 쉘로 tcsh를 사용하는 일부 유니스 (일부 BSD 변형입니까?)를 기억하는 것 같습니다.

어쨌든 루트 로그인은 거의 없습니다. 일반적으로 자신의 계정에 로그인 한 다음 su 또는 sudo를 root로 로그인합니다.

중요한 것은 루트의 쉘이 가능한 한 적은 수의 종속성을 가져야 시스템 배상 컨텍스트에서 사용할 수 있다는 것입니다. 예를 들어, 정적으로 연결된 루트 쉘을 갖는 것이 좋습니다. 일부 배포판에는 정적으로 링크 된 bash 또는 zsh 또는 sash (많은 표준 유틸리티가 내장 된 쉘)가 제공됩니다. 그러나 복구 CD 또는 USB 드라이브에서 시스템을 쉽게 부팅 할 수있는 경우에는 그렇게 중요하지 않습니다.


의존성 이유로 인해 업그레이드와 같은 큰 시스템 수정으로 인해 문제가 발생하지 않도록 셸을 그대로 두는 것이 좋습니다. 라이브 CD 또는 USB로 쉽게 고칠 수 있다는 데 동의하지만 처음부터 고칠 필요는 없습니다.
phunehehe

1

사용자의 로그인 쉘은 부팅 프로세스에 영향을 미치지 않습니다. 이 쉘을 원하는대로 설정할 수 있습니다. 모든 시스템에 배쉬가있는 것은 아니며 제대로 작동합니다. 또한 /usr/bin/zsh잘못 설치된 경우 모든 시스템 셸이에 있어야합니다 /bin. 그러나 /bin/sh많은 스크립트가 #!/bin/sh일반적으로 bash를 가리키는 것처럼 많은 스크립트가 #!/bin/bashbashism과 그렇지 않은 다른 행동을 사용하기 때문에 bash를 가리키는 것처럼 기본값 이외의 것을 가리 키도록 변경 해서는 안됩니다. zsh또는에서 작업하십시오 dash.


죄송합니다 죄송합니다 내 컴퓨터에 실제로 실수를 모두 bashzsh/bin
phunehehe

0

루트의 기본 쉘로 bash 가 있습니다 . 나는 한동안 zsh 를 사용 했지만 bash 로 돌아갔다 . 사용하는 쉘은별로 중요하지 않습니다.

둘 이상의 사람이 루트 액세스 권한을 가진 경우에만 문제가됩니다. 이 경우 가장 널리 사용되는 쉘이므로 일반적으로 bash 인 '공통 분모'를 선택할 수 있습니다.


0

Solaris / illumos와 관련하여 Solaris Root Shell Mini-FAQ 언급

일부 시스템 관리자는 여전히
Solaris 시스템 에서 루트 쉘을 변경하지 않는 것이 좋습니다 . / usr / lib
에있는 동적
라이브러리에 의존하지 않는 루트에 정적으로 링크 된 쉘이 루트에 필요하다는 이유를 물어보십시오 . 이것은 과거에는 사실 이었지만
오늘날 반드시 그런 것은 아닙니다 . Solaris는 올바르게 구성된 경우 다른 버전의 Unix와 유사하며 루트 또는 다른 계정에 대해 정의한 모든 쉘을 지원할 수 있습니다.

따라서 Solaris 또는 illumos를 사용하는 경우 이외의 쉘을 사용하는 것이 좋습니다 sh.

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