Làm cách nào để tôi cài đặt một ứng dụng bằng tệp DEB cho một người dùng duy nhất?


33

Khi cài đặt các ứng dụng thông qua trung tâm phần mềm hoặc bằng tệp DEB, chúng thường sẽ được cài đặt toàn hệ thống cho tất cả người dùng.

Có cách nào để cài đặt một ứng dụng chỉ cho một người dùng không?

Câu trả lời:


5

Tùy thuộc vào những gì bạn muốn thực hiện, có thể có nhiều cách khác nhau để thực hiện công việc này (hoặc ít nhất là đưa ra một ngữ nghĩa khó hiểu về chức năng bạn muốn).

Việc cài đặt phần mềm theo nhiều cách giúp giảm tài nguyên hoặc cho phép truy cập vào những thứ đã có trên hệ thống.

Cho dù bạn đang nói về việc cấp quyền truy cập cho máy in hoặc cho phép người dùng thực thi các chương trình trong một thư mục nhất định, vẫn có cách để thực hiện việc này và mặc dù chúng có thể có nguồn gốc từ Ubuntu, nhưng các loại giải pháp này thường (tất nhiên) sẽ được thêm vào sau khi cài đặt .deb.

Đây là hai lớp chung của điều khiển sau cài đặt có thể được thêm vào. Lưu ý rằng, với môi trường phù hợp, ví dụ: khi có chính sách nhóm được kiểm soát chặt chẽ, việc này có thể dễ dàng hơn một khi bạn có hệ thống cơ bản. Những loại quyền này thậm chí có thể được gắn với LDAP hoặc một hệ thống tương tự có thể cấp quyền và xác thực cho mỗi người dùng hoặc nhóm.

Kiểm soát độ nhớt
Tôi đã có một tình huống có lẽ hơi giống mình, nhưng trong trường hợp của tôi, người dùng không (rất) rất tinh vi (tất cả họ đều dưới 7 tuổi). Đối với tôi, chỉ cần ẩn các menu Gnome và loại bỏ các trình khởi chạy trên máy tính để bàn đã hoạt động.

Việc loại bỏ bit thực thi khỏi các thư mục sẽ loại bỏ khả năng các quá trình tìm kiếm hoặc duyệt chúng. Nó có hiệu quả có thể khiến chúng vô hình và khôn ngoan, khiến chúng không khả dụng. Ví dụ, nếu bạn có một chính sách hệ thống mặc định tạo các menu dựa trên quyền truy cập tệp, bạn có thể sử dụng loại giải pháp mỹ phẩm này và sau đó sử dụng nó cho các cài đặt tiếp theo với ít nỗ lực hơn.

Kiểm soát thực thi Việc kiểm
soát tài nguyên có thể được thực hiện thông qua các quyền Unix, hồ sơ apparmor, quyền SELinux, v.v. Có thể có các mức lọc điều khiển khác có thể đi vào hoạt động tùy thuộc vào ứng dụng. Trong trường hợp không có nhiều giải pháp được nhắm mục tiêu hơn, bạn có thể phải viết các hàm bao quanh các chương trình nhất định để kiểm soát người dùng hoặc xử lý quyền truy cập.


3
+1 để phân tách tầm nhìn và khía cạnh kiểm soát thực thi
Takkat

10

Vâng dpkgsẽ không giúp bạn vì đây không phải là mục đích thiết kế của nó. Nó muốn trở thành một cuộc điều tra dân số duy nhất thuộc sở hữu gốc của các gói được cài đặt trên một hệ thống.

Điều duy nhất nhảy vào tâm trí chỉ là giải nén gói và cố gắng đặt các tệp theo cách thủ công trong thư mục nhà.

Tuy nhiên điều này sẽ chỉ làm việc cho một số thứ. Rất nhiều gói được chia thành các khối (tệp thực thi hoặc tập lệnh trong /usr/bin, thư viện /libvà các trang phục khác /usr/share, v.v.) và các vị trí này được mã hóa cứng bởi các tập lệnh xây dựng. Vì vậy, nếu bạn cố gắng và kéo một cái gì đó như thế này vào ~, nó sẽ vỡ. Bạn có thể dành hàng giờ để giải phóng sự phụ thuộc nhưng bạn có thể làm điều gì đó hữu ích với thời gian của mình như tìm ra phương thuốc chữa ung thư hoặc hấp thụ một số vẻ đẹp trên thế giới.

