Кажется, что после обновления до 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 имеет свою собственную структуру для пользователей, а также полномочия dir и файл. Если Вы создаете долю Samba, и каждый хочет ограничить доступ путем предоставления только определенного пользовательского доступа к той доле Samba, можно было бы обычно создавать пользователей Samba. На командной строке это может быть сделано с командой "smbpasswd". См. больше информации:
man smbpasswd
Для добавления пользователя и полномочий файла/dir к конфигурации Samba можно отредактировать smb.conf файл, расположенный в/etc/samba /
, См. также здесь:
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" самба сценария.
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. Я предполагаю, что Вы настраиваете общедоступную долю и не используете логины и отображаете гостевого пользователя самбы на пользователя никто.
Так как все пользователи самбы будут зарегистрированы, поскольку никто, любой сохраненный файл не наследует пользователя никто и группа nogroup.
Ваш файл t1.log
это создается гостевым пользователем самбы, имеет полномочия -rwxr--r--
, и владелец того файла - никто. Ваш пользователь pac не может изменить его, поскольку это только прочитало разрешение для Других.
Один способ разрешить это состоит в том, чтобы повторно отобразить гостевого пользователя самбы на Вашего пользователя pac.
Удостоверьтесь, что это установлено в Вашем /etc/samba/smb.conf
:
guest account = pac
... затем измените владение для всех файлов в Вашей папке доли пользователю pac
sudo chown -R pac:pac /path/to/share
_
Очевидно, это не будет работать в пользовательской среде, где некоторому другому пользователю кроме pac нужен rw доступ также.
Некоторые могут предложить использование create mask = 0777
и directory mask = 0777
в smb.conf для файлов и каталогов, которые будут созданы с-rwxrwxrwx, однако по моему опыту, я нашел, что это довольно ненадежно, когда со временем некоторые файлы все еще заканчивались с некоторыми другими полномочиями так или иначе.
Единственное надежное решение, которое я нашел, состоит в том, чтобы повторно смонтировать каталог доли с 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
Сделайте a ll
на Вашей папке доли и все должно появиться как rwxrwxrwx
теперь.