Почему абсолютная символьная ссылка на доле Samba сопровождается непосредственно CIFS, монтируются?

Не все оболочки определяют переменную UID. Это - удар и zsh функция только. В других оболочках, UID переменная не определяется, таким образом, Ваша тестовая команда расширяется до [ -ne 0 ] который является синтаксической ошибкой.

Портативный способ получить идентификатор пользователя с id утилита.

if [ "$(id -u)" -ne 0 ]; then …

7
28.07.2014, 17:05
2 ответа

Дело в том, что на сервере SAMBA встроена специальная поддержка для unix (cifs) клиентов. При использовании mount -t cifs на вашем linux host'е все symlinки передаются вам (cifs client) как есть.

ls /mnt/share/latest/dir/ -l 
/mnt/share/latest/dir/ -> /opt/share/data/201407

Вам может не понравиться эта функциональность, но это проектное решение имеет свои плюсы, т.е. не является ошибкой, а является функцией! :) Но есть решения:

1) Заменить абсолютную сим-ссылку в общем каталоге на относительную.

smbserver:~> ln -s ../../data/201407 /opt/share/latest/dir

2) Отключить специальную поддержку для UNIX-клиентов на сервере SAMBA. Если параметр unix расширений установлен на "нет", то и Windows и Linux клиенты получат одинаковые результаты.

smbserver:~# vi /etc/samba/smb.conf
[global]
unix extensions = No
smbserver:~# restart smbd

3) Отключите специальную поддержку UNIX на SAMBA-клиенте. Используйте nounix опцию при монтировании общего доступа. Опция nounix отключает CIFS Unix Extensions, так что не будут использоваться UNIX ACL, идентификаторы узлов и блокировка.

client:~$ sudo mount -t cifs -o nounix //smbserver/share /mnt
8
27.01.2020, 20:17

Стандарт иерархии файловых систем говорит: /usr/local: Локальная иерархия , что

Локальная иерархия/usr/предназначена для использования системным администратором, когда локальная установка программного обеспечения. Это должно быть безопасно от бытия перезаписывается при обновлении системного программного обеспечения. Он может использоваться для программы и данные, которые могут совместно использоваться группой хостов, но не найдено в/usr.

Локально установленное программное обеспечение должно размещаться в/usr/local than/usr, если он не установлен для замены или обновления программного обеспечения в/usr.

Как общее правило, в современных дистрибутивах Linux программное обеспечение, которым управляет менеджер пакетов дистрибутивов, использует /usr/bin и т.д., в то время как /usr/local/bin используется локальными установками программного обеспечения, которое не управляется менеджером пакетов. Типичным примером здесь является программное обеспечение, которое устанавливается с помощью make, make install . Статические автономные двоичные файлы также относятся к этой категории.

Другая возможность - /opt . Разделение между /opt и /usr/local не ясно, но /usr/local более принято для локальных установок. Вот что FHS говорит о /opt : /opt: Add-on application программного обеспечения packages .

-121--161367-

(Обновлено, так как я вычеркнул некоторые изгиб)

Вышеприведенное сбивает с толку. Вы говорите об общем ресурсе SMB с сервера Linux или сервера Windows?

Я просто проверял это (у меня есть мой диск C), установленный на клиенте Linux.

Конечно, на окнах, в корне, все symlinks работают. Однако на моем клиенте Linux я вижу

    s# ll /athenae
