копировать файл от пользователя к другому в linux

Я пытаюсь скопировать файл из моего домашнего каталога в другой каталог пользователя. У меня есть sudo доступ для другого пользователя без пароля. Я попытался сделать что-то вроде:

sudo secondUser cp /home/firstUser/file /home/secondUser 

Есть ли способ сделать это? также у меня нет доступа root, и я не знаю пароль второго пользователя.

5 Solutions collect form web for “копировать файл от пользователя к другому в linux”

EDIT: есть способ сделать это быстро и легко без дополнительной настройки.

 cat ~firstUser/file | sudo -u secondUser tee ~secondUser/file >/dev/null 

Это точно передаст содержимое файла. Если вы заботитесь о том, чтобы разрешения на файл и / или временные метки совпадали с оригиналом, вам нужно будет исправить их отдельно, используя chmod и touch .


ОРИГИНАЛЬНЫЙ ОТВЕТ:

Проблема здесь в том, что:

  • secondUser не имеют доступа к вашему домашнему каталогу.
  • У вас нет доступа к домашнему каталогу secondUser .

Таким образом, независимо от того, запускаете ли вы команду cp как самостоятельно или как secondUser , он не может выполнить копирование файла.

Учитывая, что вы сказали, что у вас нет доступа root , очевидным ответом является копирование файла через промежуточное общедоступное для чтения местоположение, такое как /tmp и изменение разрешений файла на читаемый мир. Если данные в файле чувствительны, вы, возможно, не захотите этого делать, потому что любой, кто на сервере, сможет прочитать файл во время его транзита. Если это не конфиденциальные данные, просто выполните:

 cp file /tmp/ chmod a+r /tmp/file sudo -u secondUser cp /tmp/file ~secondUser rm /tmp/file 

Лучшим вариантом, если вы можете его организовать, является создание группы, которая содержит только вас и secondUser , и chgrp копия файла в /tmp принадлежащая этой группе. Таким образом, вам не нужно делать файл мир доступным, но только читаемым группой (с chmod g+r /tmp/file ). Тем не менее, groupadd сам требует доступа root, так что это вряд ли будет легко организовать. В зависимости от обстоятельств (если вы часто пытаетесь поделиться / сотрудничать с secondUser это может быть применимо), вы можете попросить своего администратора настроить эту группу для будущего использования.

Проблема с:

 sudo -u secondUser cp /home/firstUser/file /home/secondUser 

заключается в том, что как только вы станете secondUser , у вас нет доступа к /home/firstUser/file .

Решение заключается в том, что вам нужно открыть файл для secondUser как firstUser а secondUser наследует этот файловый дескриптор.

В качестве меры безопасности sudo закроет все дескрипторы файлов, кроме 0 , 1 и 2 , однако это все, что вам нужно в этом случае (вы можете явно разрешить наследование для большего количества filedescriptors):

 sudo -u secondUser < /home/firstUser/file sh -c 'cat > /home/secondUser' 

Для более общего решения с возможным сохранением метаданных вы можете поместить вывод чего-то типа tar или cpio в stdin процесса sudo :

  tar c file1 file2 file3 | sudo -u secondUser tar x -C ~secondUser 

Ты можешь сделать

 su secondUser 

а затем делать вещи в качестве второго пользователя.

Скопируйте файл в / tmp и измените разрешения на 777. su второму пользователю. Скопируйте файл из / tmp.
sudo secondUser команда sudo secondUser .

Флаг -u для sudo позволит вам указать учетную запись пользователя, под которой должна выполняться команда, но вам потребуется знать пароль другого пользователя.

 sudo -u secondUser cp file /home/secondUser/file 

Если вы не знаете пароль другого пользователя, возможно, вы не сможете этого сделать. Это часть стандартной схемы разделения привилегий системы и, в идеале, не может быть обойдена.

Вы также можете перенести файл в место, где у него есть доступ к этим учетным записям, например / tmp, и чтобы второй пользователь переместил его в свой собственный домашний каталог.

  • sudo kill: операция не разрешена через SSH
  • Сломанный sudo на веб-сервисах amazon ec2 linux centOS
  • Команда, чтобы заставить пользователя вводить пароль - RHEL / Centos
  • Удалив vim-minimal, я удалил sudo
  • Как я могу предотвратить использование sudoer главного ключа LUKS?
  • Вызов скрипта с sudo игнорирует shebang
  • Как запускать несколько команд sudo по уже открытому ssh-соединению
  • / etc / profile не получен для `sudo su`
  • RHEL sudo еще не разрешено для пользователя tina '
  • настройки sudoers для подключения сетевых ресурсов и устройств loop и разного рода
  • Как завершается работа Bash с помощью sudo?
  • Ошибка при добавлении пользователя в группу колес в CentOS 7
  • Linux и Unix - лучшая ОС в мире.