sudo가 아닌 사용자에게 무인 업그레이드 명령을 부여하는 것이 안전합니까?

sudo가 아닌 사용자에게 무인 업그레이드 명령을 부여하는 것이 안전합니까?

내가 준 걸 발견했어sudo 권한을 사용하여 sudo가 아닌 사용자가 특정 명령에 액세스하도록 허용. 하지만 내 계획은그들에게 시스템을 실행시키는 것은 apt-get dist-upgrade안전하지 않습니다루트로 쉘에 액세스할 수 있기 때문입니다. 그러다가 내가 찾았어저 할 수 있어요수동무인 업그레이드 호출을 실행하여 sudo unattended-upgrade -d.

질문

루트가 아닌 사용자에게 통화 액세스 권한을 부여하는 것이 안전합니까 unattended-upgrade(예: 루트 쉘에 들어갈 수 없음)? 보안 업데이트(예: 절반만 설치된 패키지 등)를 설치하는 것 외에 다른 결과가 있습니까?

답변1

해결책

  1. 새 그룹 생성: groupadd -r updaters-r옵션은 시스템 그룹(예: 0 - 100)을 예약합니다.
  2. 위 그룹에 사용자를 추가합니다: useradd -G updaters john, useradd -G updaters sally. 이를 달성하기 위해 사용자 별칭 섹션을 사용할 수도 있습니다.. 바라보다Sudoer 파일 예시완전한 기능을 갖춘 사용자 별칭 섹션의 경우. 제가 한 방식대로 하면 그룹이 실제로 시스템에 존재하기 때문에 보안이 강화되는 것 같습니다.
  3. 업데이트 프로그램에 대한 명령 목록을 만듭니다.참고: Apt-get은 매개변수 전달을 사용합니다. 질문 섹션을 참조하세요. Cmnd_Alias UPDATE_CMDS = /usr/bin/aptitude, /usr/bin/dpkg, /usr/bin/apt-get up*, /usr/bin/apt-get install
    • 이는 dpkg필수 사항입니다 apt-get. 바라보다AskUbuntu: sudoers 파일에 apt-get 추가.
    • apt-get update및 둘 다 필수 apt-get upgrade입니다. 이러한 목적은 모두 glob 모드를 사용하여 달성할 수 있습니다.
    • 위의 동작이 바람직하지 않은 경우 로 aptitude대체할 수 있습니다. 그룹의 사용자가 마우스 클릭으로 오프라인으로 설치하는 것을 원하지 않는 경우...apt-getdpkgupdaters

이제 sudoers 파일에 업데이트를 추가해야 합니다. 질문: visudo및:

Ubuntu의 기본 sudoers 파일(위에 추가됨):

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification
Cmnd_Alias UPDATE_CMDS = /usr/bin/aptitude, /usr/bin/dpkg, /usr/bin/apt-get up*, /usr/bin/apt-get install

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Members of the upgraders group may perform certain upgrade commands.
# If No Password is desired, comment the line below, and see the next option.
%upgraders ALL=UPDATE_CMDS

# Members of the upgraders group may perform certain upgrade commands, 
# WITHOUT A PASSWORD DANGEROUS (uncomment if desired):
#%upgraders ALL=NOPASSWD:UPDATE_CMDS

을 추가하기로 결정했다면 unattended-upgrade읽어보세요.데비안 문서. which unattended-upgrade에 추가할 경로를 결정하는 데 사용됩니다 UPDATE_CMDS. 바라보다질문 부분.


고쳐 쓰다

더 많은 조사를 한 후 블로그 게시물을 찾았습니다.구성 파일에 대해 알아야 할 모든 것: dpkg로 관리되는 구성 파일. 문제는 적절한 변형에 있는 것이 아니라 기본 dpkg구현에 있습니다. 인용하다:

구성 프롬프트 방지

dpkg가 수정한 새 구성 파일을 설치해야 할 때마다(dpkg의 관점에서 삭제된 파일은 수정된 파일의 특별한 경우일 뿐입니다) 업그레이드를 중지하고 응답을 기다립니다. 이는 특히 대규모 업그레이드의 경우 짜증나는 일입니다. 이것이 바로 여러 --force-conf* 옵션을 사용하여 사전 정의된 답변을 dpkg에 제공할 수 있는 이유입니다:

  • --강제 병합: 현재 구성 파일을 수정하지 마십시오. 새 버전은 .dpkg-dist 접미사를 사용하여 설치됩니다. 이 옵션만 사용하십시오. 수정되지 않은 구성 파일도 영향을 받지 않습니다. dpkg가 수정되지 않은 구성 파일을 덮어쓰도록 하려면 --force-confdef와 함께 이를 사용해야 합니다.
  • --새 구성 강제 적용: 항상 새 버전의 구성 파일을 설치합니다. 현재 버전은 .dpkg-old 접미사가 붙은 파일에 저장됩니다.
  • --force-confdef: 가능하다면 dpkg에게 독립적으로 결정하도록 요청하고, 그렇지 않으면 프롬프트를 표시합니다. 이는 dpkg의 기본 동작이며 이 옵션은 주로 --force-confold와 함께 사용됩니다.
  • --필수 인식: 구성 파일이 현재 누락된 경우(예: 실수로 삭제하여) dpkg에 설치를 요청하세요.

이를 알고 블로그에서 지적했듯이 다음을 만들고 /etc/apt/apt.conf.d/local추가할 수 있습니다(예).

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}

그러면 Z옵션이 모두 무시됩니다.


질문

무인 업그레이드는 일반적으로 좋지 않은 생각입니다. 운영 체제가 새 커널이나 제대로 작동하는 드라이버를 손상시키는 업데이트된 드라이버와 같은 예상치 못한 항목을 설치하여 사용자에게 옵션을 제공한다는 생각을 더 높일 수 있기 때문입니다. 여기서 또 다른 문제는 apt-get실행할 옵션을 결정하는 데 인수 전달이 사용되므로 생성한 명령 별칭의 모든 필수 옵션을 전달해야 한다는 것입니다. 각 매개변수를 개별적으로 추가하면 해당 매개변수를 사용할 수 없게 됩니다 dist-upgrade. 당신처럼 나도 sudoers 파일에서 인수를 전달할 수 없다고 생각하며 연구 중에 몇 가지 새로운 사실을 배웠습니다.


인용하다

nixCraft - Howto: Linux 그룹에 사용자 추가
적성 - 우분투 문서
우분투 포럼 - 주제: HowTO: Sudoers 구성
우분투 문서 - 소프트웨어 설치
AskUbuntu - apt-get 업데이트와 업그레이드의 차이점은 무엇입니까?

관련 정보