Я соглашаюсь, что это не имеет большой смысл при размышлении о символьной ссылке как о символьной ссылке.
Но если Вы думаете о символьной ссылке как о том, чтобы быть похожем на жесткую ссылку, оно имеет больше смысла.
Первая строка man 7 symlink
говорит точно это
Symbolic links are files that act as pointers to other files. To understand their behavior, you must first understand how hard links work. A hard link to a file is indistinguishable from the original file because it is a reference to the object underlying the original filename. [...] Changes to a file are independent of the name used to reference the file.
Так, с жесткой ссылкой при изменении полномочий на файле через любое имя базовые полномочия изменяются для всех имен.
Большинство инструментов пытается следовать за символьными ссылками, так, чтобы можно было притвориться, что это - действительно жесткая ссылка.
Except as noted below, commands follow symbolic links named as command-line arguments. The mv(1) and rm(1) commands do not follow symbolic links named as arguments, but respectively attempt to rename and delete them. Commands traversing a file tree [...]
Создание символьных ссылок (или жесткие ссылки) к двоичным файлам иногда полезно, но поскольку Вы просто обнаружили, оно действительно создает некоторые угловые случаи, которые могли вызвать проблемы.
Тем не менее я думаю, что большая проблема здесь использовала sudo
когда это было не нужно.
Если у другого пользователя, как предполагалось, был доступ для чтения к Вашему ~/bin
, затем sudo
было абсолютно ненужным.
Или если у них не было доступа, Вы, возможно, предоставили его (например, использование chmod g+rx $HOME/bin
), или предоставил им tarball.
Если Вы все еще думаете с помощью sudo
хорошая идея, вот несколько альтернатив:
sudo chown -h $USER $HOME/bin/*
chmod 755 $HOME/bin/*
-h
говорит chown
не следовать за символьными ссылками
chmod -R 755 $HOME/bin/*
-R
говорит chmod "пересекать дерево файла", которое заставляет его проигнорировать символьные ссылки, как намекнули выше в man 7 symlink
.
sudo find $HOME/bin/ -type f -exec chmod 755 {} +
-type f
говорит find
не выполнять исполнительную команду (в этом случае chmod
) на символьных ссылках.
# as user 2
cd ~user2/bin
sudo tar -C ~user1/bin -cf - . | tar -xf -
выполнения tar -cf
как базируются, таким образом, Вы видите любые файлы, но выполнения tar -xf
как user2, который заставляет извлеченные файлы принадлежать user2.
Если Вы ищете что-то легкое, и легкое для установки sshfs является безусловно самым легким настроить. Sshfs монтирует удаленные каталоги через ssh и представляет их как локально смонтированные каталоги и файлы. Это звучит более сложным, чем это на самом деле удается, чтобы быть.
Сначала удостоверьтесь, что у Вас есть sshfs, установленный в системе, где Вы будете желать создать, монтируется. Например, скажите, что у меня есть свой ноутбук и удаленный сервер. Я установил бы sshfs
на моем ноутбуке так, чтобы я мог смонтировать каталоги локально на нем от удаленного сервера.
$ sshfs sam@skinner:/home/sam/docs ~/far_projects
$ ls -l ~/far_projects/
total 1260
drwxr-x--- 1 5060 users 4096 Mar 30 2004 acronyms
drwxr-xr-x 1 5060 users 4096 Nov 16 2008 articles
drwxr-xr-x 1 5060 users 4096 Nov 16 2008 bookmark_repository
drwxr-xr-x 1 5060 users 4096 Oct 14 2009 books
drwxr-xr-x 1 5060 users 4096 Nov 15 2008 cheatsheets
-rw-r--r-- 1 5060 users 6855 Feb 19 2009 cheatsheet.txt
Когда Вы сделаны с монтированием, можно использовать команду fusermount
размонтировать его.
$ fusermount -u ~/far_projects
$ ls ~/far_projects/
$
В эти типы монтирования можно даже интегрировать /etc/fstab
.
Можно использовать экспорт NFS для совместного использования папки
На Вашем Server_1 Linux, где Вы хотите совместно использовать папку, делают следующее:
echo /shared_folder *(rw,sync) >> /etc/exports
/etc/init.d/nfs restart
Сделайте следование Вашего Linux server_2, где необходимо смонтировать совместно используемую папку от server_1:
mkdir /shared_folder
mount -t nfs Server_1:/shared_folder /shared_folder