web-dev-qa-db-ja.com

Macで失われたグループ権限を復元する

Macのひどいファイル共有設定を使用して、Documentsディレクトリのアクセス許可を取得することができました。私の非ドキュメントディレクトリには、次のような権限があります。

drwx------+ for .
drwxr-xr-x+ for ..
-rw-------@ for .DS_Store

drwxr-xr-x  for most folders
drwxr-xr-x@ for some folders

-rw-r--r--  for some files
-rw-r--r--@ for some files

マイドキュメントディレクトリには、次のような権限があります。

drwx---r-x+ for .
drwx---r-x+ for ..
-rw----r--@ for .DS_Store

drwx---r-x+ for (all?) folders

-rw----r--@ for some files
-rw----r--+ for some files

グループ読み取りアクセス権を持つべきすべてのものにそれが欠けているようです。 chmodが役立つこと、そして-R再帰オプションがあることは理解していますが、実験を開始するのは気が進まないので、もっと混乱させます。特に、本来あるべきではない場所にグループ読み取りを設定したくありません。また、他のビットはそのままにして、いくつかのビットを変更したいと思います。

誰かがこれを修正するためのアドバイスを提供できますか?

関連性があるかどうかはわかりませんが、同じマシン上の別のユーザーにメインユーザーのドキュメントへの読み取り/書き込みアクセスを許可しようとして、これに取り組みました。設定を共有する際に、共有フォルダーのリストにDocumentsフォルダーを追加し、全員が読み取り(または少なくとも読み取り)するように設定しようとしましたが、その過程で、「スタッフ」グループを削除したと思います。

4
danh

ピンチでは、Documentsディレクトリに入り、以下を発行することにより、グループの読み取り/書き込み権限を追加できます。

chmod -R g+rw *

所有権を修正する必要がある場合は、次のことができます。

chown -R user.group *

[明らかに、usergroupを実際のユーザーとグループ名に置き換えます]

今、あなたはただディレクトリを修正する必要があります。

find . -type d | replace ' ' '\ ' | xargs chmod g+x

上記の呼び出しは、すべてのディレクトリを検索し、バックスラッシュ(xargsに渡すために必要)でスペースをエスケープし、それぞれにグループ実行権限を追加します。 replaceコマンドはmysqlの一部です。それがない場合は、sed 's/ /\\ /g'を使用できます

私のLinuxディストリビューションがSlackwareであるという免責事項。これはMacでも動作すると思いますが、テストできません。サニティチェックを実行する場合は、xargs chmod g+xecho | moreに置き換えることができます。

最初に出力をファイルにパイプできることに注意してください。

find . -type d | replace ' ' '\ ' > dirs.txt

次に、そのファイルを確認し、テキストエディタを使用して、変更したくないディレクトリを削除できます。次に、chmodを再帰的に呼び出す代わりに、次の操作を実行できます。

cat dirs.txt | sed 's/$/\/*/' | xargs chmod g+rw
cat dirs.txt | xargs chmod +x

sed呼び出しは、各行の終わりを「/ *」に置き換えるだけで、ディレクトリ内のすべてのファイルを意味します。

3
paddy

私が思い出すと、標準のlsrwxrwxrwxの後の+属性はACLに信号を送ります。グループの読み取りアクセスはACLスキームの一部である可能性があるため、注意が必要です。

0
mdpc