Bạn sẽ làm tốt hơn nhiều chỉ để lấy một phiên bản không được đóng gói từ bất cứ ai viết phần mềm. Hầu như tất cả các phần mềm miễn phí đều có sẵn trong một số dạng lưu trữ nén dưới dạng nguồn, vì vậy hãy lấy nó và chỉ cần xây dựng nó. Bạn không làm make installbước này. Ứng dụng của bạn được xây dựng, chỉ cần đặt nó ở nơi bạn muốn.


1
Đối với tùy chọn cuối cùng: đối với tôi, nó có thể giúp ích trong một số trường hợp (chương trình đơn giản), nhưng thường là gói cài đặt init script /etc/init, tìm tệp cấu hình /etchoặc có một số đường dẫn khác được mã hóa cứng.
sắp xếp

2
Các dự án dựa trên autoconf có thể cho phép thiết lập một thư mục cài đặt tùy chỉnh thông qua ./configure --prefix=$HOME/local.
Ingo Karkat

6

Tôi không biết quá nhiều về chủ đề này, nhưng có vẻ như từ các câu trả lời khác mà bạn có thể cài đặt một gói vào thư mục khác thay vì /với dpkg, sử dụng các --roottham số, và sau đó làm một chrootvới dir mà gói là " được cài đặt "trong (tất nhiên có thể là một thư mục trong thư mục chính của người dùng).

Để cài đặt gói cho người dùng khác root, có thể sử dụng quy trình trên fakechrootthay vì chroot.

Disclaimer : Tôi không cố gắng này, và không có nhiều kinh nghiệm tại thời điểm văn bản với dpkghay chroot, nhưng từ những gì tôi làm biết về những công cụ này, quá trình này chỉ có thể hoạt động được.

Liên kết có thông tin có thể hữu ích cho những người muốn đạt được hiệu quả chrootmà không có rootkhả năng:

Cập nhật

Bây giờ tôi đã thực hiện một chút với những thứ liên quan đến chủ đề này, và tìm hiểu thêm ...

Mảnh vỡ (khối xây dựng môi trường địa phương):

  • Fakechroot - thi đuachroot(1)
  • Debootstrap - Tạo một hệ thống phân cấp hệ thống tệp Debian khác trong một thư mục
  • Fakeroot-NG / fakeroot - Có thể giả vờ là root cho một số thứ
  • EmDebian - Một biến thể debian sử dụng ít không gian hơn và thường được sử dụng trong môi trường chroot
  • binfmt_misc - Có thể chạy các tệp, sử dụng trình thông dịch của chúng, như thể chúng là nhị phân riêng; hữu ích cùng với người dùng qemu để làm việc với các tệp nhị phân (hoặc trong một bản giả (giả)) của các kiến ​​trúc nước ngoài ( scripts / qemu-binfmt-conf.sh đi kèm với mã nguồn QEMU tự động hóa điều này)
  • Không gian người dùng Qemu - Có thể chạy nhị phân của các kiến ​​trúc khác; có thể được sử dụng với một số công cụ này khi chúng không hỗ trợ một số kiến ​​trúc bộ xử lý
  • LwIP - Ngăn xếp mạng TCP / IP có thể chạy từ không gian người dùng

Đầy đủ (nhà cung cấp môi trường địa phương hoàn chỉnh):

  • Chế độ người dùng linux - chạy một hệ thống linux khác như một quy trình / chương trình thông thường
  • Qemu - Chạy một máy tính ảo hoàn chỉnh
  • PRoot - Cung cấp chức năng của chroot(1), mount --bind, binfmt_misc, và chạy mã nhị phân từ kiến trúc khác sử dụng qemu-user-space
  • Không gian tên Linux - Cho phép có đầy đủ root bên trong môi trường cục bộ, khi sử dụng không gian tên người dùng , một tính năng có sẵn trong nhân Linux phiên bản 3.8 trở lên.

Tóm tắt : Bằng cách mô phỏng, hoặc thực sự có, quyền root cục bộ, các gói DEB có thể được cài đặt cho môi trường cục bộ.


