16.04にアップグレードした後、共有フォルダの所有権と許可に常に問題があるようです。
フォルダー名test
を作成し、その権限を777
に変更し、そのフォルダーをローカルネットワークで共有しました。
別のマシン(Windows)から、そのtest
フォルダーのファイルを表示および編集できますが、そのフォルダー内のファイルを編集するたびに、所有権と権限がnobody:nogroupに変更されるため、編集できません再び私の16.04マシンで。
test$ ll
total 328
drwxrwxrwx 2 pac pac 4096 Jan 20 09:59 ./
drwxrwxrwx 4 pac pac 4096 Jan 20 09:32 ../
**-rwxr--r-- 1 nobody nogroup** 326442 Jan 20 09:59 t1.log*
なぜ自動的に-rwxr--r-- 1 nobody nogroup
に変わるのですか?許可が常にrwxrwxrwx
になり、所有権が常にpac:pac
になるように(そのnobody:nogroup
迷惑を削除する)この変更を防ぐにはどうすればよいですか?
フォルダーtest
でこれを繰り返し行う必要はありません。
$ Sudo chown pac:pac . -R
$ chmod 777 . -R
Samba共有で許可の問題が発生した場合、Sambaにはユーザーおよびファイルとディレクトリの許可に関する独自の構造があることを理解しておくと便利です。 Samba共有を作成し、特定のユーザーのみにそのSamba共有へのアクセスを許可することでアクセスを制限する場合、通常はSambaユーザーを作成します。コマンドラインでは、これはコマンド「smbpasswd」を使用して実行できます。詳細については、を参照してください。
man smbpasswd
ユーザーおよびファイル/ディレクトリのアクセス許可をSamba構成に追加するには、/ etc/samba /にあるsmb.confファイルを編集します。
こちらもご覧ください。
https://help.ubuntu.com/community/Samba/SambaServerGuide#Samba_Server_Configuration_in_terminal
許可の設定については、こちらをご覧ください。
https://help.ubuntu.com/community/Samba/SambaServerGuide#File_Sharing_.28Advanced.29
Smb.confを編集した後、Sambaサーバーデーモンを再起動するか、構成ファイルの読み込みを行う(リロードする)必要があります。
一部の古いUbuntuバージョンでは、smbdとnmbdの両方を再起動できましたが、新しいUbuntuバージョンでは、「init」スクリプトsambaを再起動できます。
Sudo service samba restart
一部のオフィス環境では、Sambaの再起動ではなく、設定の再読み込みのみを実行して、ユーザーの中断を回避することが理にかなっています。
/etc/init.d/nmbd force-reload && /etc/init.d/smbd force-reload
これは、いくつかの古いUbuntuリリースにあります。私は新しいUbuntuのリリースを想定しています:
Sudo service samba force-reload
(これをまだテストしていない)。
これは、16.04ではなく、sambaで作業する場合のファイルおよびディレクトリのアクセス権に関連する問題です。ログインを使用せずにパブリック共有を設定し、sambaゲストユーザーをユーザーnobodyにマッピングすると仮定します。
すべてのsambaユーザーはnobodyとしてログインするため、保存されたファイルはすべてユーザーnobodyおよびグループnogroup。
Sambaゲストユーザーによって作成されたファイルt1.log
にはパーミッション-rwxr--r--
があり、そのファイルの所有者はnobodyです。ユーザーpacは、Othersの読み取り権限のみを持つため、変更できません。
これを解決する1つの方法は、sambaゲストユーザーをユーザーpacに再マッピングすることです。
これが/etc/samba/smb.conf
で設定されていることを確認してください:
guest account = pac
...次に、共有フォルダー内のすべてのファイルの所有権をユーザーに変更しますpac
Sudo chown -R pac:pac /path/to/share
_
明らかに、これはpac以外のユーザーがrwアクセスも必要とするマルチユーザー環境では機能しません。
-rwxrwxrwxで作成されるファイルとディレクトリのsmb.confでcreate mask = 0777
とdirectory mask = 0777
を使用することを提案する人もいますが、私の経験では、時間の経過とともにいくつかのファイルがまだ他の許可で終わっていることがわかりました。
私が見つけた唯一の信頼できる解決策は、bindfsで共有ディレクトリを再マウントして、常に0777権限を強制することです。
まず、bindfsをインストールします。
Sudo apt install bindfs
次に、systemdサービスファイルを作成します。
Sudo nano /lib/systemd/system/mount-bindfs.service
これをファイルに貼り付けます:
# mount-bindfs systemd service file
[Unit]
Description=Remount directories with different permission
After=mountall.service
[Service]
Type=forking
ExecStart=/bin/sh -c "/usr/bin/bindfs -o perms=0777 /path/to/share /path/to/share"
[Install]
WantedBy=multi-user.target
Systemdをリロードし、起動時にサービスを有効にして起動します。
Sudo systemctl daemon-reload
Sudo systemctl enable mount-bindfs.service
Sudo systemctl start mount-bindfs.service
共有フォルダでll
を実行すると、すべてがrwxrwxrwx
として表示されます。