![sudo가 아닌 사용자에게 무인 업그레이드 명령을 부여하는 것이 안전합니까?](https://linux55.com/image/68862/sudo%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C%20%EB%AC%B4%EC%9D%B8%20%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EB%B6%80%EC%97%AC%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%EC%95%88%EC%A0%84%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내가 준 걸 발견했어sudo 권한을 사용하여 sudo가 아닌 사용자가 특정 명령에 액세스하도록 허용. 하지만 내 계획은그들에게 시스템을 실행시키는 것은 apt-get dist-upgrade
안전하지 않습니다루트로 쉘에 액세스할 수 있기 때문입니다. 그러다가 내가 찾았어저 할 수 있어요수동무인 업그레이드 호출을 실행하여 sudo unattended-upgrade -d
.
질문
루트가 아닌 사용자에게 통화 액세스 권한을 부여하는 것이 안전합니까 unattended-upgrade
(예: 루트 쉘에 들어갈 수 없음)? 보안 업데이트(예: 절반만 설치된 패키지 등)를 설치하는 것 외에 다른 결과가 있습니까?
답변1
해결책
- 새 그룹 생성:
groupadd -r updaters
이-r
옵션은 시스템 그룹(예: 0 - 100)을 예약합니다. - 위 그룹에 사용자를 추가합니다:
useradd -G updaters john
,useradd -G updaters sally
. 이를 달성하기 위해 사용자 별칭 섹션을 사용할 수도 있습니다.. 바라보다Sudoer 파일 예시완전한 기능을 갖춘 사용자 별칭 섹션의 경우. 제가 한 방식대로 하면 그룹이 실제로 시스템에 존재하기 때문에 보안이 강화되는 것 같습니다. - 업데이트 프로그램에 대한 명령 목록을 만듭니다.참고: 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-get
dpkg
updaters
- 이는
이제 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 업데이트와 업그레이드의 차이점은 무엇입니까?