
Как удалить пакет для определенного пользователя, но оставить его установленным, чтобы другие пользователи могли получить к нему доступ? Я использую Ubuntu 12.10.
решение1
Большинство пакетов устанавливаются в местах и с разрешениями, чтобы они были доступны нескольким пользователям. Так что если толькоупаковкабыл готов позаботиться об этом, установив разрешения и права собственности особым образом, добиться этого путем удаления пакета невозможно.
Пакет может ограничить доступ, установив групповые разрешения для каталогов и исполняемых файлов на rwxr-x---, а для обычных файлов на rw-r--, а также установив групповое владение определенной группой, чтобы лица, не являющиеся членами этой группы, больше не имели доступа.
Вы можете сделать это постфактум для большинства пакетов, так как это не изменит структуругдевещи устанавливаются. Таким образом, пакет все равно найдет все свои компоненты. В зависимости от того, чего именно вы хотите добиться, может быть достаточно просто изменить исполняемые файлы пакета.
Предполагая, что пакет abc
установлен, вы можете сделать что-то вроде следующего (как пользователь root):
addgroup abcusers
adduser user abcusers
dpkg -L abc | xargs find -maxdepth 0 -type f | xargs chown o=
dpkg -L abc | xargs find -maxdepth 0 -type f | xargs chgrp abcusers
Первая строка создает группу, вторую строку нужно повторить для всех пользователей, которым нужен доступ к пакету. Третья и четвертая строки изменяют разрешения на все файлы пакета (при условии, что в именах файлов нет пробелов). Однако это все равно может привести к поломке упаковки.поэтому будьте осторожны, делая это, и/или откатите изменения с помощью:
apt-get install --reinstall abc