대상 Linux Master(壱)~ CUI/GUI의 강제 종료/재시작 권한 ~

여기서 CUI와 GUI의 강제 종료 및 재부팅 권한을 특정한 그룹에 한정하는 방법에 대해 설명합니다. 일반 사용자가 실수로 시스템을 잃어버리면 번거로우므로 이 설정을 해야 합니다.

컨디션

  • Cent OS 6.8
  • GNOME 2.28.2
  • PAM(/libpam.so) 0.82.2
  • Polkit(pkaction) 0.96
  • 보다 세밀한 환경에서는 블로거을 참조하십시오.
    또한 이번 내용은 블로그의 9, 10, 11회에 상세하게 게재될 것이니 참고하시기 바랍니다.

    [제9회] 타겟 리눅스 주인(1)~sudoers의 관리~


    [제10회] 대상 Linux 마스터(2)~ 권한 제한~


    [제11회] 타겟 Linux 마스터(3)~polkit 설정~


    그룹 정의


    우선 사용자와 그룹을 설정합니다. "users"그룹은 꺼지거나 다시 시작할 수 있는 권한을 부여받을 것입니다. 물리 컨트롤러에서 로그인할 때 사용자에게 권한을 부여받을 뿐만 아니라, sudo에서 루트 권한을 부여할 수도 있습니다. 또한, GUI는 users의 꺼지거나 다시 시작할 수 있습니다.버튼 표시도 손실됩니다.
    준비된 사용자는 다음과 같습니다.
    번호 매기기
    이름:
    전명
    소속 단체
    1
    enryu
    Lost Enryu
    enryu, wheel, users
    2
    bob
    Bob Beck
    bob, users
    3
    alice
    Alice Atanasoff
    alice, guest-users
    CUI에서 설정하고 아래 조작이 이해되지 않는 부분이 있으면 참고하세요.

    Qita: Linux 명령 시작 (3) ~ 사용자 그룹 관리 ~

    $ su -
    # useradd bob -c "Bob Watson"
    # useradd alice -c "Alice Walker"
    # passwd bob
    # passwd alice
    # groupadd guest-users
    # usermod enryu -aG wheel,users
    # usermod bob -aG users
    # usermod alice -aG guest-users
    # groups enryu bob alice
    

    CUI에서 사용 권한 뷰 편집하기


    users 구성원이 관련 명령을 끄는 것을 허용합니다


    sudo에 대한 설정은 /etc/sudoers 라는 파일에 기술되어 있습니다. 편집할 때visudo 명령을 사용합니다. shutdown을 할 수 있는 사용자와 호스트에 대한 제한을 설정하십시오. vi가 시작된 후 /shutdown 'shutdown' 을 검색하십시오.
    vi의 조작을 모르실 때는 여기를 참고하세요.

    Qita: 기억해야 할vi 명령


    /etc/sudoers
    (省略)
    
    ## Allows members of the users group to shutdown this system
    # %users        localhost=/sbin/shutdown -h now
        ↑この行を編集します↓
    %users        localhost=SHUTDOWN
    (省略)
    

    종료 관련 명령 정의


    SHUTDOWN 명령 별칭이 만들어졌습니다. 위에 있는 줄로 돌아가서 별칭을 설정합니다. 명령 모드에서 ?Cmnd_Alias를 누르면 다음 위치로 돌아갑니다.
    /etc/sudoers
    (省略)
    
    ## Drivers
    # Cmnd_Alias    DRIVERS    /sbin/modprobe
    
    # Defaults specification
    
    (省略)
    
    드라이브 아래에 Shutdown을 추가합니다.
    /etc/sudoers
    (省略)
    
    ## Drivers
    # Cmnd_Alias    DRIVERS    /sbin/modprobe
    
    ## Shutdown
    Cmnd_Alias    SHUTDOWN   /sbin/shutdown, /sbin/init, /sbin/halt, /sbin/reboot, /sbin/poweroff
    
    # Defaults specification
    
    (省略)
    
    doers의 설정은 이것으로 끝냅니다. 명령 모드로 돌아가서 :wq 입력하십시오. 오류 정보가 없으면 끝낼 수 있습니다. visudo의 오류가 발생하면 e 편집으로 돌아가서 오류가 있는지 확인하십시오.

    재부팅 및 설정 확인


    sudoers의 설정이 끝난 후에 반영 설정을 다시 시작합니다. su 명령으로 다시 로그인해도 반영됩니다. bob로 로그인해서 다음 명령을 시도해 보십시오.
    $ sudo -l
    (省略)
    User bob may run the following commands on this host:
        (root) /sbin/shutdown, /sbin/init, /sbin/halt, /sbin/reboot, /sbin/poweroff
    
    끝에 있는 것은 이 계정의 sudo 권한이 시작된 명령입니다. bob는 sudo 명령을 사용하여 꺼진 명령을 실행할 수 있습니다.

    CUI(물리적 콘솔)에서 권한 실행


    일반 사용자의 consolehelper 권한 부여


    일반 사용자도 시스템 관리 명령halt,reboot,powerroff를 사용할 수 있습니다.
  • /usr/bin에 명령을 실행하는 바이너리 파일
  • 기호 체인을 통해consolehelper
  • 호출
  • consolehelper에서 호출된 PAM 인증 중pamconsole.so 인증 수행
  • /etc/security/console.응용 프로그램에 명령 이름이 있는 파일
    그렇습니다.
     console.응용 프로그램에서 파일을 삭제하고 PAM의 설정 파일에 루트 권한이 필요하다는 말을 덧붙이는 등 일반 사용자의 권한을 제한할 수도 있다.
    consolehelper는 물리 컨트롤러에 로그인하기만 하면 루트 권한이 필요한 명령을 사용할 수 있어 매우 편리한 기능입니다.

    consolehelper 실행 파일의 권한 변경


    파일의 실행 권한에 관해서는 내가 이전에 말했듯이 ls -l에서 찾을 수 있는 권한, 파일의 소유자, 소유자 그룹에 따라 이 파일에 대한 접근 권한을 결정하고 실행 권한은 그'x'로 표시한다.
    그럼 콘솔 헤일퍼의 실행 권한을 바꿉시다.
    $ sudo chmod -v o-x /usr/bin/consolehelper
    
    이렇게 되면 일반 사용자는consolehelper를 사용할 수 없게 된다.

    파일의 소유자 및 소유자 그룹 수정


    다음 단계에서 파일의 모든 그룹을 변경합니다. chown 명령이나chgrp 명령을 사용하십시오. 여기서chown을 사용하십시오. chown USERNAME:GROUPNAME FILENAME 형식으로 사용하십시오.
    $ sudo chown -v :users /usr/bin/consolehelper
    
    이렇게 하면users그룹은consolehelper를 사용할 수 있습니다.
    su 명령으로 users팀이 아닌 앨리스에 로그인해서halt,reboot의 전체 경로를 보여 주세요.
    $ su alice
    $ which halt reboot
    /sbin/halt
    /sbin/reboot
    
    이어 users팀의 bob에 로그인해 조사를 시도했다.
    $ exit
    $ su bob        # ここでroot権限でsuを使わない.bobのパスワードを入力する.
    $ which halt reboot
    /usr/bin/halt
    /usr/bin/reboot
    
    실행 파일에 대한 접근이 예상대로 제한되었습니다. 루트 권한su를 사용하면/sbin이 표시됩니다.
    이로써 CUI의 강제 종료/재부팅 권한은 users 구성원으로만 제한됩니다.

    GUI의 권한 Polkit 설정


    localauthority에 추가


    마지막으로 Polkit 설정 파일을 추가하십시오./etc/polkit-1/localauthority 이하 추가 설정 파일입니다. 침입 권한이 없는 것 같아서 중간에 들어가면 sudo로 설정 파일을 만듭니다. 또한, cd는 명령이 아니므로 사용할 수 없습니다sudo cd.
    $ cd /etc/polkit-1
    $ sudo vi localauthority/50-local.d/myConsoleKitSystem.pkla
    
    여기는 users만 허락해 주세요.
    myConsoleKitSystem.pkla
    [ConsoleKit]
    Identity=unix-group:users
    Action=org.freedesktop.consolekit.system.*
    ResultAny=no
    ResultInactive=no
    ResultActive=auth_self_keep
    
    신중을 기하기 위해서 나는 각자의 비밀번호를 입력했다.

    기본 정책 변경 내용


    Alice를 비롯한 비 users를 제한하기 위해 아까 myConstore KitSystem.pkla의 최초에 전 사용자를 대상으로 한 설정을 기술하면 되지만 그렇게 되면 제대로 역할을 발휘할 수 없다여섯 번째.users를 제외한 모든 사용자를 쓰는 방법만이 순조롭게 진행될 수 있을 것 같기 때문이다.기본 설정을 변경합니다. 이것은 추천하지 않는 방법입니다. 업데이트할 때 다시 쓰기 때문입니다.
    Polkit을 업데이트할 때는 주의해야 한다.
    기본값은 /usr/share/polkit-1/action 아래에 정의되어 있습니다.
    $ cd /usr/share/polkit-1/action
    $ ls
    
    polkit: disable all users except those in group wheel?
    끄기 관련 정책은 org.freedesktop.consolekit.policy입니다. 루트 권한으로less 명령을 사용해 보세요.
    $ su
    # less org.freedesktop.consolekit.policy
    

    위의 것은 xml 파일의 주문입니다. <policyconfig> 아래의 탭은 Action의 설정입니다. 이것을 보았습니다. allowinactive,allow_ResultActive 등의 설정값에 대한 기본값인 active와 같은 레이블이 있습니다.
    v를 누르면 편집 모드로 이동합니다./allow_active로 검색하면 이 탭에 둘러싸인'yes'와'auth admin keep'등 값을 모두'no'로 바꿔 씁니다. 이 파일에는 모두 4곳이 있습니다.
    완성 후:wqvi를 끝내고less로 돌아가qless를 끝냅니다.
    Alice와 bob 등 사용자를 전환해서 GUI에서 꺼 보십시오. 어때요? 설정이 다 되었습니까?
    이상

    참고 자료

  • #####
  • ##### Red Hat Enterprise Linux 4: 참조 설명서 16장.PAM(Pluggable Authentication Modules)
  • ##### Red Hat Enterprise Linux 4: 참조 설명서 16.4.PAM 설정 파일의 샘플
  • ##### 지금 바로 실천하세요!Linux 시스템 관리 | 맞춤형 PAM
  • ##### 지금 바로 실천하세요!Linux 시스템 관리 | 손쉬운 시스템 관리 도구 사용
  • ##### 9장 PolKit 사용 권한 승인
  • ##### gnome 메뉴에서 꺼짐 제거
  • ##### Polkit - ArchWiki
  • 저도 잘 부탁드립니다.


    polkit: disable all users except those in group wheel?

    좋은 웹페이지 즐겨찾기