Как мне смонтировать общий ресурс CIFS через FSTAB и дать полный RW гостю

33

Я хочу создать общую папку с полным доступом к RW. Проблема с моей конфигурацией состоит в том, что пользователи Windows не имеют проблем в качестве гостей (они могут RW и Удалить), мой клиент Ubuntu не может сделать то же самое. Мы можем только писать и читать, но не создавать или удалять.

Вот мой smb.conf с моего сервера:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

Следующая запись FSTAB не дает полного доступа к общему ресурсу.

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

Это тоже не работает

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

Использование следующего расположения в Nemo / Nautilus без монтируемого общего ресурса работает:

smb://192.168.0.5/storage/

Дополнительная информация Я только что заметил, что если я копирую файл в общий ресурс после монтирования, мой клиент Ubuntu сразу делает «никто» владельцем, а группа «нет группы» читает и пишет, а все остальные - только для чтения.

введите описание изображения здесь

Что я делаю не так?

Kendor
источник
Итак, позвольте мне посмотреть: вы можете смонтировать общий ресурс из вашего клиента Ubuntu (я полагаю, что вы являетесь пользователем root, учитывая ваши записи в fstab), вы можете читать и писать, но вы не можете удалить или создать? Почему же вы можете копировать (для копирования необходимо создать файл)?
январь

Ответы:

56

Оказывается, мне нужно добавить локальный (клиентский) UID к строке монтирования в FSTAB, чтобы это работало. Я пришел к этому с помощью грубой силы:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
Kendor
источник
3
Обычная проблема, а ответа нет вообще ... Удивительно!
dan3
Оооо, как раз то, что мне было нужно ... большое спасибо - искал это часами!
pkdkk
1
Еще один момент: убедитесь, что cifs-utilsон установлен (для меня он не был установлен под 16.04 после установки «основного» samba pkg). Если он не установлен, вы получите ошибку «bad fs / bad option».
bshea 24.09.16
После того, как я установил это, я использовал perms в другом ответе и добавил: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 к /etc/fstabтогда sudo mount -a. Кажется, теперь монтировать / писать нормально.
bshea 24.09.16
Для меня немного более простая версия (без uid) работала, чтобы правильно смонтировать R / W для всех пользователей общедоступный общий ресурс с другой машины Linux://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo
6

CIFS обычно не имеет никакой концепции пользователя и группы, поэтому при монтировании общего ресурса cifs пользователь и группа по умолчанию будут отображаться как «nobody»:

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

Поскольку вы не «никто», Linux не позволит вам писать что-либо, у кого нет разрешения 0777, если вы не используете sudo. Чтобы это исправить, добавьте uid = mylogin, gid = mygroup в fstab, и общий ресурс будет выглядеть так, как если бы он был вашим собственным каталогом:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

Теперь у вас есть полный контроль без необходимости sudo.

Это на самом деле ничего не меняет на сервере, так как сервер ничего не применяет. Linux говорит, что вы являетесь владельцем и предоставляете вам неограниченный доступ.

maharvey67
источник
1
Да, если вы используете гостя / никто / и т.д. Убедитесь, что родительские папки имеют полное чтение / запись / выполнение. Я использую эту перманентность на некоторых внутренних сетевых ресурсах - так что это не проблема безопасности. Upvoted
bshea
Но вопреки вашему посту - я смог использовать userid 'nobody' (для монтирования), когда у него были правильные опции для монтирования. Смотрите мои другие комментарии ..
bshea
Это гораздо лучшее решение, чем установка расширенных прав доступа для всех к подключенным файлам. И это работает.
j08lue
5

Вы почти там. Откройте FSTAB, используя:

sudo nano /etc/fstab

В последней строке (или в последней строке) место:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

*** (это все одна длинная очередь)

Ctrl- Xзакрыть, Yсохранить и войти, чтобы закрыть сделку.

Теперь перезагрузитесь:

sudo reboot

И вы должны иметь полный контроль над сетевым ресурсом на вашем устройстве Linux!

AndyShap
источник
1
Возможно, вы захотите заменить этот пароль на пример пароля.
Прожектор
9
Не нужно перезагружать, чтобы смонтировать fstabзаписи. Просто mount <DEVICE>или mount <MOUNTPOINT>даже mount -aхорошо справляйся с работой.
Дэвид Фёрстер
1

У меня была эта проблема, и это было, потому что пользователь общего ресурса не имел это. Я исправил это с помощью "sudo chown {username}: {username} / {share} / {path}", после чего я мог перемещать и удалять файлы.

Эндрю Кливленд
источник