존재하는 경우 기존 구성 파일에 매개변수를 추가합니다.

존재하는 경우 기존 구성 파일에 매개변수를 추가합니다.

스크립트를 사용하여 기존 값을 기반으로 /etc/pam.d/common-session 파일을 수정하고 싶습니다.

  1. session required pam_mkhomedir.so존재하는 경우 추가하십시오.skel=/etc/skel/ umask=0022
  2. 존재하지 않는 경우 전체 줄을 추가하십시오.session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
  3. 주석(#)이 있으면 주석을 해제하고 규칙 1과 2를 적용합니다.

쉘 스크립트를 사용하여 이를 달성하는 가장 쉬운 방법은 무엇입니까?

답변1

이것이 GNU 솔루션입니다 sed. 이것이 가장 간단한지는 모르겠지만 논리를 약간 단순화했습니다.

#!/bin/bash

if [[ $(grep "session required        pam_mkhomedir.so" $1) ]]
    then  $(sed -i 's/#\?session required        pam_mkhomedir\.so.*/session required        pam_mkhomedir.so skel=\/etc\/skel\/ umask=0022/'  $1)
    else $(sed -i '$ a session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022' $1)

fi

포함하는 줄을 session required pam_mkhomedir.soline 으로 변경합니다 session required pam_mkhomedir.so skel=/etc/skel/ umask=0022. 이는 #\?행이 주석 처리되고(0 또는 1 #) skel 및 umask 옵션이 지정되지 않은 경우를 포함합니다.

그렇지 않고 해당 줄이 없으면 해당 줄이 session required pam_mkhomedir.so skel=/etc/skel/ umask=0022파일 끝에 추가됩니다.

./script.sh /etc/pam.d/common-session$1파일 경로를 변경하면 매개변수를 사용하거나 사용하지 않고 스크립트를 호출할 수 있습니다.

관련 정보