루트가 아닌 사용자를위한 소프트웨어를 설치하도록 Software Center를 설정하려면 어떻게해야합니까?


47

루트가 아닌 사용자가 비밀번호를 입력하지 않고 Ubuntu 저장소에서 항목을 설치할 수 있도록 Software Center를 설정하려면 어떻게해야합니까?

보안 관련 사항을 완전히 알고 있으며 위험을 감수 할 의향이 있습니다. Fedora 12는 다음과 같이 제공됩니다. (PolicyKit 구성을 수정함으로써, 나는 믿는다)


5
하늘이 무너진 후 페도라는 뒷받침된다는 점에 유의해야합니다.
Nicholas Knight

그래, 기억 나 한두 명의 사용자 만있는 데스크톱 컴퓨터에서만 의미가 있습니다.
snostorm

Software Center와 같은 일부 응용 프로그램 시장 소프트웨어는 시스템 리포지토리를 변경할 수 있습니다. 패키지 자체 서비스는 위험하지만 신뢰할 수없는 패키지 소스를 추가하는 사용자는 실제로 위험합니다.
Alfonso EM

답변:


36

사용자가 Software Center가 사용하는 aptdaemon 백엔드에 액세스 할 수 있도록 PolicyKit 권한을 수정할 수 있습니다.

dpkg --listfiles aptdaemon/usr/share/polkit-1/actions/org.debian.apt.policyaptdaemon 백엔드에서 가능한 조치를 지정하는 파일 임을 보여줍니다 .

해당 파일을 보면 < action id="">태그가 가능한 작업을 지정합니다. 당신은 아마 싶어 org.debian.apt.install-packages사용자가 아카이브에서 새 패키지를 설치하고, 수 있도록 org.debian.apt.update-cache사용자가 패키지 목록을 업데이트 할 수 있도록.

man pklocalauthorityPolicyKit 작업에 대한 로컬 권한을 설정하는 방법을 확인하십시오 . 다음을 /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla입력하면 로컬 컴퓨터에 로그인 한 모든 사용자가 자신의 비밀번호를 입력 한 후 (관리 그룹에없는 경우에도) 패키지를 설치하고 비밀번호를 입력하지 않고 패키지 캐시를 업데이트 할 수 있습니다.

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes

Kubuntu의 정책 (최소한 Natty 및 Oneiric)은 다음과 같습니다./usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn

Kubuntu에 대한 지침은 내 답변
Lekensteyn

생명의 은인-건배 친구! 나는 Identity=*이것을 askubuntu.com/a/123260 에서 적응시키기 위해 추가 해야 했다 . 또한 더 많은 정책 키트 로그 출력을 얻을 수있는 방법이 /var/log/auth.log있습니까 ( 예 : 다른 로그 파일)? authentication fails메시지 만 받았지만 실패한 이유는 없습니다.
ssc

10

나는 현재 GUI를 통해 그렇게 할 수 있다고 생각하지 않지만 약간 어색하지만 다음과 같이 작동해야합니다. YMMV.

/ etc / sudoers에 다음 행을 추가하십시오 ( sudo visudo파일 편집에 사용 ).

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

그런 다음 특정 사용자를 작성하여 packageinstallers그룹에 추가하면됩니다 .

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

이제 jdoe다음을 수행 할 수 있습니다.

$ sudo apt-get install <some-package>

Software Center의 데스크탑 메뉴 항목을 편집 software-center하여로 명령 을 추가 할 수 있습니다 gksudo.

PolicyKit 을 사용하면 sudo없이 그렇게 할 수 있지만 지금은 이해하지 못합니다.


이것이 시냅틱이나 적성 또는 apt-get에서 설치할 수 있습니까?
snostorm

"/ usr / bin / synaptic"을 목록에 추가하면됩니다. 실제로 "/ usr / bin / software-center"를 목록에 추가하면 작동합니다. 그래도 테스트하지 않았지만 작동하는지 알려 주시면 답변을 업데이트하겠습니다.
lfaraone

나는 그것을 시도 할 것이다. :)
snostorm

이를 위해서는 사용자가 sudo를 사용하여 소프트웨어 센터를 실행하거나 .desktop 파일을 수정해야합니다. PolicyKit을 조정하여 원하는 것을 수행하는 방법에 대한 내 답변을 참조하십시오.
RAOF

동의, 그것은 훌륭한 솔루션이 될 것입니다.
lfaraone

5

RAOF의 답변 은 우분투에만 적용됩니다. 쿠분투는 QAptWorker를 백엔드로 사용합니다 (Natty 및 Oneiric에서 관찰 됨). 비 루트 설치를 허용하려면 /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla다음을 포함 하여 작성하십시오 .

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

관리자가 아닌 일부 사용자가 sudo 액세스 권한을 직접 부여하지 않으면 서 소프트웨어를 설치하도록하려고했습니다. 두 구성 그룹 모두에 다음 줄을 삽입하면됩니다.

Identity=unix-user:some-non-admin-user

권한이 부여되어야하는 그룹이있는 경우 unix-group대신을 사용하십시오 unix-user.


규칙을 다시 적용하기 위해 재부팅했습니다. (재 로그인도 가능할 것입니다.)
Lekensteyn

어떻게해야합니까? 이후에도 sudo -i나는 심지어에 액세스 할 수 없습니다 /etc/polkit-1/localauthority(우분투 17.10) : "디렉토리의 / etc / 폴킷-1 / localauthority을 처리하기 위해 시도하지 않습니다"
JHBonarius

5

패키지 설치를 허용 / 금지 할 수있는 일반 권한 만 필요한 경우 PolicyKit으로 이동하십시오.

불행히도 PolicyKit은 설치할 패키지를 세밀하게 제어 할 수 없습니다. 사용자에게 제한된 응용 프로그램 집합 만 설치할 수있는 권한을 부여하려면 sudo소프트웨어 채널과 같은 것을 사용 하고 설치 해야 합니다.

나는 또한 그런 것을 찾았지만 아무것도 찾지 못했기 때문에 GitHub 에서 사용 가능한 이 쉬운 솔루션 "softwarechannels"를 코딩했습니다.

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

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

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

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