如何删除给定用户的软件包但保留其安装状态以便其他用户仍然可以访问它?我使用的是 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