
Linux サーバー上に完全に共有されたフォルダーを作成するにはどうすればよいでしょうか。プロジェクト チームのメンバーが、フォルダーにファイルをコピーまたは移動したか、フォルダー内に自分でファイルを作成したか、または他のユーザーがファイルを作成したかに関係なく、すべてのファイルを自分のファイルであるかのように読み書きできるようにしたいと考えています。
これまでに、次のような問題に遭遇しました。
- umaskはシステム全体のレベルでのみ機能し、既存のファイルは無視されます。
- ACLはユーザーがフォルダに移動したファイルを無視します
- inotify は、後で権限を修正するため、一部の Office ドキュメントで問題が発生する可能性があるため、ハックのようです。
chgrp -R projectteam /folder/
パフォーマンス、遅延、バックアップに定期的に問題が発生します。
現在の解決策は、SAMBA 共有を同じサーバーにマウントして有効にすることですforce user
。force group
ただし、複数のプロジェクト グループを管理するのは面倒で、パフォーマンスが低下すると思います。
どのような助言やアイデアでも大歓迎です。私は Debian 10 を実行しています。
ドイツ、ハンブルクよりご挨拶申し上げます
マイケル
答え1
すべてのプロジェクト ユーザーに共通のプロジェクト グループが割り当てられている場合は、プロジェクト ディレクトリ (およびそのサブディレクトリ) に setgid ビットを設定できます。
find /path/to/teamfolder -type d -exec chmod g+s '{}' \;
また、プロジェクト ディレクトリに ACL 権限を次のように設定します。
setfacl -d -m u::rwx,g::rwx,o::r-x /path/to/teamfolder
ディレクトリに setgid ビットが設定されている場合、そのディレクトリ内に作成されたすべてのファイルは、そのディレクトリのグループ所有権を継承します。ACL 権限により、プロジェクト ディレクトリ内に作成されたファイルに、グループの書き込み権限が付与されます。
新しいユーザーは次のように追加できます:
sudo usermod -a -G projgrp newuser
お役に立てれば。
答え2
複数のレイヤーの構成を並べる必要があり、これにより管理が非常に簡単になります。
Abhishek が示唆したように、ディレクトリに setgid ビットを設定すると、新しく作成されたファイルとディレクトリのグループ所有権がデフォルトで継承可能になるため、非常に役立ちます。
ただし、コピーされたファイルは、ご指摘のとおり、所有権を保持します。グループの所有権を再設定するには、incrontab アプローチが適しています。より現代的なアプローチでは、systemd .path ファイルを使用して変更を監視し、対応する .service ファイルを使用して chgrp を実行します。
多数のプロジェクト グループをサポートするように構成することに関する質問に対処するには、次の点を考慮してください。
まず、Samba は認証のみを提供し、ファイル システムのアクセス許可とホスト ユーザー アカウントに依存することを覚えておいてください。
umask を 0002 に設定すると、デフォルトでグループの書き込み権限が許可されます。
各ユーザーのホスト アカウントを作成します。
sudo useradd andreas
sudo useradd beatrix
sudo useradd ciela
管理目的で、ルートとは異なるデータ「スーパーユーザー」を作成します。
sudo useradd oberst
プロジェクトごとにグループを作成します。
sudo groupadd hund
sudo groupadd katz
各プロジェクトのデータ ディレクトリを作成し、権限 (setguid ビットを含む) と所有権を設定します。次の例では、setgid ビット (2) を設定し、スーパー ユーザー oberst と指定されたグループに完全な権限 (7) を与え、その他には権限を与えません (0)。そのため、グループ メンバー以外は読み取り、書き込み、実行できません。
sudo mkdir /srv/hund
sudo chown oberst:hund /srv/hund
sudo chmod 2770 /srv/hund
sudo mkdir /srv/katz
sudo chown oberst:katz /srv/katz
sudo chmod 2770 /srv/katz
ユーザーをグループに追加します:
sudo usermod -a -G hund andreas
sudo usermod -a -G hund beatrix
sudo usermod -a -G katz beatrix
sudo usermod -a -G katz ciela
Samba にユーザーを追加します。
sudo smbpasswd -a andreas
sudo smbpasswd -e andreas
sudo smbpasswd -a beatrix
sudo smbpasswd -e beatrix
sudo smbpasswd -a ciela
sudo smbpasswd -e ciela
smb.conf を編集して共有を作成します。Read-only=no は書き込みアクセスを許可し、browsable=no は他のユーザー (つまり、グループ メンバー以外) が共有を参照できないようにします。有効なユーザー ディレクティブの "@" プレフィックスに注意してください。これは、ホスト グループへの参照によるアクセスを定義します。
[hund]
path=/srv/hund
read only=no
browsable=no
force group=hund
valid users=@hund
[katz]
path=/srv/katz
read only=no
browsable=no
force group=katz
valid users=@katz
これで (おそらく再起動後)、/srv/hund は andreas と beatrix がアクセス (読み取り/書き込み) できますが、ciela はアクセスできなくなり、/srv/katz は beatrix と ciela がアクセス (読み取り/書き込み) できますが、andreas はアクセスできなくなりました。
ユーザーのアクセスを変更するために必要なのは、usermod を使用してグループ メンバーシップを変更することだけです。
もちろん、ホスト アカウントと Samba アカウントのパスワードも設定する必要があります。
これが役に立つことを願っています。