[sisyphus] smbfs vs cifs

Eugene Prokopiev enp на altlinux.org
Пн Окт 26 05:32:22 UTC 2009


25 октября 2009 г. 9:20 пользователь Alexander Bokovoy
<ab на altlinux.org> написал:
> 2009/10/24 Eugene Prokopiev <enp на altlinux.org>:
>>> # mount.smbfs //server/folder /shared/folder -o
>>
>> опечатка, тут должно быть mount.cifs
>>
>> повесил #22054 - посмотрим, что скажет мейнтейнер
> На стороне сервера что?

Клиент и сервер сейчас - одна и та же машина:

$ rpm -qa | grep samba
samba-3.0.37-alt1
samba-client-control-1.2-alt2
samba-common-3.0.37-alt1
samba-client-3.0.37-alt1

$ cat /etc/samba/smb.conf
[global]
netbios name = myserver
workgroup = mygroup
server string = My Server
log file = /var/log/samba/log.%m
max log size = 50
security = share
socket options = TCP_NODELAY
dns proxy = no
dos charset = CP866
unix charset = UTF-8
display charset = UTF-8
os level = 100
domain master = yes
preferred master = yes
bind interfaces only = yes
interfaces = lan ats stc lo
load printers = no
printcap name = /etc/printcap
[public]
path = /home/smb/public
comment = Public Access Directory
read only = no
guest ok = yes
create mode = 0666
directory mode = 0777

$ cat /proc/fs/cifs/DebugData
Display Internal CIFS Data Structures for Debugging
---------------------------------------------------
CIFS Version 1.58
Active VFS Requests: 1
Servers:
1) Name: 127.0.0.1  Domain: MYGROUP Uses: 1 OS: Unix
        NOS: Samba 3.0.37       Capability: 0x80f3fd
        SMB session status: 1   TCP status: 1
        Local Users To Server: 1 SecMode: 0x2 Req On Wire: 0
        Shares:
        1) \\localhost\public Mounts: 1 Type: NTFS DevInfo: 0x0 Attributes: 0x2f
PathComponentMax: 255 Status: 0x1 type: 0

        MIDs:

> Если на стороне сервера Samba и у нее разрешены CIFS Unix Extensions,
> и uid/gid на клиенте отличаются от сервера, то использовать нужно
> именно noperm -- эта опция говорит "не надо локально проверять
> uid/gid, они все равно не совпадают с серверными". При этом проверка
> прав записи идет на сервере, под той учетной записью, под которой
> авторизовались при монтировании и все данные пишутся на сервер под
> этой учетной записью.

CIFS Unix Extensions, как я понимаю, разрешены всегда. Мне вполне
достаточно одинаковых uid/gid на клиенте и сервере (независимо от
того, на одной они машине, или на разных), а вот noperm как раз
нежелателен, т.к. файл с видимыми атрибутами 644 оказывается доступным
на запись - и это сбивает пользователей с толку.

> Если требуется обеспечить возможность чтения/записи всем пользователям
> в системе, то необходимо различать два случая:
> 1. Записываемые файлы получают одного владельца.
> 2. Записываемые файлы должны иметь своего владельца.
>
> Первый случай возможен -- как раз с комбинацией noperm,uid=,gid=.
> Второй случай требует мультиплексирования авторизации и это пока не
> работает внятно в случае, если uid/gid не общие на обеих машинах.

Интересен именно первый случай, но без noperm - почему, я описал выше.
Собственно, smbfs работала именно так, как мне надо.

> У меня работает без проблем монтирование даже без указания noperm и uid=,gid=
> # mount -t cifs //192.168.100.31/share /mnt/floppy/ -o user=nmt
> $ ls -l /mnt/floppy/Podcast/
> итого 0
> drwxrwxrwx 1 root root 0 Янв  1  2000 media
> $ touch /mnt/floppy/Podcast/file.txt
> $ ls -l /mnt/floppy/Podcast/
> итого 0
> -rwxrwSrwx 1 root root 0 Окт 25 08:17 file.txt
> drwxrwxrwx 1 root root 0 Окт 25 08:16 media

Не работает никак:

# mount -t cifs //localhost/public /home/smb-mounted/public/
$ touch /home/smb-mounted/public/0
touch: невозможно выполнить touch для `/home/smb-mounted/public/0':
Отказано в доступе
$ ls -l /home/smb-mounted/public
итого 0
-rw-r--r-- 1 nobody nobody 0 Окт 26 08:22 0

Любопытно еще и то, что под рутом запись работает:

# touch /home/smb-mounted/public/1
# echo 2 > /home/smb-mounted/public/2

Но заметьте, что работает оно хитро, файл создается с аттрибутами 644
(и именно это не дает простому пользователю ничего потом с ним
сделать), а потом при необходимости записи аттрибуты меняются (если
пишет именно root):

$ ls -l /home/smb-mounted/public
итого 4
-rw-r--r-- 1 nobody nobody 0 Окт 26 08:22 0
-rw-r--r-- 1 nobody nobody 0 Окт 26 08:24 1
-rw-rw-rw- 1 nobody nobody 2 Окт 26 08:24 2

> $ cat /proc/fs/cifs/DebugData

это я выше показал

-- 
С уважением,
Прокопьев Евгений


Подробная информация о списке рассылки Sisyphus