У меня есть каталог на монтирование NFS, которое на сервере находится в /home/myname/.rubies
Root не может получить доступ к этому каталогу:
[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
File: `/home/mitchell.usher/.rubies'
Size: 4096 Blocks: 8 IO Block: 32768 directory
Device: 15h/21d Inode: 245910 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 970/mitchell.usher) Gid: ( 100/ users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000
[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied
Я пытаюсь скопировать что-то из этого каталога, к /opt
которому только root имеет доступ:
[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied
[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied
Очевидно, что я могу сделать следующее (и это то, что я сделал в настоящее время):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
Есть ли способ сделать это, который не будет включать копирование в качестве промежуточного шага или изменение разрешений?
permissions
root
file-copy
Митч
источник
источник
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
это не сработает? Если нет, почему?cp <file> /tmp/tmpfile
Ответы:
Вы можете использовать
tar
как буферный процессПервый
tar
запускается как вы и так можете прочитать ваш домашний каталог; втораяtar
работает подsudo
и поэтому может писать в/opt
.источник
cpio
можно использовать во многом таким же образом.-C
аргумент для изменения каталога (т.е.tar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
). Стоит упомянуть, что вы хотите убедиться, чтоsudo
не будут спрашивать ваш пароль (например, черезsudoers
запись или кэшированные учетные данные).Вы можете использовать
rsync
илиscp
для копированияuser@localhost
в локальный каталог.Пример для
rsync
:Вы могли бы альтернативно
если вы разрешите root доступ напрямую к localhost (не рекомендуется; обычно мы предпочитаем доступ через root
sudo
).источник
Вы можете сделать вторую запись в FAT (или как угодно).
Я делаю это для моего
HOSTS
файла. У меня есть ссылка в доступном для записи каталоге, которая ссылается на файл, и у него есть другие права доступа, поэтому я/Hosts/HOSTS
могу легко изменять, и изменения помещаются в оба (т. Е. "Один") файла (ов). Это 2 записи для 1 файла. Я не помню команду, извините.Для вас вы делаете ссылку
/opt
на все файлы в.rubies
, а когда вы что-либо изменяете/opt
, это тот же файл, что и в.rubies
.источник