フォルダで作成されたものがアクセス許可を継承するようにフォルダを設定するにはどうすればよいですか?


18

すべてのユーザー(この場合は家族)がアクセスできるすべてのデータ用の/ dataフォルダー(実際にはパーティション)があります。私たちはすべて個別のユーザーアカウントを持ち、多くの場合、この1台のPCでいつでもすべてログインしています。

新しいフォルダを含め、誰がファイルを作成したかに関係なく、すべてのファイルへのアクセスを保持するようにアクセス許可を設定するにはどうすればよいですか?フォルダーを作成すると、ユーザーとグループが取得されるため、他のユーザーは書き込みできません。


訪問者のために。グループ名のみを継承する場合chmod -R g+s /parentdir。注:実行してchmod -R 必要であれば、この前に
Thammeゴウダ

1
上記の注意事項:-Rへのフラグはchmod、我々はめったに(常にいくつかは、実行権を必要とする)ディレクトリと(めったに任意の実行権限を必要としない)、通常のファイルが同じ権限がしたいんので、非常にまれに有用である
Zanna

回答:


17

別のアプローチは、ファイル許可のスーパーセットであるアクセス制御リストを使用することです。

まず、acl ACLをインストールするパッケージをインストールする必要があります。

sudo apt-get install acl

Ubuntu 14.04より前のバージョンでは、パーティションをマウントしてacl、次のオプションを機能させる必要があります。これは、で追加される可能性/etc/fstabのように、

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

またはすでにマウントされているファイルシステムの場合

sudo mount -o remount,acl /media/shared

次に、新しいグループを作成する必要があります。このグループには、読み取り/書き込みモードで共有にアクセスできるすべてのユーザーが追加されます。私はそれを呼び出しますusershare。既存のグループを使用できます。

sudo addgroup usershare

次に、ユーザーenzotibsteevcそのグループに追加します。

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(次のログイン時に有効)。

次にrwx、グループの権限を持つACLを、usershare既に存在するすべてのファイルに追加します/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

最後に、これから内部で作成されるすべてのファイルrwxのグループusershareに対する権限を持つデフォルトACLを追加します/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

これで、usershareグループのすべてのユーザーが、すべてのファイルに対する完全な権限を持ちます/media/shared。自分および他のユーザーのホームディレクトリに対する各ユーザーのアクセス許可は影響を受けません。

私はこのソリューションをテストし、機能しているようですが、提案や修正は大歓迎です。

:対象ディレクトリに作成された新しいファイルとディレクトリにはusershareグループの書き込み権限がありますが、フォルダ内でコピーまたは移動されたファイルには元の権限が保持されます。私が理解しているように、ユーザーが新しく作成されたディレクトリへの書き込みアクセスのみを必要とする場合、これは問題ではありません。それ以外の場合は、アクセス許可を手動で変更する必要があります。ユーザーのumaskをに定義してこれを克服する方法については、この回答を参照してください002


私はaclをよく知らないので、rw-r--r--などのアクセス許可を持つファイルをホームフォルダーから共有フォルダーにテストしてコピーし、アクセス許可がusershareグループのデフォルトrwxに変更されるかどうかを確認できますか?
手配

@arrange:いいえ、意図したとおりに機能しません。答えを指摘するつもりです。ありがとう
-enzotib

デフォルトでアクティブなオプションでマウントする必要があるため、/etc/fstab/ remountステップは不要です。ext4acl
enzotib

8
  1. フォルダーを作成します。

    例えば:

    mkdir /mnt/family
    

    それらにパーティションをマウントする必要がある場合... ext4に必要なの/etc/fstab

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. グループmyfamを作成します。

    addgroup myfam
    
  3. そのグループにユーザーを追加します

    adduser papa myfam  
    adduser mom myfam
    
  4. 今すぐ許可を取ってください。

    変化から始めるべきだと思いますumask

    12.04でのデフォルトのファイルシステム許可とアクセス権

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    今最も重要です。その行setgidは、そのフォルダの下に作成したものを作成し、ユーザーを所有者およびグループとして設定しますmyfam。これにより、システムはユーザーのプライマリグループをオーバーライドできます。

    chmod -R g+s /mnt/family   
    

3

頭に浮かぶ最も簡単なことは、各ユーザーを他のすべてのユーザーのグループに追加することです。

次に、各ユーザーのumaskを022から002に変更し/etc/profileます。これはで実行できます。

編集

最初のステップは、次のものに置き換えることができます。すべてのユーザーをusersプライマリグループとしてグループに所属させます。

Edi2

@James_Henstridgeが示唆したように、メインディレクトリにsetgidビットを設定すると、作成された新しいファイルとディレクトリが、ユーザーに関係なく同じグループを持つようになります。この方法でusers、ユーザーのプライマリグループとしてのセットを回避できます。


回答を編集し/dataて、新しいファイルがグループ所有権を継承するように、すべてのディレクトリにsetgidビットを設定することを提案することもできます。
ジェームズヘンストリッジ

edit3 :)ファイルを/dataフォルダーにコピーする場合、アクセス許可は継承されないため、gwアクセス許可を持つ古いファイルは他のユーザーによって変更できません。edit4:usersプライマリグループおよびumask0002 として設定することは、そのグループの誰でも新しく作成されたファイルを変更できるため、間違いなく良いアイデアではありません。
手配

