Giới hạn truy cập của chương trình (Viber cho Linux) chỉ vào một thư mục nhất định


0

Có thể giới hạn quyền truy cập của chương trình chỉ vào một thư mục nhất định, ví dụ, để chạy Viber trên Fedora và buộc nó chỉ có thể đọc theo /home/username/.local/share/viber/exchange và không có thư mục khác?

Tôi đã quản lý để tạo và chạy Viber như một người khác user:group ( viber:viber ). Khi tôi cố mở từ bên trong các tệp Viber thuộc về tôi hoặc bất kỳ người dùng nào khác, nó không thể đọc được chúng. Mục tiêu đạt được nhưng một phần. Bây giờ, tôi vấp phải một vấn đề khác, đó là Viber Chỉ hoạt động với tin nhắn và khi tôi cố gắng thực hiện cuộc gọi, nó nói rằng nó không thể tìm thấy cả micrô hay loa? Tôi cảm thấy rằng tại sao (tôi chạy X Server (Gnome) như chính mình và Viber như viber:viber ( user:group )) nhưng tôi không chắc chắn làm thế nào để Viber Người dùng sử dụng micrô và loa trong khi chạy máy chủ X dưới tên của tôi?

Có thể, tôi cần thêm viber người dùng cho một nhóm nhất định? Có lẽ có một số cách giải quyết với SELinux? Nếu vậy bạn có thể cung cấp ví dụ chính sách thích hợp? : D

Viber có vẻ là tuyệt vời nhưng nó không phải là nguồn mở và chỉ có Chúa mới biết, mã nguồn của phần mềm được biên dịch trước đó là gì!

Câu trả lời:


2

Sử dụng chroot

Tạo một nhỏ thư mục gốc chứa /bin, /usr, /lib, /tmp và v.v. (tùy theo nhu cầu của bạn), sao chép tất cả nội dung của bạn vào đây root mới , hơn là chạy chroot vào thư mục này.

chroot lệnh là một công cụ Un * x rất cũ, được xây dựng chính xác theo nghĩa này.

Bạn có thể trói buộc thư mục trong thùng đựng hàng bằng cách sử dụng mount --bind.

Có một cái nhìn man chrootman mount!

Ít cố gắng:

ldd /bin/bash 
    linux-vdso.so.1 =>  (0x00007fff3e4b5000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f06290a1000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0628e9d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0628b12000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f06292e8000)


sudo -s

Cảnh báo, từ đó!

mkdir /tmp/test/chrooted/lib64
cp -t /tmp/test/chrooted/lib/x86_64-linux-gnu/ \
    /lib/x86_64-linux-gnu/{libc.so.6,libdl.so.2,libtinfo.so.5}
cp -t /tmp/test/chrooted/lib64 /lib64/ld-linux-x86-64.so.2 
chroot /tmp/test/chrooted

Tôi bị bỏ tù!

ls
bash: ls: command not found

Không có ls lệnh trong /bin!

Sử dụng openvz hoặc là lxc

Bước tiếp theo ảo hóa ánh sáng là để chạy một trong openvz hoặc là lxc (hoặc khác, có thể).

Công cụ này làm khoảng. giống hơn chrootnhưng sử dụng không gian tên kernel bị cô lập . Điều này cho phép bạn mô phỏng giao diện mạng hoặc các thiết bị khác và một số hạn chế về bộ nhớ, cpu và các tài nguyên khác ...

Với loại này ảo hóa ánh sáng , bạn có thể chia sẻ các thư mục theo cách tương tự như sử dụng chroot, bằng cách sử dụng mount --bind (hoặc dưới openvz có thể sử dụng mount -t simfs có thể hữu ích).

Ảo hóa mạnh mẽ

Tiếp theo bạn có thể sử dụng kvm, xen hoặc phần mềm ảo hóa độc quyền khác ...

Nhưng từ đó, chia sẻ thư mục bao gồm một số loại (giả) dịch vụ mạng ...


Tôi nghĩ rằng, sau khi đọc lại câu hỏi của bạn, cách đơn giản nhất là sử dụng chroot. Có thể một bản sao trong mỗi homedir của người dùng. Bạn đã có thể sử dụng liên kết cứng cho rằng: xem cp -l.
F. Hauri

Cảm ơn bạn, F.Hauri! Tôi đã cố gắng làm điều đó trước đây, nhưng trên Fedora thì nó nói: chroot: failed to run command ‘/bin/bash’: No such file or directory?
Ilia Rostovtsev

Bạn phải cài đặt một bản sao của /bin/bash trong env chroot, nhưng bạn cũng sao chép các thư viện đã sử dụng! Hãy thử lệnh ldd /bin/bash để xem những gì cần thiết.
F. Hauri

Tôi đã thử nó! Tôi tạo một thư mục /home/username/viber/chrootSau đó, dưới nó, tôi đã tạo ra bin, lib, home, var, etc. Bên trong của lib Tôi đặt những tập tin đó là đầu ra ldd và bên trong bin tôi đặt bash? Không chắc chắn tại sao nó không hoạt động? Điều gì về quyền của chủ sở hữu? Còn cmd thì sao? Là nó chroot /home/username/viber/chroot? Tôi vẫn nhận được lỗi đó? Tôi có chạy nó như root? Tôi đã làm. Các thiết lập quyền là gì trên các thư mục?
Ilia Rostovtsev

Được rất cẩn thận không phải để chạy Viber với quyền root (sau chroot, bạn sẽ root trừ khi bạn thay đổi người dùng). Vì Viber có lẽ là một ứng dụng GUI, nên nó cũng sẽ có quyền truy cập vào tất cả các cửa sổ hiển thị khác theo mặc định. Để phân tách "dễ nhất" bằng phần mềm ảo hóa, cá nhân tôi sẽ sử dụng QEMU (KVM), nhưng những người khác như VirtualBox cũng hoạt động tốt. Trong các trường hợp khác, tôi cố gắng sử dụng Ứng dụng .
Lekensteyn
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.