
이런 질문도 받았어요여기.
bash에서 sudo를 사용하여 일부 디렉터리(dir)를 재귀적으로 복사하면 dir 계층 구조의 첫 번째 수준만 복사되지만 sudo 없이 사용하면 모든 하위 디렉터리와 함께 dir이 복사됩니다. sudo의 존재.
왜 이런 일이 발생합니까?
예를 들어:
k@l:/$ tree
.
|
|__a
| |
| |__b
| |
| |__1.htm
|
|__c
k@l:/$ sudo cp -r /a/b /c/d
k@l:/$ cd /c
k@l:/c$ ls
d
k@l:/c$ cd d
bash: cd: /c/d: Permission denied
k@l:/c$ tree
.
|__d [error opening dir]
1 directory, 0 files
답변1
그렇게 하면 sudo cp -r /a/b /c/d
폴더가 /c/d/
루트를 소유자로 하여 루트로 복사되므로 다음과 같은 결과가 나타납니다.권한이 거부되었습니다디렉토리를 열려면 루트 권한이 필요하므로 /c/d/
루트 터미널에서 열어보십시오. 또는 파일 소유자를 변경하거나 chown
/를 사용하여 권한을 수정해야 chmod
현재 사용자가 폴더에 액세스할 수 있습니다.
참고: 프로그램이 아닌 쉘 명령 sudo cd
이므로 작동하지 않습니다 .cd
답변2
어쩌면 /c/d가 다른 소유자에게 700 권한을 가지고 있었을 수도 있습니다. 노력하다 sudo chmod -R 755 /c/d
.
답변3
cp -a
대신에 사용하고 싶습니다 cp -r
. 후자는 일부 파일 속성을 유지하지 못할 수도 있습니다.
답변4
명령 을 변경하는 대신 다음과 같은 작업을 수행하는 특정 사용자로 cp
실행할 수 있습니다.sudo
sudo -u thisUser cp -r /a/b /c/d
thisUser
그럼에도 불구하고 이는 다음에 대한 권한이 있는 경우에만 작동합니다./a/b