Mam katalog na mount nfs, który jest na serwerze /home/myname/.rubies
Root nie może uzyskać dostępu do tego katalogu:
[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
Próbuję skopiować coś z tego katalogu, do /opt
którego tylko root ma dostęp do:
[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
Oczywiście mogę wykonać następujące czynności (i na razie to zrobiłem):
[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/
Czy jest jakiś sposób na zrobienie tego, co nie wymagałoby skopiowania go jako kroku pośredniego lub zmiany uprawnień?
permissions
root
file-copy
Mitch
źródło
źródło
cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /opt
czy to nie zadziała? Jeśli nie, dlaczego?cp <file> /tmp/tmpfile
Odpowiedzi:
Możesz użyć
tar
jako proces buforowyPierwszy
tar
działa tak jak Ty i możesz czytać swój katalog domowy; drugitar
działa poniżejsudo
i może pisać/opt
.źródło
cpio
może być używany w podobny sposób.-C
argumentu do zmiany katalogu (tjtar cf - ruby-2.1.3 | sudo tar -C /opt xpf -
.). Warto wspomnieć, że chcesz się upewnić, żesudo
nie poprosi o twoje hasło (np. Poprzezsudoers
wpis lub dane z pamięci podręcznej).Możesz użyć
rsync
lub,scp
aby skopiować zuser@localhost
katalogu lokalnego.Przykład dla
rsync
:Możesz alternatywnie
jeśli pozwolisz rootowi na bezpośredni dostęp do lokalnego hosta (niezalecane; zwykle wolimy dostęp do roota przez via
sudo
).źródło
Możesz wprowadzić drugi wpis w FAT (lub cokolwiek innego).
Robię to dla mojego
HOSTS
pliku. Mam link do zapisywalnego katalogu, który odnosi się do pliku i ma on różne uprawnienia, więc mogę/Hosts/HOSTS
go łatwo modyfikować, a zmiany są umieszczane w obu plikach (tj. „Jednym”). To 2 wpisy dla 1 pliku. Przepraszam, nie pamiętam polecenia.Dla ciebie tworzysz link do
/opt
wszystkich plików w.rubies
, a kiedy cokolwiek zmienisz/opt
, jest to ten sam plik co w.rubies
.źródło