3
Vui lòng định dạng lại câu trả lời của bạn hoàn toàn nếu bạn có thông tin mâu thuẫn với thông tin trước đó của bạn (hoặc nếu bạn nghĩ rằng nó bổ sung bất cứ điều gì). Trong nhiều trường hợp, câu trả lời của bạn sẽ rõ ràng hơn nếu bạn viết lại thay vì thêm phần "Chỉnh sửa" hoặc "Cập nhật". Thông tin của bạn rất thú vị, nhưng những phần có thể liên quan nhất sẽ bị kẹt ở phía dưới.
belacqua

@jgbelacqua - định dạng lại, cảm ơn bạn cho tiền boa.
Abbafei

4

Bạn có thể có thể sử dụng --roottùy chọn dpkgđể cài đặt vào thư mục khác. Nhưng có lẽ sẽ gặp vấn đề nếu ứng dụng tìm kiếm công cụ ở những nơi cố định như thế nào /etc.

Nói tóm lại, tôi không nghĩ có một cách dễ dàng.


2

Bạn có thể thay đổi quyền sở hữu tệp thực thi để chỉ một người dùng có thể chạy tệp đó. Sau đó, nếu cần, bạn có thể xóa ứng dụng khỏi menu của những người dùng khác.


1
Một động lực chung cho việc muốn cài đặt một ứng dụng cho một người dùng là để tránh phải sử dụng các đặc quyền quản trị để cài đặt.
ændrük

@ ndrük Nhưng nếu anh ấy đã cài đặt từ .deb, chúng tôi sẽ không thừa nhận đặc quyền quản trị viên?
belacqua

@jgbelacqua Theo hiểu biết của tôi, vâng, cài đặt từ .deb yêu cầu quyền quản trị viên. Nhưng, nói chung, cài đặt một cái gì đó "chỉ cho một người dùng" không bao giờ yêu cầu nâng cao các đặc quyền được sử dụng cho quản trị toàn hệ thống. Ví dụ, tôi thường xuyên cài đặt các chương trình cho riêng mình bằng cách đặt chúng vào ~/bin. Có một sự mơ hồ trong câu hỏi này về việc Takkat muốn hạn chế quyền truy cập / khả năng hiển thị của ứng dụng nhiều người dùng hay anh ta muốn cài đặt ứng dụng một người dùng. Các câu hỏi của bạn và sắp xếp sử dụng cách giải thích trước, và phần còn lại giả định sau.
ændrük

1

Nghi ngờ.

Các cuộc tranh luận chủ yếu là các tài liệu lưu trữ được trích xuất vào thư mục gốc của hệ thống tập tin của bạn khi được cài đặt (cộng với một số cấu hình). Nếu bạn muốn cài đặt chúng chỉ cho một người dùng, bạn cần phải cài đặt chúng vào thư mục / home / user bằng cách nào đó. Ngay cả khi bạn đã làm như vậy, chúng sẽ không hoạt động, vì các nhị phân của ứng dụng sẽ không xuất hiện trong / usr / bin (hoặc sth tương tự) và hệ thống sẽ không tìm thấy chúng nếu bạn cố gắng khởi chạy chúng. Tương tự các thư viện, vv sẽ là vô ích, vì hệ thống sẽ không biết có một nơi nào đó trong / home. Bạn có thể thử cách tiếp cận brute-force và điều chỉnh biến PATH để trỏ đến bất cứ nơi nào bạn trích xuất các tệp từ kho lưu trữ gỡ lỗi, nhưng đó không chỉ là RẤT không an toàn, nhưng có thể gây ra sự cố tương thích (các mục trong menu sẽ không hoạt động, vì Gnome mở rộng các tệp .desktop ở trong / usr / share / ứng dụng).

Hơn nữa, nếu bạn đã cài đặt một gói chỉ dành cho một số người dùng, nó có thể gây ra sự cố phụ thuộc điên rồ, nếu bất kỳ người dùng nào khác cài đặt gói xung đột với gói khác mà bạn đã cài đặt cho riêng mình - và có thể hàng tấn vấn đề liên quan đến quản lý gói khác sẽ xuất hiện.

Tất cả những rắc rối này khiến việc quản lý các gói riêng biệt cho người dùng trở nên vô cùng khó khăn, vì vậy dường như không thể cài đặt chúng chỉ cho một người dùng, vì ý tưởng đằng sau các .deb không đồng ý điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.