解決策 1:
setuid と setgid
<ブロック引用>setuid と setgid (それぞれ、実行時のユーザー ID の設定と実行時のグループ ID の設定の略) は、ユーザーが実行可能ファイルの所有者またはグループのパーミッションで実行可能ファイルを実行できるようにする Unix アクセス権フラグです。これらは、特定のタスクを実行するために、コンピューター システム上のユーザーが一時的に昇格された特権でプログラムを実行できるようにするためによく使用されます。想定されるユーザー ID またはグループ ID の権限が常に昇格されるとは限りませんが、少なくとも特定のものです。
setuid および setgid ビットを数値的に削除するには、ビットパターンの前に 0
を付ける必要があります (例:0775
00775
になります ).
実行して setuid と setgid を削除します:
chmod 00775 path
または
chmod a-st path
解決策 2:
ユーザーおよびグループ列の「実行」位置に表示されているのは、SetUID (実行時にユーザー ID を設定) ビットと SetGID (実行時にグループ ID を設定) ビットです。
Unix ファイルのパーミッションは、実際には 4 桁の 8 進数 SUGO
です。
- S SetUID (4)、SetGID (2)、および「Sticky」(1) ビットを制御します
- う ファイル所有者の Read(4)/Write(2)/Execute(1) ビットを制御します
- G ファイルのグループの読み取り/書き込み/実行ビットを制御します
- おお 他の全員の読み取り/書き込み/実行ビットを制御します。
chmod ug-s directory
を使用して、ディレクトリから setuid ビットを削除できます。 、または chmod 0755 directory
詳細については、chmod
の man ページを参照してください。 、および SetUID ビットに関するこのウィキペディアのページ。
解決策 3:
ooshro の回答に追加します...
ディレクトリで suid または sgid パーミッションを使用する場合、そのディレクトリ内に作成されたすべてのファイルは、問題のディレクトリと同じ所有者 (suid の場合) またはグループ (sgid) を持ちます。
私はそれを自宅の Samba 共有に使用しています。ベース ディレクトリはユーザー nobody とグループ olympia によって所有されており、パーミッションは 2770 です。したがって、そのディレクトリの下にあるものを読み書きするには、グループ olympia に属している必要があります。これにより、olympia がその下にあるすべての所有グループであることが確認されます。 .また、ディレクトリ マスク 2770 とファイル マスク 660 を使用するように Samba を構成して、ツリー全体で正しいアクセス許可を維持しています。