답변:
달성하고자하는 것에 따라이 작업을 수행하는 다른 방법이있을 수 있습니다 (또는 적어도 원하는 기능에 대한 해킹을 제공하십시오).
여러 가지 방법으로 소프트웨어를 설치하면 자원을 사용할 수있게하거나 이미 시스템에있는 항목에 액세스 할 수 있습니다.
프린터에 대한 액세스 권한 부여 또는 사용자가 특정 디렉토리에서 프로그램을 실행할 수 있도록 허용하는 방법에 관계없이이를 수행하는 방법이 있으며, 우분투 고유의 솔루션이지만 이러한 유형의 솔루션은 일반적으로 .deb 설치 이후에 추가됩니다.
다음은 추가 할 수있는 두 가지 일반 설치 후 제어 클래스입니다. 예를 들어 엄격하게 통제 된 그룹 정책이있는 경우와 같이 올바른 환경이 제공되면 기본 시스템을 구축 한 후에는 더 쉬울 수 있습니다. 이러한 종류의 권한은 사용자 또는 그룹 별 인증 및 권한을 부여 할 수있는 LDAP 또는 유사한 시스템에 연결될 수도 있습니다.
가시성 제어
나는 아마도 다소 비슷한 상황을 겪었지만 내 경우에는 사용자가 (아직) 매우 정교하지 않았습니다 (모두 7 세 미만). 나에게 Gnome 메뉴를 숨기거나 데스크탑 런처를 제거하는 것이 효과가있었습니다.
디렉토리에서 실행 가능 비트를 제거하면 프로세스가 해당 파일을 검색하거나 통과 할 수 없습니다. 효과적으로 보이지 않게하고, 사용자가 사용할 수 없게 만들 수 있습니다. 예를 들어 파일 액세스를 기반으로 메뉴를 작성하는 기본 시스템 정책이있는 경우 이러한 종류의 미용 솔루션을 확보 한 후 추가 노력없이 후속 설치에 사용할 수 있습니다.
실행 제어
리소스 제어는 Unix 권한, apparmor 프로파일, SELinux 권한 등을 통해 수행 할 수 있습니다. 어플리케이션에 따라 다른 레벨의 제어 필터링이있을 수 있습니다. 보다 구체적인 솔루션이없는 경우 사용자 또는 프로세스 액세스를 제어하기 위해 특정 프로그램 주위에 래퍼를 작성해야 할 수도 있습니다.
음 dpkg
이 설계 목표 아니므로 도움이되지 않습니다. 시스템에 설치된 루트 소유의 유일한 패키지 인구 조사가 되길 원합니다.
명심해야 할 유일한 것은 패키지를 추출하고 파일을 홈 디렉토리에 수동으로 배치하는 것입니다.
그러나 이것은 일부 일에만 적용됩니다. 많은 패키지가 청크 (실행 파일 또는 스크립트 /usr/bin
, 라이브러리 /lib
및 기타 복장 /usr/share
등) 로 분할되며 이러한 위치는 빌드 스크립트에 의해 하드 코딩됩니다. 따라서 이와 같은 것을 시도하면 안으로 들어갑니다 ~
. 의존성을 풀기 위해 몇 시간을 할애 할 수 있지만 암 치료법을 찾거나 세계의 아름다움을 흡수하는 것과 같은 시간에 유용한 일을 할 수 있습니다.
소프트웨어를 작성하는 사람으로부터 패키지되지 않은 버전을 가져 오는 것이 훨씬 좋습니다. 거의 모든 무료 소프트웨어는 어떤 형태의 압축 아카이브 형태로 소스로 제공되므로이를 확보하고 빌드하십시오. 당신은 make install
단계를 수행하지 않습니다 . 앱은 빌드되었으므로 원하는 곳에 두십시오.
/etc/init
구성 파일을 /etc
찾거나 다른 경로를 하드 코딩했습니다.
./configure --prefix=$HOME/local
.
나는이 주제에 대해 너무 모른다, 그러나 당신이 다른 디렉토리로 대신 패키지를 설치할 수 있습니다 것을 다른 답변에서 보인다 /
와 dpkg
의 사용 --root
매개 변수를 다음을 chroot
패키지 "이었다 디렉터리에 설치됨 "(사용자의 홈 디렉토리에있는 디렉토리 일 수 있음).
이외의 사용자를위한 패키지를 설치 root
하기 위해 위의 프로세스를 fakechroot
대신 사용할 수 있습니다 chroot
.
면책 조항 :이 시도하지 않았고, 함께 작성시 많은 경험이없는 dpkg
또는 chroot
내가 무엇을하지만,에서 않는 이러한 도구에 대해 알고,이 과정은 단지 수 일을.
기능 이 chroot
없는 효과를 얻고 자하는 사람들에게 유용한 정보가있는 링크 root
:
chroot
fakechroot
)나는 이제이 주제에 대해 다루는 것들로 조금만 수행했으며 더 많은 것을 발견했습니다 ...
조각 (로컬 환경 빌딩 블록) :
chroot(1)
전체 (완전한 로컬 환경 제공자) :
chroot(1)
, mount --bind
, binfmt_misc
, 및 사용하여 다른 아키텍처에서 바이너리를 실행 QEMU 사용자 공간을요약 : 로컬로 루트 권한을 에뮬레이트하거나 실제로 사용하여 로컬 환경에 DEB 패키지를 설치할 수 있습니다.
한 명의 사용자 만 실행할 수 있도록 실행 파일의 소유권을 변경할 수 있습니다. 그런 다음 필요한 경우 다른 사용자의 메뉴에서 응용 프로그램을 제거 할 수 있습니다.
~/bin
. 이 질문에는 Takkat이 다중 사용자 응용 프로그램의 액세스 / 표시를 제한 하려는지 또는 단일 사용자 응용 프로그램을 설치 하려는지에 대한 모호성이 있습니다. 귀하와 배열의 질문은 이전 해석을 사용하고 나머지는 후자를 가정합니다.
못 미더운.
deb는 주로 설치시 파일 시스템의 루트 (및 일부 구성)로 추출되는 아카이브 입니다 . 한 사용자에게만 설치하려면 / home / user 폴더에 설치해야합니다. fe 응용 프로그램 바이너리가 / usr / bin (또는 sth와 유사한)에 들어 가지 않으므로 시스템이 파일을 찾지 않으면 시스템에서 찾지 못하기 때문에 작동하지 않습니다. 마찬가지로 시스템은 / home 어딘가에 있다는 것을 알지 못하므로 라이브러리 등은 쓸모가 없습니다. 당신은 시도 할 수 무차별 접근 방식을 , 그리고 당신이 뎁 아카이브에서 파일의 압축을 푼 곳을 가리 키도록 PATH 변수를 조정하지만 것뿐만 아니라 아주 안전하지 않지만 호환성 문제가 발생할 수 있습니다 (그놈은 .desktop 파일이 / usr / share / applications에 있기 때문에 메뉴 항목이 작동하지 않습니다).
또한 일부 사용자를 위해 패키지를 설치 한 경우 다른 사용자가 자신을 위해 설치 한 다른 패키지와 충돌하는 패키지를 설치하면 다른 패키지 관리 관련 문제가 발생할 수 있습니다.
이러한 모든 문제로 인해 사용자를 위해 패키지를 개별적으로 관리하기가 매우 어려워 지므로 .debs의 아이디어가 허용하지 않기 때문에 한 명의 사용자에게만 패키지를 설치할 수없는 것 같습니다.