フォルダを作成しました/hello
。フォルダには次の権限があります。
Owner = rwx
Group = rwx
Others = r
そしてフォルダはグループ所有であり、john
グループに属しますsales
。名前の異なるユーザーを作成してdavid
グループに追加しましたsales
。
現在生成されたファイルはjohn
次のとおりです。
Owner = rw
Group = rw
Others = r
生成されたファイルはdavid
次のとおりです。
Owner = rw
Group = r
Others = r
作成されたファイルには、デフォルトでjohn
このグループに書き込み権限が与えられたくありません。sales
権限を変更しようとしましたが、その結果、david
ディレクトリに書き込めなくなりました。
答え1
まず、/helloへの他の人の読み取りアクセスに関しては、読み取りアクセスがまったく必要なく、/helloへの読み取りアクセスと実行アクセスが必要な場合があります。ディレクトリに対する実行権限は、ユーザーがディレクトリでls操作を実行できることを意味します。 Exec権限なしで読み取ると、他のユーザーがディレクトリ内のすべてのファイルを読み取ることができますが、ファイル名を知っている場合にのみ可能です。これはまれです。
第二に、ジョンが作成したファイルを他の人が常に読むことができれば、Davidはそのファイルを読み取ることを妨げることはできません。
umask コマンドを使用して、ユーザーが作成したファイルのデフォルト権限を設定できます。 JohnとDavidの.bashrc(またはそれに対応するファイル)に次の行を入力します。
umask 7
Johnが/helloにファイルを作成すると、そのファイルはjohnの所有者でありグループになります。
-rw-rw---- 1 john john 0 Jun 28 22:05 foo
Davidはファイルを読み取ることができません。
別の可能性は、グループ名 sales を使用せずに John を David のグループに追加することです。その後、ジョンはDavidのファイルを読み書きできますが、その逆は不可能です。
考慮すべきいくつかの他の興味深い事項があります。 / helloディレクトリにgidフラグを設定することができます。これにより、JohnまたはDavidがファイルを作成すると、それらはsalesグループになります。したがって、両方とも読み書きできます。あなたが要求したわけではありませんが、それがあなたがする方法です。