Redhat에서 ksh를 표준 쉘로 설치하십시오: Foolhardy?

Redhat에서 ksh를 표준 쉘로 설치하십시오: Foolhardy?

저는 시스템 관리자는 아니지만 우리 조직에서는 Red Hat Enterprise Linux 6+의 /bin/sh를 /bin/ksh에 대한 하드 링크로 바꾸는 것을 고려하고 있습니다. 이 얼마나 무모한 일입니까?

이 질문의 배경은 우리가 타사 애플리케이션을 AIX 5.3에서 RHEL 6+로 마이그레이션하고 있다는 것입니다. 애플리케이션은 sh를 호출하여 셸 명령을 실행합니다. 쉘 명령 자체는 사용자 정의되며 실제로 Korn 쉘(ksh)용으로 작성되었습니다. IBM이 sh를 ksh에 대한 하드 링크로 제공하기 때문에 이는 AIX에서 작동합니다. 수년에 걸쳐 우리 팀은 수천 개의 사용자 정의 명령을 생성하고 저장했습니다.

Red Hat의 sh는 bash에 대한 심볼릭 링크이기 때문에 이러한 명령 중 일부가 Red Hat에서 실패했음을 발견했습니다. sh로 호출되면 bash는 sh 에뮬레이션 모드로 실행됩니다. 문제는 AIX의 "fake sh"에서 작업했던 ksh 관련 명령(예: print)이 Red Hat의 "fake sh"에서 작동하지 않는다는 것입니다. 우리는 아직 비호환성의 전체 범위를 알지 못합니다.

Korn 셸 학습(ISBN 0-596-00195-9)의 10장에서 Bill Rosenblatt와 Arnold Robbins는 다음과 같이 말합니다. "우리는 대부분의 다른 셸에 적용되지 않는 Korn 셸에 대해 강조하고 싶습니다. 간단히 설치하면 됩니다. 표준 Bourne 셸(예: /bin/sh)과 같습니다." ..."많은 설치에서는 전혀 부작용 없이 이 작업을 수행합니다."

Red Hat에서는 이것이 얼마나 무모한 일입니까? 제가 우려하는 점은 Red Hat 설치 시 시스템이나 타사 스크립트가 sh를 에뮬레이트하는 bash의 능력에 따라 달라질 수 있다는 것입니다. 그렇다면 즉각적인 문제를 해결하기 위해 ksh에 대한 하드 링크를 사용하면 전체 시스템에 알려지지 않은 손상이 발생할 수 있습니다.

답변1

시스템 전체에서 이것은 매우 무모한 일입니다. 이는 sh 호환 동작에 의존하는 시작 스크립트 및 시스템 유틸리티에 많은 손상을 초래할 수 있습니다. Ulrich가 말했듯이, 더 안전한 대안은 chroot를 생성하거나 모든 신규 사용자에 대한 기본 쉘을 /bin/ksh로 설정하는 것입니다. 그러나 이것이 정확히 원하는 작업을 수행하지 못할 수도 있습니다.

관련 정보