web-dev-qa-db-ja.com

すべてのファイル権限を750に変更せずに、特定のユーザーが/ usr / binでファイルを実行することを禁止することはできますか?

最初の桁をuserとして使用し、2番目の桁をとして使用して、chmodでLinuxの権限を管理する概念を理解していますgroupおよび3番目のother usersas this answer in NIXの権限とファイルタイプについて

5人のユーザーがいるLinuxシステムがあるとしましょう:adminuserauserbusercguest。デフォルトでは、ユーザーuserauserbuserc/usr/bin内のすべてのファイルに対する実行権限を持っているため、これらのユーザーはファイルの755権限。これまでのところ、それは完全に大丈夫です。ただし、ユーザーguestがフォルダー/usr/binでファイルを実行することを禁止したいのですが、chmodを使用して、このフォルダー内のすべてのファイルのアクセス許可を750のように変更することで実現できます。ユーザーのuserauserbusercの権限を台無しにしてしまいます。ファイルの実行も禁止されるからです。

私のコンピューターでは、/usr/bin内のすべてのファイルがグループrootに属しているので、newgroupを作成し、それらすべてのファイルのグループをそれに変更して、userauserbおよびusercnewgroupに追加できます。しかし、それを行うと、システムのデフォルト設定を変更しすぎるように聞こえます。誰かがこの問題を解決するより賢い方法を知っていますか?

あまりにも多くのファイルのアクセス許可を変更する必要がある過度に複雑なソリューションなしに、単一のユーザーがコマンドラインを使用する(またはPATHでファイルを実行する)ことをどのように禁止できますか?

9
Rafael Muynarsk

ACLを使用して権限を削除します。この場合、すべての実行可能ファイルのアクセス許可を変更する必要はありません。実行許可を/usr/bin/から削除するだけで、そのディレクトリの走査を禁止し、その結果、その中のファイルへのアクセスを禁止できます。

setfacl -m u:guest:r /usr/bin

これにより、user guestの権限がディレクトリ/usr/binreadに設定されるため、そのディレクトリをlsにアクセスできますが、そのディレクトリ内にはアクセスできません。

すべての権限を削除することもできます:

setfacl -m u:guest:- /usr/bin
12
muru

あなたは何をしようとしているのですか?システムの標準コマンドの一部のユーザーへの使用を禁止することは、極端に非情な振る舞いです...システムを危険にさらす可能性のあるコマンドは、その中間にあり、セキュリティのために慎重に吟味されています。ファイルへのアクセス許可は、悪意のある試みのほとんどを阻止するはずです。

  • 制限付きのシェルを与えることを検討してください(マニュアルを確認してください。おそらくrbashのような名前が付けられています。ただし、rshは別の種類の動物です!)。ユーザーをかなり効果的にケージに入れます(ただし、気をつけてくださいis脱出する可能性があります!)
  • これがサービスの所有を担当する疑似ユーザーである場合、一般的な方法は、「ユーザー」に/bin/trueなどの何もしないシェルを与えることです(この行の推奨事項については、システムのマニュアルを確認してください)これは特別なプログラムかもしれません; /bin/trueがシェルスクリプトの場合これには使用しないでください)。このようにして、誰かがそのアカウントにログインできた場合、そのセッションはすぐに終了します。
  • それらのchrootを作成するか(ここでも、分割する方法があります)、またはBSDのjailのLinuxコンテナーを使用してそれらを閉じ込め、表示したいものを正確に公開します。ほとんどの制御が、セットアップして最新の状態に保つのは面倒です。
2
vonbrand