@arrange:edit4に関してusers、共有へのrwアクセスを許可されたユーザーのみをグループに入れることをお勧めします。それは利便性の問題であり、そのための別のグループを作成することもできました。edit3に関しては、正しくありません。コピーされたファイルはフォルダーグループを取得します。
enzotib

@enzotib:言い換えれば、私のポイントを繰り返します。edit4- users私のプライマリグループで、このグループにさらにユーザーがいる場合、共有ディレクトリの外でもファイルを変更できます。edit3- フォルダーグループではなく、権限を記述しました。
手配

@arrange:あなたの主張は正しいです、私はちょうど別の答えを書いた、あなたの意見を聞くのは面白いかもしれません。
enzotib

2

これはACLの仕事のように思えます。 GilesSE UnixおよびLinuxサイト非常に徹底的な回答をしてくれたので、同じ問題を解決できました。


1
うまくいきました!ACLを使用して他の答えを見ましたが、これは共有ディレクトリに作成された新しいファイルとディレクトリだけでなく、そこにコピーまたは移動されたもののパーミッションも変更する唯一の答えです。
ダンボー

0

私は理解できません、すべてlinux-linux、linux-windows、linux-???、Samba?、SSH?、Pigeonsを使用していますか?; とにかく、ユーザー名(グループ)を使用してグループに他のユーザーを含める必要があります。そうすると、ユーザーはあなたと同じ権限を取得します。


これは、1台のPC上の複数のユーザーです。パーミッションをデフォルトの有用なものに変更する方法があるはずです。
-steevc

0

GROUP PERMISSIONの問題の答えを探しているときに、この質問に出会いました。私は質問を読みましたが、質問が達成しようとすることをすでに実装しているようです。

だから私はそれに答えるのに悩まされました。

LAN上のすべてのユーザーに対して、読み取りと実行のみの共有のセットアップが既にあり、共有フォルダーへの書き込み権限を持っているのは自分のアカウントのみです。

LANにubuntu 12.04 LTS Desktop Editionを使用する多目的サーバーがあります。LinuxとWindowsのクライアントマシンが混在しています。

私がどのように設定したかを以下に示します。

1.サーバーには、次の名前のユーザーアカウントがadminあり、clientone

adminアカウントは、私はUbuntuのインストール時に作成したアカウントで、clientoneアカウントがUSERを使用して作成したアカウントでのUbuntuのメニューを占めています。標準権限のみがあり、管理者権限はありません。users。グループにます。もちろん、ターミナルのみを使用してこれらを行うことができます。クライアントマシンのユーザーアカウントをさらに追加します。

2.共有パーティション/フォルダは、デフォルトオプションのみを使用してfstabに自動マウントされます。

3.私のネットワークはワークグループ環境にあり、ワークグループ上にありmylanます。

LAN内のすべてのマシンがmylanワークグループを使用するように設定されています。

4.という名前の共有フォルダにはshared既にファイルがあります。以下のコマンドを使用して、所有者とグループを再帰的に変更します。

 sudo chown -Rv admin:users /shared

5.また/shared、コマンドを使用してフォルダーおよびフォルダーへのファイル許可を再帰的に設定します

 sudo chmod -Rv 750 /shared

私のmylanワークグループのゲストマシンは、chmod 750を使用して共有にアクセスできません

あなたは使うかもしれません

 sudo chmod -Rv 755 /shared

usersグループ内の今後のユーザーアカウントはすべて、読み取り実行権限のみを持ちます。

6.クライアントマシン1(windows xp)で、という名前のユーザーアカウントをセットアップしますclientone。私のubuntuサーバーで作成されたものと同じユーザー名とパスワード。という名前の2番目のアカウントclienttwoもubuntuサーバーに作成され、2番目のマシン(linuxmint 15)で使用されているのと同じユーザーアカウントです。

7. clientoneアカウントを使用してログインすると、クライアントマシンでコマンドを実行して入力します

 //192.168.10.254/shared

192.168.10.254は、ubuntuサーバーのIPアドレス、ubuntuサーバーで/shared共有されているフォルダーです。クライアントマシン2(linuxmint 15)で、[メニュー]> [ネットワーク]に移動し、[場所]ダイアログボックスで次のように入力しました。

 smb://192.168.10.254/shared

パスワードの入力を求められた場合は、ユーザーアカウントパスワードを入力します。また、LinuxマシンでKEYRINGが有効になっている場合は、キーリングパスワードも。

これは私自身のネットワーク設定で機能します。私のサーバーは、squidサーバー、xbmc、mediatombサーバー、amahiサーバーとして機能する多目的サーバーです。

私はまだセットアップのファイル共有部分を改善する方法を探しています。上記の手順は防弾ソリューションではありませんので、試してみてください。共有フォルダーを自動マウントするとともに、ACLをテストしてみます。フォルダ共有の要件が複雑になると、上記の手順では成功が保証されません。

追加情報:

Amahi Serverをサーバーにインストールし、それを使用して、共有フォルダーにアクセスしたいユーザーアカウントを作成しました。また、新しいフォルダー共有の作成にも使用しました。

異なるユーザーに対してより複雑なユーザー権限が必要な場合は、ACLが最適です。


0

私の名前にはビデオファイルがありますが、娘の名前でサインインすると、彼女のアカウントにはビデオファイルが表示されません。だから、私がしたことはユーザーアカウントに行き、ロックを解除して(右上)、彼女のアカウントタイプを「標準」から「管理者(これが私のアカウントです)」に変更し、今ではすべてのビデオファイル、本当にすべてが表示されます彼女のアカウントでログインしたとき。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.