ユーザーが他のユーザーのホームディレクトリを読み取ることを許可する


10

私はシステム管理の初心者で、権限に関するクエリがあります。というグループがありadministrationます。内部administrationグループ、私は、ユーザーが持っていますuser1user2user3superuser。すべてのユーザーがadministrationグループに属しています。ここで、他のユーザーのディレクトリsuperuserを表示できるように、ユーザーに権限を与える必要があり/homeます。しかし、私はしたくないuser1user2user3本人以外の他のユーザーの自宅を見に。(つまり、の家などuser1しか表示できないはずですuser1)。

ユーザーとグループを作成し、すべてのユーザーをグループに割り当てました。superuser現時点での権限を指定するにはどうすればよいですか?

言い換えれば、私は2つのグループ(たとえばNormalUsersSuperuser)を持つことを考えています。NormalUsersグループは、ユーザーを持つことになりますuser1user2user3Superuserグループは、ユーザーを持つことになりますSuperuser。ここSuperuserで、グループ内のユーザーのファイルにフルアクセスできるようにする必要がありますNormalUsers。これはLinuxで可能ですか?


これは前の質問とどう違うのですか?
Gilles「SO-邪悪になるのをやめる」

前の質問では、/ etc / sudoersファイルを編集して、ユーザーを部分的な管理者にすることをより重視していました。ここでは、ローカルユーザーの権限を変更しようとしています。ええ、それは達成しようとしていることに似ていますが、ここでは別の方法にアプローチしようとしています。
Ramesh 2013

回答:


10

ユーザーが協力的であれば、アクセス制御リスト(ACL)を使用できますuser1への読み取りアクセスを許可する(および友達の)ホームディレクトリにACLを設定しsuperuserます。新しく作成されたファイルのデフォルトのACLと、既存のファイルのACLも設定します。

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 必要に応じて、ファイルのACLを変更できます。

のファイルsuperuseruser1の読み取りアクセスを常に付与したい場合は、bindfsを使用して、異なる権限を持つユーザーのホームディレクトリの別のビューを作成できます。

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

〜superuser / spyglass / user1を介してアクセスされるファイルは誰でも読み取り可能です。権限以外に、のホームディレクトリの~superuser/spyglass/user1ビューがありますuser1。はにsuperuserアクセスできる唯一のユーザーであるため、この恩恵を受けることができるの~superuser/spyglassはだけsuperuserです。


私のシステムでは、権限とユーザー名が入れ替わっていますsetfacl -R -m user:superuser:rx ~user1
オーレリアンOoms

10

ACLを使用して、特定のディレクトリへのアクセスを任意のグループに許可できます。

たとえば、を実行した場合setfacl -m g:dba:rwx /home/foo、どのグループがディレクトリを所有しているかに関係なく、dbaグループのメンバーにはrwx権限が付与されます。

また、「デフォルト」のACL(ディレクトリ内に新しく作成されたオブジェクトのACL)を設定して、このアクセス権も含めることもできます。


そうです、私も同じことがわかりましたが、LDAPユーザーにサーバーでACLを付与するのが良い考えかどうかはまだわかりません。
Ramesh 2013

@Rameshまあ、彼らがシステムのユーザーである場合(nss-ldap、sssdなどを使用しているため)、なぜそれが問題になるのかはわかりません。
derobert 2013

これをテストベッドで再現しようとしていました。ユーザー(fooなど)としてログインすると、「アクセス権は644に設定する必要があります」という警告メッセージが表示されます。この警告は無視できると思います。ただし、ラボのユーザーに、自分のユーザーアカウントが侵害されたことを知らせたくありません。setfaclコマンドでrwxをrだけに変更すると、fooのディレクトリが表示されません。
Ramesh 2013

2
@Ramesh実際にディレクトリを移動するには、+ xが必要です。ディレクトリが644である必要があることを何が言っているのかわかりません。それはばかげています。それは755または同様のはずです。しかし、どちらの場合でも、ユーザーはlsの許可フィールドに+を表示し、getfaclを実行してそれを表示できます。これは秘密ではありません。
derobert '19

申し訳ありませんが、警告メッセージが表示されました。ユーザーの$ HOMEディレクトリはユーザーが所有し、他のユーザーが書き込みできないようにする必要があります。setaclコマンドで書き込み権限を削除したところ、警告メッセージが表示されなくなりました。
Ramesh 2013

0

残念ながら、バニラLinuxでこれを直接行う方法は実際にはありません。

sudoersで、実行を許可する受け入れ可能なコマンドのホワイトリストを使用して、partial-adminsの新しいグループを作成できる場合があります。

ただし、求めていることを正確に達成するには、ApparmorまたはSELinuxを使用して目的を達成する必要があります。残念ながら、これらのツールはどちらも簡単にセットアップして使用することはできず、例はここでの簡単な回答の範囲をはるかに超えています。


1
Linuxは、しばらくの間ACLをサポートしてきました。ACLを使用すると、これを行うことができます。
derobert

ええ、私はその解決策を見つけて答えを更新しました。ただし、サーバーで使用できるかどうか、またLDAPユーザーにも使用できるかどうかはまだわかりません。
Ramesh 2013

@derobert私が理解していることから、アクセスを制限するためにACLを同時に使用しながら、sudoを介して誰かにrootレベルの許可を与えることは不可能です。そのためには、SELinuxまたは別のMACを使用する必要があります。
スイス、

1
OPがユーザーを「スーパーユーザー」と言ったとき、彼は文字通り、ルートではなく、それを意味すると思います。
derobert 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.