total 100663718
drwxr-xr-x 2            0 Sep  9 12:53 $RECYCLE.BIN/
-rwxr-xr-x 1        53342 Dec  4  2011 Cygwin-Terminal.ico*
-rwxr-xr-x 1           51 Dec 10  2009 Cygwin.bat*
-rwxr-xr-x 1       157097 Dec  4  2011 Cygwin.ico*
l--------- 1            0 Jul 16  2013 D -> /??/UNC/Ishtar/Documents
drwxr-xr-x 2            0 Jul 13  2009 Documents and Settings/
drwxr-xr-x 2            0 May  4  2014 Drivers/
drwxr-xr-x 2            0 Jan 16 03:21 Fraps/
l--------- 1            0 Nov 29  2012 Home -> /??/C:/Users/
dr-xr-xr-x 2            0 Aug 28  2013 MSOCache/
drwxr-xr-x 2            0 Sep 18 16:01 PortableApps/
drwxr-xr-x 2            0 Nov  6 19:45 Prog/
drwxr-xr-x 2            0 Jan 17 15:35 Program Files/
drwxr-xr-x 2            0 Jan 17 16:36 Program Files (x86)/
drwxr-xr-x 2            0 Dec 30 14:24 ProgramData/
drwxr-xr-x 2            0 Aug 28  2013 Python27/
drwxr-xr-x 2            0 Aug 28  2013 RAMDISK/
drwxr-xr-x 2            0 Nov  2  2013 Recovery/
drwxr-xr-x 2            0 Oct 11 08:24 Recycled/
l--------- 1            0 Mar 28  2013 Share -> /??/UNC/Bliss/Share
drwxr-xr-x 2            0 Jul  6  2011 Symbols/
drwxr-xr-x 2            0 Jan 20 22:13 System Volume Information/
drwxr-xr-x 2            0 Sep  9 17:44 Users/
drwxr-xr-x 2            0 Jan 12  2014 Win/
drwxr-xr-x 2            0 Jan 17 16:36 Windows/
l--------- 1            0 Mar 21  2014 bin -> /??/C:/windows/system32/cygwin/bin  ## (note, link in W/S32/Cyg/bin points to 64-bit cyg)
-rwxr-xr-x 1           27 Apr 19  2011 boot*
drwxr-xr-x 2            0 Jul  2  2010 boot.d/
-rwxr-xr-x 1           90 Apr 19  2011 boot.ini*
drwxr-xr-x 2            0 Jan 12  2014 cygcommon/
drwxr-xr-x 2            0 Oct  8 17:06 cygwin/
drwxr-xr-x 2            0 Jan  9 20:01 cygwin64/
drwxr-xr-x 2            0 Nov 23 03:34 dev/
drwxr-xr-x 2            0 May 17  2014 devv-/
l--------- 1            0 Apr 11  2014 etc
-rwxr-xr-x 1       208876 Feb 17  2009 grldr*
drwxr-xr-x 2            0 Oct 12 12:58 inetpub/
l--------- 1            0 Jan 13  2014 lib
l--------- 1            0 Dec 16  2009 m -> /??/UNC/Bliss/Music
drwxr-xr-x 2            0 Jun 10  2012 mnt/
drwxr-xr-x 2            0 Jan 12  2014 opt/
l--------- 1            0 Jul 12  2010 p -> /??/UNC/Bliss/Pictures
-rwxr-xr-x 1 103079215104 Jan 10 21:21 pagefile.sys*
drwxr-xr-x 2            0 Jan 23  2014 proc/
l--------- 1            0 Apr 21  2013 prog64 -> Program Files/
-rwxr-xr-x 1         1372 Oct 12 01:37 pulseaudio.exe.stackdump*
l--------- 1            0 Jan 13  2014 sbin
l--------- 1            0 Jan 12  2014 temp -> tmp/
drwxr-xr-x 2            0 Jan 20 23:40 tmp/
l--------- 1            0 Jan 13  2014 usr
l--------- 1            0 Jan 13  2014 var
drwxr-xr-x 2            0 Aug 28  2013 windowsearch/

