На Mac с запущенным Mountain Lion общий ресурс «Мультимедиа», обслуживаемый QNAP NAS, монтируется как корень через SAMBA в Finder. Допустим, я создаю символическую ссылку каталога на NAS, например:
[/share/Multimedia] # ln -s /share/MD0_DATA/Multimedia/test/ ./folder/symlink
Оно работает:
[/share/Multimedia] # ls -la folder
lrwxrwxrwx 1 admin administ 34 Oct 14 19:24 symlink -> /share/MD0_DATA/Multimedia/test//
Я также могу mv
и cp
файлы без проблем туда и обратно symlink
при входе в систему NAS.
Это ситуация на стороне клиента, Mac под управлением 10.8.2:
client:~ myself$ id
uid=501(myself) gid=20(staff) groups=20(staff),401(com.apple.access_screensharing),
12(everyone),33(_appstore),61(localaccounts),79(_appserverusr),80(admin),
81(_appserveradm),98(_lpadmin),100(_lpoperator),204(_developer)
Как ни странно, клиент symlink
этого не признает; вместо этого это обычный каталог (обратите внимание, что в соответствии с выводом у меня есть rwx
разрешения):
client:folder myself$ ls -la
drwx------ 1 myself staff 16384 18 Okt 23:25 symlink
То же самое происходит в Finder, где папка symlink
отображается не как псевдоним, а как обычная папка.
Я могу cd
в symlink
и я также могу читать файлы в нем без проблем. То же самое в Искателе.
Если я попытаюсь записать ( mv
или cp
) файл symlink
на стороне клиента, произойдет сбой:
client:folder myself$ mv test.txt symlink/
mv: rename test.txt to symlink/test.txt: No such file or directory
Аналогично, любая попытка переместить или скопировать файл symlink
с помощью перетаскивания в Finder возвращает следующую ошибку:
Операция не может быть завершена, так как не удается найти один или несколько требуемых элементов. (Код ошибки = -43).
(Перемещение/копирование файла из symlink
другого места на NAS работает нормально.)
Вот результат операции записи в Терминале:
client:symlink myself$ touch text.txt
touch: text.txt: Permission denied
Интересно, что я могу успешно удалить уже существующие файлы:
client:symlink myself$ ls -la
total 64
drwx------ 1 myself staff 16384 18 Okt 23:51 .
drwx------ 1 myself staff 16384 18 Okt 23:48 ..
-rwx------ 1 myself staff 5 18 Okt 23:51 text.txt
client:symlink myself$ rm text.txt
client:symlink myself$ ls -la
total 64
drwx------ 1 myself staff 16384 18 Okt 23:56 .
drwx------ 1 myself staff 16384 18 Okt 23:48 ..
В соответствующем КБ Apple говорится, что ошибка -43 может иметь три причины:
ls -la
вывод выше. Я монтирую общий ресурс с учетной записью администратора NAS и вхожу в систему как администратор на своем клиенте Mac. )Вот еще информация по устранению неполадок:
Глобальные параметры в /etc/smb.conf
NAS установлены следующим образом:
[global]
passdb backend = smbpasswd
workgroup = WORKGROUP
security = USER
server string =
encrypt passwords = Yes
username level = 0
map to guest = Bad User
null passwords = yes
max log size = 10
socket options = TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=65536 SO_RCVBUF=65536
os level = 20
preferred master = no
dns proxy = No
smb passwd file=/etc/config/smbpasswd
username map = /etc/config/smbusers
guest account = guest
directory mask = 0777
create mask = 0777
oplocks = yes
locking = yes
disable spoolss = yes
load printers = no
force directory security mode = 0000
veto files = /.AppleDB/.AppleDouble/.AppleDesktop/:2eDS_Store/Network Trash Folder/Temporary Items/TheVolumeSettingsFolder/.@__thumb/.@__desc/:2e*/
delete veto files = yes
map archive = no
map system = no
map hidden = no
map read only = no
deadtime = 10
use sendfile = yes
display charset = UTF8
unix extensions = no
store dos attributes = yes
client ntlmv2 auth = yes
dos filetime resolution = no
min receivefile size = 4096
case sensitive = auto
domain master = auto
local master = yes
inherit acls = yes
wide links = yes
follow symlinks = yes
wins support = no
force unknown acl user = yes
template homedir = /share/homes/DOMAIN=%D/%U
domain logons = no
Конкретные варианты:
[Multimedia]
comment = System default share
path = /share/MD0_DATA/Multimedia
browsable = yes
oplocks = no
ftp write only = no
public = yes
invalid users =
read list = @"everyone","gast"
write list = "admin","guest"
valid users = "root",@"everyone","admin","guest","gast"
inherit permissions = yes
Журналы на стороне клиента мало что говорят:
/private/var/log/system.log
(который включает kernel.log начиная с 10.8) показывает случайные записи, такие как:
Oct 18 22:13:43 client kernel[0]: smb_iod_reconnect: Reconnected share MULTIMEDIA with server qnap-SAMBA._smb._tcp.local
И /private/var/log/samba/
не существует в моей системе.
Буду признателен за любую оказанную помощь.
В вашей конфигурации у вас unix extensions = no
все в порядке, но именно поэтому символические ссылки на сервере отображаются как папки, а не псевдонимы. В этом режиме сервер разрешает символические ссылки, и клиент их никогда не видит. Если клиент пытается создать символическую ссылку, сервер фактически создает файл псевдонима, а не символическую ссылку хост-ОС. Причины этого включают в себя безопасность (предотвращение доступа кого-либо к /etc/passwd
серверу путем создания символической ссылки на него) и совместимость клиентов, поскольку OS X, Windows и Unix имеют несколько разные представления о том, что представляет собой символическая ссылка, но они в значительной степени совпадают. что такое каталог или файл.
Проблемы с разрешениями в SAMBA сложны, поэтому не ясно, что у вас нет проблем с разрешениями. Точно так же символическое разрешение сложно, поэтому неясно, что то, что вы делаете, должно теоретически работать, и всегда есть вероятность ошибки (скорее всего, в сервере SAMBA).
При доступе к серверу SAMBA с Mac используются следующие идентификаторы и разрешения:
Поэтому, несмотря на то, что вы предоставили много информации, все еще не ясно, что у вас нет проблем с разрешениями. Тот факт, что вы можете mv
и cp
на сервере (используя какую учетную запись?), не означает, что у вас нет проблемы с разрешениями, которая не позволяет вам делать это на клиенте (используя какие учетные записи и с какой действующей учетной записью на сервере?).
Если сервер поддерживает ACL и поскольку у вас есть такие параметры, как inherit permissions = yes
и inherit acls = yes
set, может возникнуть какая-то проблема ACL, которая разрешает доступ только для чтения к каталогам, доступ к которым осуществляется через символические ссылки. Есть несколько других способов исследования, основанных на конфигурации сервера.
Я действительно ожидаю, что вы сможете найти больше информации в журналах сервера SAMBA, чем вы сообщили. Они должны дать вам гораздо лучшее представление о том, что именно отрицается.
Что бы это ни стоило, я попытался продублировать вашу настройку, используя хост Ubuntu 12.04 в качестве сервера SAMBA, и не смог воспроизвести вашу проблему. Символические ссылки работали для меня, как и ожидалось.
[~] # tail -f /var/log/log.smbd [2012/10/24 00:00:06, 0] smbd/server.c:1329(main) smbd version 3.5.2 started. Copyright Andrew Tridgell and the Samba Team 1992-2010 [2012/10/24 00:00:09.447243, 1] smbd/service.c:1073(make_connection_snum) client (***.***.***.***) connect to service Multimedia initially as user admin (uid=0, gid=0) (pid 28255) [2012/10/24 00:00:17.518605, 1] smbd/service.c:1073(make_connection_snum) [2012/10/24 00:03:06.528095, 0] smbd/server.c:313(remove_child_pid) Could not find child 28314 -- ignoring
clt60
ls -ld /share/MD0_DATA/Multimedia/test/
результат команды. Итак, каково разрешение каталога, на который указывает символическая ссылка.БРК
drwxrwxrwx 2 admin administ 4096 Oct 19 21:12 test/
.БРК
ln -s /share/MD0_DATA/Multimedia/test/ etc.
кажется, это неправильный синтаксис (обратите внимание на косую черту в конце). Однако этоln -s /share/MD0_DATA/Multimedia/test etc.
не меняет ситуации.clt60
cd /share/MD0_DATA/Multimedia/folder; ln -s ../test ./symlink
. Вероятно, это не помогает, но у меня нет другой идеи, и, возможно, экспорт несколько искажает абсолютные пути в представлении клиента...Старый профессионал
mv
передавать файлы туда и обратно », и «Если я попытаюсь записать ( или ) файл в , это не удастся», поэтому я запутался.cp
symlink
mv
cp
symlink
БРК
БРК
Грэм Перрин
Грэм Перрин
Грэм Перрин