Я работаю с Ubuntu и у меня есть jar-файл в этой папке/export/home/david
И я вошел в систему machineB
как david
пользователь.
Какой-то другой пользователь также вошел в эту же машину. И я хочу, чтобы другой пользователь скопировал указанный выше jar-файл из моего местоположения.
Но почему-то они не могут этого сделать, так как им отказывают в разрешении. Есть ли способ добавить разрешение на этот jar-файл или на мою папку, чтобы любой мог копировать файлы из этой папки?
Обновлять:-
Ниже представлен результат, который я получил:
david@machineB:~$ groups david
david : uucp
otheruser@machineB:~$ groups otheruser
otheruser : app
david@machineB:~$ ls -l foo.jar
-rw-r--r-- 1 david uucp 6543346 2014-03-07 18:27 foo.jar
david@machineB:~$ ls -ld $(echo "/home/david/foo.jar" | sed -r ':a; s#(.*)/[^/]*$#\1#;p;ta')
drwxr-xr-x 22 root root 4096 2014-05-04 08:04 /home
drwx------ 4 david uucp 4096 2014-03-07 18:36 /home/david
решение1
Ну, по какой-то странной причине ваш $HOME
каталог доступен только вам. Это не настройка по умолчанию ни в одной из известных мне систем, вы или ваш системный администратор, вероятно, настроили его таким образом.
В любом случае, все, что вам нужно сделать, это предоставить всем доступ на чтение/исполнение к вашему $HOME
. Это норма для большинства многопользовательских систем, позволяющая людям делиться своей работой. Просто выполните эту команду:
chmod a+rx ~/
Это установит разрешения для вашего домашнего компьютера rwxr-xr-x
и позволит любому человеку копировать файлы из вашего $HOME
.
решение2
Чтобы предоставить кому-либо доступ на чтение к вашему файлу, у него должны быть права на чтение файла и права на выполнение всех каталогов, ведущих к файлу. Например, чтобы разрешить Алисе читать /home/david/for_alice/foo.jar
, вам нужно убедиться, что у Алисы есть права на чтение foo.jar
и права на выполнение /home/david
и /home/david/for_alice
. Права на выполнение каталога необходимы для доступа к файлам внутри этого каталога по их имени; права на чтение каталога необходимы для перечисления имен файлов в каталоге. Права на чтение каталогов не являются строго обязательными, но они более удобны, особенно если Алиса собирается использовать графический интерфейс для просмотра файлов.
На данный момент ваш домашний каталог имеет разрешения rwx------
, т.е. только вы можете получить доступ к файлам в нем.
Если файлы локальные и доступны инструменты ACL, вы можете предоставить доступ Алисе. Следующие команды предоставляют Алисе доступ на чтение for_alice
и все файлы в них, но не позволяют ей перечислять файлы в вашем домашнем каталоге (она все равно может получить доступ к файлам в вашем домашнем каталоге, если угадает их имя):
setfacl -m user:alice:x ~
setfacl -Rd -m user:alice:rX ~/for_alice
setfacl -R -m user:alice:rX ~/for_alice
Если использование списков контроля доступа невозможно, вам придется разрешить доступ на уровне всей группы или всей системы.
chmod +x ~
chmod -R a+rX ~/public
решение3
chmod o+r /path/to/file
предоставит всем права на чтение файла, который вы хотите, чтобы ваши друзья могли копировать.
chmod -R o+r /path/to/directory; find /path/to/directory -type d -exec chmod o+x {} \+
чтобы разрешить другим пользователям читать все файлы в /path/to/directory
. Как указал Патрик, вам chmod o+rx
также нужно будет добавить world read и execute ( ) для всех родительских каталогов. Я не знаю навскидку самого простого способа написать этот скрипт, но я уверен, что это возможно.