このシステムのユーザーは注意を払ってumaskを非常に個人的な0077に設定しました。ただし、ユーザーは他のグループメンバー間で明示的に共有できるようにファイルをコピーできるグループ固有のディレクトリを持っていることを望みます。これらの共有ディレクトリは複数ありますが、各ディレクトリはグループによって異なります。
共有のために特定のディレクトリにグループ固定ビットを設定するだけでは不十分です。固定ビットを設定すると、ディレクトリ内のファイルのグループ所有権が正しく設定されますが、そのファイルに対する権限は通常、ファイルを読み取ったり編集したりできないように、つまり実際に共有できないように設定されます。ディレクトリリストにのみ表示されます。これは、一部のユーザーが、読み取りおよび書き込みを許可するために必要なグループ権限の調整を手動で実行する方法を望まないかわからないためです。結局のところ、ユーザーは管理者ではないので、しばらく休むことができます。 アクセス制御リストaclを持たないグループの権限に関係なく、特定のグループが共有ディレクトリのファイルにアクセスできるように指定するために使用できます。完璧なソリューションですが、うまく動作しません。
以下では、共有グループは「customer_gateway」であり、ファイルを共有したいユーザーの例は「svw」です。スクリプトが示すように、svw ユーザーは customer_gateway グループのメンバーです。共有が行われるディレクトリは「customer_gateway/」とも呼ばれます。
以下はaclを使用します。グループ権限、デフォルトグループ権限、マスク、およびデフォルトマスクを設定します。これはディレクトリに作成されたファイルまたはcat(またはtar)を介して移動されたファイルに対しては機能しますが、奇妙なことに、そこに「cp」があるファイルでは機能しません。
# rm -r customer_gateway/
# umask
0077
# cat ~/script1
mkdir customer_gateway
chown :customer_gateway customer_gateway/
chmod g+rwx customer_gateway/
setfacl -m group:customer_gateway:rwX customer_gateway/
setfacl -m d:group:customer_gateway:rwX customer_gateway/
setfacl -m m::rwX customer_gateway/
setfacl -m d:m::rwX customer_gateway/
getfacl customer_gateway
cd customer_gateway
touch cga
cat << EOF > cgb
c g b
EOF
ls -l
# . ~/script1
# file: customer_gateway
# owner: root
# group: customer_gateway
user::rwx
group::rwx
group:customer_gateway:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:customer_gateway:rwx
default:mask::rwx
default:other::---
total 4
-rw-rw----+ 1 root root 0 Mar 2 20:43 cga
-rw-rw----+ 1 root root 6 Mar 2 20:43 cgb
# su - svw
/home/svw/bin:/usr/local/bin:/usr/bin:/bin
(note umask is 0077)
> cd /share/customer_gateway/
> groups
svw adm dip video plugdev google-sudoers customer_gateway
> cat >> cga
e f g
> cat > cgc
c g c
> ls -l
total 12
-rw-rw----+ 1 root root 6 Mar 2 20:44 cga
-rw-rw----+ 1 root root 6 Mar 2 20:43 cgb
-rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc
> ls ~/dat
ta tb tc
> cat ~/dat/ta > ta
> cp ~/dat/tb tb
> ls -l
total 20
-rw-rw----+ 1 root root 6 Mar 2 20:44 cga
-rw-rw----+ 1 root root 6 Mar 2 20:43 cgb
-rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc
-rw-rw----+ 1 svw svw 4 Mar 2 20:45 ta
-rw-------+ 1 svw svw 4 Mar 2 20:45 tb
> getfacl ta
# file: ta
# owner: svw
# group: svw
user::rw-
group::rwx #effective:rw-
group:customer_gateway:rwx #effective:rw-
mask::rw-
other::---
> getfacl tb
# file: tb
# owner: svw
# group: svw
user::rw-
group::rwx #effective:---
group:customer_gateway:rwx #effective:---
mask::---
other::---
>
これは、ディレクトリにファイルが作成されたときにデフォルトの権限を受け取り、共有できることを示します。しかし、ユーザーは常にそこにファイルを作成するわけではなく、通常はそこにファイルをコピーします。
しかし、コピーを作成することも同じです。なぜなら、コピーを作成する前に新しいファイルを作成する必要があるからです。ここでは、許可予約コピーではなく、一般コピーについて話しています。次の形式です。ただし、元のグループの権限に関係なく、ディレクトリで共有されるファイルが機能してコピーされます。
cat < data.in > shared/data.out
うまく機能し、タールパイプを通しても機能しますが、
cp data.in shared/data.out
失敗する。 edcat
ファイルにはデフォルトマスクとデフォルト権限があります。 edcp
ファイルはcp -pのように、aclマスクとグループの権限内で権限を保持するため(そうでない)、有効な権限はaclが設定したものではなく元のファイルのように読み取られます。
2回目の試みでは、グループ固定ビットchmod g + rwxsとfacl変更を使用してこの実験を実行し、まったく同じ結果を得ました。ただし、すべての共有ファイルにグループの所有権が表示されるため、ディレクトリのリストがより美しいです。また、setfaclを使用して実行せずにグループ固定ビットを設定しました。コピーされたファイルにも同じ結果が適用されます(したがって、faclsは共有のためにファイルがコピーされるディレクトリには多少役に立たないようです)。
Linux faclsが生成されたデータのさまざまな形式を区別するための基礎と理由は何ですか? cpが権限を維持するように指示せずに強制的に権限を維持するのはなぜですか?うまくいきますが、cpはうまくいかないtarでキャットとパイピングの違いによる混乱を正当化する理由はありますか?この区別をなくす魔法呪文を逃しているのでしょうか?
この要約は正しいですか? faclsを使用すると、共有ファイルの所有権を克服できます。ファイルを「作成」するとき、生成はcpコマンドによるものであり、妥当な理由がある場合を除き、umaskよりも権限が許可されます。なぜ?
答え1
これまでのすべての答えは、グループディレクトリを介して共有ファイルを処理する方法についてのアドバイスを提供します。 Nonがあなたの主な質問「なぜ指定されたかcp a b
のように動作するのですか?」に答えたと思います。cp -p a b
これマニュアルページ特に話していませんでしたが、文字メッセージ詳細があります。info coreutils 'cp invocation'
示す:
‘-p’
‘--preserve[=ATTRIBUTE_LIST]’
Preserve the specified attributes of the original files. ...
...
In the absence of this option, the permissions of existing
destination files are unchanged. Each new file is created with the <===
mode of the corresponding source file minus the set-user-ID, <===
set-group-ID, and sticky bits as the create mode; the operating
system then applies either the umask or a default ACL, possibly
resulting in a more restrictive file mode.
...
したがって、ターゲットが存在する場合、内容は置き換えられますが、モードビットは変更されません。ターゲットが存在しない場合いいえ現在のモードビットはソースからコピーされます。
答え2
実際、ユーザーが入ることができるディレクトリの作成は非常に簡単で簡単に行えます。
まず、このディレクトリを作成するのに適した場所を見つける必要があります。現時点では、誰もがアクセスできるディレクトリに作成することをお勧めします。コマンドの使用sudo mkdir新しいディレクトリを作成します。
次に、Linuxシステムの特定の部分を制限またはアクセスするために集められたユーザーのコレクションであるグループを作成する必要があります。入力するとグループが表示された可能性があります。ls-lこのコマンドは以下をリストします。
rwxrwxrwx 3 ルートマネージャ 4736 10月24日 12:32 File1.doc
話す部分根は所有者、**admins**はファイルを所有するグループです。グループは、特定の人がファイルを表示できるようにする簡単な方法を提供します。グループを作成するには、「sudo groupadd」と入力してください。これにより、このグループがディレクトリに使用されます。
- グループが作成されたら、次のコマンドを使用してディレクトリにアクセスするユーザーを追加できます。sudo ユーザーの追加 これにより、グループコマンドを使用してグループ内にいることを確認できるユーザーを追加できます。
これが完了したら、作成したディレクトリを見つけてグループ権限を7(rwx)に設定します。これらの権限は必要に応じて調整できますが、7はこのグループのユーザーにディレクトリに対する完全な権限を与えることに注意してください。 「sudo chmod 770」と入力して
次に、ディレクトリのグループ所有者が作成したグループになるように、ディレクトリのグループ所有権を変更する必要があります。次のコマンド "sudo chown -R :groupname" を使用してこれを行います。
これが完了したら、誰でもグループに追加でき、その特定のグループに存在し、ディレクトリにアクセスできる限り、ファイルをコピーして共有できます。この情報が参考になったら教えてください! ! ! ! ! ! !
答え3
すべてのACLを削除し、ユーザーとグループの権限のみを使用します。その後、chmod 777
誰もがアクセスできるようにしたいフォルダがあります。その後、アクセスをテストします。
次に、chmod 770
フォルダアクセスを再テストします。
これが正しく機能したら、ACLを一度に1つずつ追加する必要があります。
実行権限が必要ない場合は、フォルダ名をrw *、rx *、***としてchmod 660できます。
acl と chmod 777 権限のない期間中は、フォルダはすべての人に完全に公開されるので、このままにしないでください。
答え4
頑張りました。グループ権限はACLのマスクであるため、umaskはグループ権限をオフにしているようです。すべてのグループとACLをブロックします。
解決策はumaskの限界を減らすことです。これを安全に行うには、各ユーザーにグループを追加し、そのグループをデフォルトグループに設定する必要があります。 (望むより各ユーザーが自分のグループを持っているのはなぜですか?)。
それでも他のumask(g = rxとg = rwx)の場合があるので、これは理想的ではありません。この戦略では、グループ化されていない権限のみを必要としません。