web-dev-qa-db-ja.com

ユーザーがファイルを削除できないLinuxドロップフォルダー

私は学校のファイルサーバープロジェクトに取り組んでおり、sambaを使用してフォルダーを共有しています。フォルダーのアクセス許可をいじっていますが、フォルダーのようなドロップのみを作成する方法がわかりません。これは私が達成したいことです:

  • 所有者(サーバーアカウント):フルコントロール(chmod number 7xx)
  • グループ(sambaサーバーにサインインするユーザー):ファイルを配置(ドロップ)するだけです。つまり、フォルダー(chmod number x?x)
  • その他:アクセスなし(chmod number xx0)

さまざまなchmod設定を試してみましたが、期待した結果を達成できませんでした。これも可能ですか?私はたくさんグーグルで検索しましたが、最終的な答えを見つけることができませんでした。

ファイルがフォルダに配置されるたびにファイルにアクセス許可を設定する方法がありますか?

Sambaの設定やその他の情報が必要な場合は、お問い合わせください!

手伝ってくれてありがとう!

1
Bram

この手順を試してください。

共有フォルダーを作成し、適切な権限を付与します。

  mkdir /pathYouWant/share
  chmod 770 /pathYouWant/share

これは、他へのアクセスを与えません。

  chmod +t /pathYouWant/share

chmodマニュアルページ によると、このモード

   The  restricted  deletion  flag  or  sticky  bit is a single bit, whose
   interpretation depends on the file type.  For directories, it  prevents
   unprivileged  users  from  removing or renaming a file in the directory
   unless they  own  the  file  or  the  directory

共有フォルダーで作成されたMarty Friedのファイルには適切なアクセス許可が必要であり、これは samba共有マスク で実現できますsmb.conf

  create mask = 440
  directory mask = 550

Windowsプログラムは、delete readonlyオプションがyesに設定されていない限り、読み取り専用ファイルを削除しようとするべきではありません。

  delete readonly = no

また、共有フォルダー内のすべてのファイルを非表示にする場合:

  veto files = /*/
  delete veto files = no

Sambaマニュアルによると、これらのディレクティブ:

ユーザーが拒否されたファイルを含むディレクトリを削除しようとするとどうなりますか?これは、拒否ファイルの削除オプションの出番です。このブールオプションをyesに設定すると、ユーザーはディレクトリ内の通常ファイルと拒否されたファイルの両方を削除でき、ディレクトリ自体が削除されます。オプションがnoに設定されている場合、ユーザーは拒否されたファイルを削除できません。その結果、ディレクトリも削除されません。ユーザーの観点からは、ディレクトリは空に見えますが、削除することはできません。

この構成の後、残っている唯一の問題は、ユーザーがファイルを表示しなくても、ユーザーが自分のファイルを削除できることです(理由は不明です)。

そこで、_Seppiの提案に従ってタスクを完了することにし、Bram Driesenはファイルの所有権をホストPCに変更するスクリプトを作成しました。

ガイドとして this に従って、ファイルがフォルダーに配置されるたびにスクリプトを起動するためにincronを使用しましたそれを設定します。

1
Lety

残念ながら、あなたの問題はそれほど簡単に解決できません。ユーザーがディレクトリへの書き込み権限を持っている場合、ファイルを削除することもできます。それらを削除できなくても、ファイルをゼロで埋めることができます。これは、ファイルシステムノードではなく、データの削除になります。


私がかつて使用したアイデア:

Cronjobを作成します。これにより、ディレクトリツリー内のすべてのファイル(/home/guest内のすべてのファイルなど)の書き込み許可が拒否されます。

chmod g-w -R /home/guestを単に使用することはできないことに注意してください。これにより、ディレクトリから書き込みビットが削除され、新しいファイルをそこに配置できなくなります。したがって、すべてのファイルを反復処理し、グループ書き込みビットを削除する必要があります。

Cronjobの実行間隔はあなた次第です-当時は10分に設定していました。私はあなたの環境を知らないので、私はあなたに推薦をすることができません。

残念ながら、このスクリプトはもうないので、bashスクリプトを実行して動作させる必要があります。しかし、真剣に、私はこれが効率的な方法であることを疑います。

1
s3lph

ファイルとフォルダーを変更できますが、削除することはできません。

属性を削除するには、次のコマンドを実行します。

ファイルの場合:

Sudo chattr -R -a file.txt

ディレクトリの場合:

Sudo chattr -R -a dir1/
0
Ankitsrivasta