관리자가 아닌 사용자가 apt 또는 rpm을 통해 패키지를 설치할 수 있습니까?


13

루트가 아닌 사용자가 apt 또는 rpm을 사용하여 시스템 전체에 패키지를 설치할 수 있습니까?

내가 일하는 곳은 현재 Linux 상자에 오래된 설정이 있으며 관리자는 요청에 따라 사용자를 위해 모든 설치를 수행해야하므로 모든 사용자에게 완전한 sudo 권한을 부여하려고합니다. 이것은 명백한 보안상의 단점이 있습니다. 일반 사용자가 소프트웨어를 설치하고 업그레이드하고 제거 할 수있는 방법이 있는지 궁금합니다.


4
패키지 설치 권한을 부여하면 사용자는 setuid-root 셸을 사용하여 패키지를 설치할 수 있으므로 기본적으로 모든 관리자 권한을 부여한 것입니다.
camh

@camh hrm .. 당신은 검증 된 저장소를 가질 수 있으며, 사용자가 새로운 저장소를 추가하도록 허용하지 않습니다. 또는 apt를 사용하면 .deb 파일에서 패키지를 설치할 수 있습니까? 나는이 더 개념적인 질문 :)의이다하는 심사 REPO 아마 장기적으로 더 많은 작업이 될 것이다 실현
naught101

1
apt-secure(8)"apt-get은 현재 서명되지 않은 아카이브에 대해서만 경고 할 것이며, 향후 릴리스에서는 모든 소스를 패키지에서 다운로드하기 전에 확인해야 할 것"이라고 말합니다. 공격이 얼마나 정교한 지에 따라 리포지토리 소스에 대한 연결을 가로 채서 신뢰할 수없는 패키지를 주입 할 수 있습니다. 그러나 자세한 내용은 해당 매뉴얼 페이지를 참조하십시오. 스레드 모델에 충분한 보안 솔루션이있을 수 있습니다.
camh


답변:


23

sudo로 허용 된 명령을 지정할 수 있습니다. 예를 들어 무제한 액세스를 허용 할 필요는 없습니다.

username ALL = NOPASSWD : /usr/bin/apt-get , /usr/bin/aptitude

이 이름의 실행을 허용 할 sudo apt-getsudo aptitude모든 암호 않고 있지만 다른 명령을 허용하지 않을 것입니다.

당신은 또한 사용할 수있는 패키지 키트 (PackageKit) 과 결합 PolicyKit을 sudo를보다 제어 좀 더 미세한 수준.

사용자가 패키지를 설치 / 제거하도록 허용하면 위험 할 수 있습니다. libc6, dpkg, rpm 등과 같은 필요한 소프트웨어를 제거하는 것만으로 시스템을 쉽게 작동하지 않을 수 있습니다. 정의 된 아카이브에서 임의의 소프트웨어를 설치하면 공격자가 오래되거나 악용 가능한 소프트웨어를 설치하고 루트 액세스 권한을 얻을 수 있습니다. 내 의견으로는 주된 질문은 직원들을 얼마나 신뢰 하는가?

물론 관리자 팀은 꼭두각시, 요리사와 같은 구성 관리 시스템을 사용하거나 시스템을 관리하기 위해 우주 유영을 살펴볼 수도 있습니다. 이를 통해 중앙 시스템에서 시스템을 구성하고 관리 할 수 ​​있습니다.


나는 그것을 내 질문에서 제외했지만 이것을 허용함으로써 암시 된 보안 축소에 대한 의견이 있습니까? 패키지 저장소를 변경할 수 없으므로 전체 sudo 액세스 권한을 얻지 못할 수도 있지만 aptitude (옵션> 환경 설정> "작업을 로그하는 파일")를 사용하여 모든 파일에 쓸 수 있습니다. 심각한 손상이 발생할 수 있습니다. 나는 PolicyKit에 대해 확신이
없다

1
@ naught101 ok 보안에 대한 의견을 추가했습니다. 정책 키트로서의 JFTR은 루트 액세스를 제공하지 않으며 sudo를 사용하는 것보다 덜 문제가 될 것입니다.
Ulrich Dangel

dpkg 또는 rpm에서 쉘을 실행할 수있는 방법이 있습니다. 예를 들어, dpkg는 옵션 파일 중 하나가 상황을 검사하기 위해 쉘을 시작하는 것으로 충돌하는 구성 파일 변경이있을 때 프롬프트 합니다 . sudo를 통해 실행되면 루트로 쉘을 시작합니다. 마찬가지로 도구에서 편집기를 실행할 수 있다면 대부분의 편집기에서 임의의 쉘 명령을 실행할 수 있습니다 (예 : vi의! command).
David Gardner

@ naught101이 블로그에서 설명하는 것처럼 SUID 셸이 포함 된 RPM을 통해 권한 에스컬레이션을 테스트 하려고합니다 . NOPASSWD와 달리 비밀번호 를 입력 하도록하여 sudo를 통한 권한 에스컬레이션
Matt

7

아파트 콘

매뉴얼 페이지에서 :

aptdcon: aptdaemon을 사용하여 소프트웨어 설치 또는 제거와 같은 패키지 관리 작업을 수행 할 수 있습니다. 이 프로그램을 실행하기 위해 루트 일 필요는 없습니다.


1
aptdcon을 실행하기 위해 root / sudo 권한이 필요하지는 않지만 권한이없는 사용자를위한 인증 대화 상자가 즉시 실행됩니다. 방금 우분투에서 테스트했습니다. 권한이 있거나 권한이 부여 된 사용자가 아닌 경우 패키지를 추가 / 제거하지 않습니다.
현자

1
작동하지 않습니다ERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane


1

나는 또한 그런 것을 찾았지만 아무것도 나타나지 않았 으므로이 쉬운 솔루션을 "softwarechannels"로 코딩했습니다.

https://github.com/alfem/softwarechannels

일반 (관리자 아님) 사용자가 제한된 카탈로그에서 패키지를 설치할 수 있도록하는 매우 간단한 시스템입니다.

간단한 텍스트 파일로 '채널'(패키지 그룹)을 정의하고 사용자에게 소프트웨어 채널을 시작할 수있는 권한을 부여하십시오.

유닉스 그룹과 일치하는 채널의 패키지 만 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.