sed를 사용하여 AIX에서 /etc/group 업데이트

sed를 사용하여 AIX에서 /etc/group 업데이트

로컬 루트 그룹에 Centrify/AD 계정을 추가해야 합니다. Linux 및 AIX로 구성된 모든 서버에서 AD 계정을 추가해도 "올바른" 방식으로 인식되지 않기 때문에 /etc/group을 수동으로 편집해야 합니다. . 내 Linux 부분이 작동 중입니다.

LGRP=`grep wheel /etc/group`

ACCT="cycoprts"

sed -i "s/${LGRP}/&,${ACCT}/" /etc/group

sed -i "s/${LGRP}/&${ACCT}/" /etc/group

첫 번째 명령은 /etc/group에 기존 항목이 있는 경우 쉼표를 추가하고, 두 번째 명령은 그룹에 다른 사용자가 추가되지 않은 경우 쉼표를 건너뜁니다.

AIX에서 동일한 명령을 테스트할 때(AIX이므로 -i 없이) 다음과 같은 결과를 얻습니다(실제로 테스트를 위해 /etc/group을 사용하지 않고 /etc/test를 "더미" 테스트 문서로 사용합니다).

AGRP=`grep w3b3root /etc/group`

ACCT1="cycorpad"

root@xxxxxxxxxxx:/etc$ sed "s/${AGRP}/&${ACCT1}/" /etc/group
sed: 0602-404 Function /w3b3root:!:16:/&cycorpad/ cannot be parsed**

어떤 아이디어가 있나요?

답변1

첫째, 지원되지 않는 "-i"를 제거하면 결과가 파일에 다시 기록되지 않고 대신 수정 결과를 표준 출력으로 인쇄할 수 있음을 의미합니다.

이 문제를 해결하려면:

AIX 시스템에 "gsed"가 설치되어 있는지 확인하고 AIX에서 sed 대신 gsed를 사용하는지 확인하고 "-i"를 다시 설정하십시오.

또는 sed의 출력을 임시 파일에 쓴 다음 임시 파일을 다시 원본 파일로 옮깁니다.

참고: stdout을 동일한 파일로 직접 리디렉션하지 마십시오. 그렇지 않으면 "sed"가 해당 내용을 보기 전에 파일이 비워집니다.

답변2

GNUism "-i"를 사용하지 마십시오. 이는 POSIX 표준이 sed에 대해 지정하는 부분이 아닙니다. 어쨌든 위험해요.

둘째, 어쨌든 이런 방식으로 /etc/group을 수정해서는 안 됩니다. AIX에는 chuser 명령과 chgrp 명령이 있는데, 이를 사용하도록 권장합니다. 그룹에 사용자를 추가하려면 chuser의 매뉴얼 페이지를 참조하는 것이 좋습니다.

게다가 표준 AIX에는 "휠" 그룹이 없습니다. 이것은 Linux 시스템이 아닙니다! GID가 0인 그룹(당신이 찾고 있는 그룹이라고 가정)을 "시스템"이라고 합니다.

관련 정보