web-dev-qa-db-ja.com

Unixパーミッション:ユーザーに関係なくファイルへのアクセスを有効にしますか?

私は長い間Linuxを使用してきましたが、まだファイルパーミッションが実際にどのように機能するかについて完全に暗闇に包まれています。それを念頭に置いて、物事を完全に理解するために私が読むことができる本や完全なガイドを誰かが持っていますか?私はsysadminningをかなり共有しているので、ディレクトリの読み取りと書き込み可能、​​ファイルの実行可能ファイル、ファイルの所有者の変更などの簡単なことは知っていますが、ユーザー間でファイルを共有すると、迷子になります。

これが私の主な問題です。音楽ライブラリを同期する予定のマシンがいくつかあります。私はしばらくの間Unisonを使用していますが、セットアップしたばかりのローカルネットワーク上でSSH経由で簡単に実行できるので、これは素晴らしい選択です。ウィンウィン。

これまで、2TBの外付けハードドライブを使用してコンピューターを同期してきました。 (コンピューター1のユニゾンからHD、コンピューター2のユニゾンからHDなど)これはせいぜい面倒です。特にドライブを暗号化したため、すべてのマシンに接続して同期するのは非常に面倒です。とにかく、ドライブは(TrueCryptで)ext4を実行しているので、所有者やグループなどのすべてのUnixファイルシステム情報を維持します。私はちょうど新しいマシンをセットアップし、それに音楽を入れるためにそれをユニゾンしただけでした、そして今、私の許可はすべてfubarであることに気づきました。 Unisonをrootとして実行する必要があったのは、それがファイルを外部ドライブから取り出す唯一の方法だったからです。どうやら、私はこのマシンですべてのマシンで通常の「rfkrocktk」とは異なるユーザー名を使用しているので、これは本質的にギアに巨大なレンチを投げます。

これが私のユースケースです。このラップトップには、「leandra」と「rfkrocktk」の2人の効果的なユーザーがいます。この2人のユーザー間で音楽を共有したいので、/ home/rfkrocktk/Musicをシンボリックリンクして/ home/leandra/Musicをポイントしました。 (a)両方のユーザーにこのフォルダー内のファイルの読み取り/書き込み/削除へのアクセスを許可し、(b)ファイルの所有権を台無しにすることなくすべてを適切に同期させるにはどうすればよいですか?


編集

私は物事をある程度機能させることができましたが、まだ完全ではありません。音楽ディレクトリのグループIDをグループmedia-usersに設定し、メインユーザーrfkrocktkと共有ユーザーmt-daapdの両方をグループに追加しました。これで、rfkrocktkはファイルに完全にアクセスできますが、mt-daapdはディレクトリ内に何も表示できません。これが私のIDです:

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)

mt-daapのメイングループIDをmedia-usersグループに設定しようとしましたが、何も変更されません。

/home/rfkrocktk/Musicディレクトリに対する私の権限は次のとおりです。

drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music

Sudo -i -u mt-daapd ls -l /home/rfkrocktk/Musicを実行しても、何も生成されません。どうすればこれを修正できますか?

3
Naftuli Kay

ファイルの所有者をrootに設定し、グループを「music」のようなものに設定してから、両方が「music」グループのメンバーになるようにします。次に、音楽ディレクトリをsetgid (これは、ディレクトリに作成されたアイテムがディレクトリ自体のグループ所有権を継承することを意味します) にします。次に、ファイルのアクセス許可を0660にすると、すべて設定されます。

ファイルのアクセス許可は、ユーザー、グループ、ワールドであり、多くの場合、8進数(0660など)として表示されます。ここで、

1-exec2-書き込み4-読み取り

これらは追加できるため、たとえば0751は、ファイル所有者が読み取り、書き込み、および実行できることを意味します。グループは読み取りと実行が可能です。他の誰もが実行することしかできません。

5
Michael Trausch

名前は関係ありません。 Unixファイルとグループの所有権はファイルシステムに保存され、名前ではなく数値で保存されます。元のマシンから通常のユーザーとしてターミナルを開き、次のように言います。

id -u

これにより、ユーザーの数値IDが表示されます。ファイルの所有権を確認するとき、ログインしたユーザーIDとファイルシステムのIDが比較されます。ユーザー名を表示すると、passwdにクエリを実行してIDがテキストに変換され、ローカル名になります。

新しいマシンで、上記と同じ手順を実行します。 IDは違いますか?それが異なる場合、新しいマシンの「あなた」はファイルの所有者ではありません。両方のマシンで、同様に、あなたが言うなら

id -G

ユーザーが属するグループIDのリストが表示されます。各ファイルのグループは、これらのIDの1つと一致する必要があります。一致しない場合、ファイルはユーザーによってグループ所有されていません。ファイルの実際の数値ユーザーとグループは、ls -nd fileまたはstat fileで取得できます。

ほとんどの場合、2つの異なるシステムが同じユーザーIDを持つことはありません。 passwdを編集して手動で同期できますが、システム上のすべてのファイルを慎重に更新して、古いIDから同等の新しいIDに変換する必要があります。システム間でIDを同期することは、ほとんどのホームユーザーが気にしない複雑なタスクです。これは、LDAP、NIS、およびそのような他のソリューションのドメインです。

問題を解決するには、両方のシステムに存在するグループIDが所有するすべてのファイルを作成し、両方のシステムのユーザーがグループのメンバーであることを確認してから、読み取り/書き込みアクセスを許可します(chmod g+rw)そのグループに。

3
phogg

Musicディレクトリ(およびそのすべてのファイルとサブディレクトリ)に775のアクセス許可を設定して、ファイルの所有者と同じグループの誰もがファイルに対してやりたいことを何でもできるようにすることができます。次に、任意の名前(共有など)で新しいグループを作成し、ミュージックディレクトリ(およびそのすべてのファイルとサブディレクトリ)を新しいグループにchgrpします。ここで、共有ファイルへの読み取り/書き込みアクセスを許可するユーザーが「共有」グループに属していることを確認する必要があります。他のコンピューターでこれを機能させる必要がある場合は、共有グループがすべてのコンピューターで同じ数値IDを持っていることに注意してください。問題はありません。

1
devius

ここ は私が便利だと思ったパーミッションの説明です。 これも