Все ссылки разрешаются как в Windows (7), так и в Linux. Раньше у меня были некоторые в красном, указывая, что symlink не может быть разрешен, но в дополнение к тому, чтобы убедиться, что пути работают как из Windows, так и из Linux, является данным (некоторые из которых я пробовал относительные связи, которые я испортил), основная проблема была в том, что были указаны сломанные «JUNCTION», а не «SYMLINKD» (как отмечено в «» cmd.exe «» и выполняется «» dir «» в корне этого общего ресурса.

Теперь я знаю, в общем, есть различия в реализации, НО, реализации symlink [d] совместимы с (предусмотрены следующие пути: правильно. Т.е. На Windows «cmd, dir» показывает:

11/29/2012  07:14 PM    <SYMLINKD>     Home [C:\Users]

На Windows в cygwin он показывает:

lrwxrwxrwx   1            6 Nov 29  2012 Home -> /Users/

и на linux с помощью клиента CIFS, он показывает:

l--------- 1            0 Nov 29  2012 Home -> /??/C:/Users/

Windows хранит свои symlinks (сделанные с помощью mklink или mklink/d для каталогов) в одном формате с windows-путем.

Linux гораздо более универсален в том, что он позволяет, и вы можете создать dir называется «/?? »в «/», при этом мне нужны были 2 записи:

lrwxrwxrwx 1 10 Feb 28 15:43 C: -> ../Athenae/
drwxrwx---+ 3 44 Feb 28 16:13 UNC/

Первый - обычный linux symlink, затем второй - dir.

Athenae - windows машина, экспортирующая его 'root (C:)' диск в linux-клиент; на клиенте linux, который монтируется в/Athenae. Итак, любая ссылка на C:из windows symlink будет указывать обратно на корень смонтированного общего ресурса на linux.

Под UNC я поместил имена хостов, которые я хотел сделать работу (все равно как имя для сервера Linux 1, но на него ссылаются по-другому в различные места, потому что это также контроллер домена):

lrwxrwxrwx  1  6 Feb 28 16:12 Bliss -> Ishtar/
drwxrwx---+ 2 61 Feb 28 16:18 Ishtar/
lrwxrwxrwx  1  6 Feb 28 16:13 ishtar -> Ishtar/

(хотя случай не имеет значения для окон, он делает на linux, таким образом, альтернативный заглавие имени хоста и имени домена, оба указывают на 1 реальный dir, где я ставлю symlinks для разрешения). где я ПРИМЕЧАНИЕ: некоторые из этих акций являются «ПОЛЬЗОВАТЕЛЬСКИМИ» специфичными, и поскольку нельзя поместить «переменные имена» в symlink (еще...?), как: ln-s '$ HOME/Documents' Documents , мне пришлось указать ссылку Documents symlink на фиксированное место - не проблема в моем случае, поскольку я единственный, кто пытается разрешить symlinks этого смонтированного общего ресурса Windows с клиентом Linux CIFS).

(Некоторые из старых разговоров о проблемах связи, которые я ранее видел).

Если вы подключаетесь с сервера на основе Linux w/samba, это очень разные правила - но samba может следовать linux symlinks, если он настроен с расширениями linux, widelinks и «клиент управляется широкие ссылки = да», param set (хотя более поздний param был « неправильно » переименован в:

allow insecure wide links = yes

, поскольку большинство администраторов Windows не разрешают пользователям входить на свой сервер и, таким образом, считают это недостатком своей политики безопасности. Для тех администраторов Windows, которые используют разрешения и списки ACL для управления доступом и имеют «доверенных пользователей» (я и домашние, в основном), это был не недостаток, а благословение.

Все зависит от вашей «политики безопасности»...; -)

Надеюсь, это добавит определённую ясность для общих ресурсов, используемых из Windows и доступных через linux (или windows)...

p.s. никакие атаки не подразумевали и не подразумевали!; -)

--- последние cifs-utils, кажется, показывают все symlinks, присутствующие в окнах, а также любой linux symlink (т.е. если цель существует, они работают):

Ishtar:/athenae> uname -a
Linux Ishtar 3.19.3-Isht-Van #1 SMP PREEMPT Tue Apr 7 21:40:02 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux 
 Ishtar:/athenae>  ll |grep -- '->'|sed 's/^/    /'
 l--------- 1            0 Jul 16  2013 D -> /??/UNC/Ishtar/Documents/
 l--------- 1            0 Feb 28 16:38 M -> /??/UNC/Bliss/Music/
 l--------- 1            0 Feb 28 16:10 P -> /??/UNC/Bliss/Pictures/
 l--------- 1            0 Mar 28  2013 Share -> /??/UNC/Bliss/Share/
 l--------- 1            0 Mar 21  2014 bin -> /??/C:/windows/system32/cygwin/bin/
 l--------- 1            0 Feb 28 15:34 etc -> /??/C:/Windows/System32/cygwin/etc/
 l--------- 1            0 Mar  5 14:32 lib -> /??/C:/Windows/System32/cygwin/lib/
 l--------- 1            0 May 14 07:15 opt -> /??/C:/Windows/System32/cygwin/opt/
 l--------- 1            0 Apr 21  2013 prog64 -> Program Files/
 l--------- 1            0 Mar  5 14:33 sbin -> /??/C:/Windows/System32/cygwin/sbin/
 l--------- 1            0 Jan 12  2014 temp -> tmp/
 l--------- 1            0 Mar  5 14:35 usr -> /??/C:/Windows/System32/cygwin/usr/
 l--------- 1            0 Mar  5 14:35 var -> /??/C:/Windows/System32/cygwin/var/

Все эти ссылки «разрешаются» и указывают на то, что они должны... В поле Linux.

Теперь, они наоборот - linux symlinks - они не рассматриваются как «symlinks» на windows-клиенте - но linux-клиент может видеть windows symlinks для того, что они есть, и выбрать скопировать их или следовать за ними. Это использование cifs-utils-6.4-3.2.2.x86_64.

Я нахожу это удивительным... Я должен иметь возможность сделать полное «смоляное» резервное копирование из linux (если я получу SID- > UID mapping работает, он даже должен иметь правильное владение и ACL)....

0
27.01.2020, 20:17

Теги

Похожие вопросы