
特定のユーザーのパッケージを削除し、他のユーザーが引き続きアクセスできるようにインストールしたままにするにはどうすればよいでしょうか? 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
最初の行はグループを作成し、2 行目はパッケージへのアクセスを必要とするすべてのユーザーに対して繰り返す必要があります。3 行目と 4 行目は、パッケージのすべてのファイルの権限を変更します (ファイル名にスペースが含まれていないことを前提としています)。 しかし、それでもパッケージが壊れる可能性があるしたがって、これを行う際は注意し、変更をロールバックしてください:
apt-get install --reinstall abc