chown -R user : user. * 권한을 거꾸로 변경 함 : 이것이 올바른 동작입니까?


8

에있는 폴더의 권한을 변경할 때 많은 문제가 발생 myfolder했습니다 /. 나는 명령을 내렸다

sudo chown -R luca:luca /myfolder/.*

내 의도는의 모든 숨겨진 파일의 소유권을 변경하는 것이 었습니다 /myfolder.

불행히도 나는 소유권 /이 변경 되었다는 것을 깨달았습니다. 물론 시스템이 깨졌습니다. 나는 이것이 ..일치 하기 때문에 일어났다 고 생각 .*하지만 여전히 나에게는 이상한 것 같습니다.

상위 디렉토리를 변경하면 올바른 동작입니까, 아니면 버그 보고서를 제출해야합니까?

chown을 사용하는 것이 실수라면 시스템 폴더와 파일의 소유권을 변경하지 못하게하는 가장 좋은 방법은 무엇입니까?


4
이것은 ..일치하는 행동입니다.*
Uwe Plonus

.*로 끝나는 . *.모든 파일은 다음으로 시작하는 모든 파일을 의미합니다..
NickTux

4
@NikTh 그것은 다른 방법으로 라운드!
Uwe Plonus

한 가지 모범 사례는 /완전히 필요하지 않은 한 직접 수정하지 않고 (폴더 만들기, 제거 등) 수행 할 수 있는 문제에 대한 질문을하는 것입니다. 또한 와일드 카드 + 루트 권한을 사용하면 위험 할 수 있습니다. 와일드 카드의 영향을 100 % 확실하지 않기 때문입니다.
edwin

1
그것은 관련되어 @LucaCerone chmodchown유사한 명령입니다,와 모두 시작은 ch, 포함 o하고 두 개의 다른 유사한 문자 (이 nm). </ literal> 진지하게, 둘 다 형식입니다 : [cmd] -R [mode or user] [one or more files]. 이 질문에 제공된 일부 솔루션은 귀하의 경우에도 효과적입니다 ( 예 : Sean Reifschneider (중간)). 이 답변 은 숨겨지지 않은 파일 의 glob 패턴을 제거하여 숨겨진 파일 에만 적용 할 수 있습니다.
Lekensteyn

답변:


5

명령 행은 실행되기 전에 쉘에 의해 확장 (해석)됩니다.

sudo chown -R luca:luca /myfolder/.*

먼저 다음과 같이 해석됩니다.

sudo chown -R luca:luca /myfolder/.  /myfolder/.. /myfolder/.adobe  /myfolder/.bash_history

유의 /myfolder/..명령 줄에서

chown -R luca:luca /myfolder/..chown -R luca:luca /
chown을 "뒤로"실행시키는 것과 같습니다.

echo /myfolder/.*"*"를 사용하여 확인할 때 사용하십시오 .


@ Emmanuel : 왜 xargs를 사용하고 -R 옵션이 충분한 지 알아 보시겠습니까?
1 월

@ 엠마누엘 : 감사합니다! 찾기와 xargs에 대해 조금 확장 할 수 있습니까?
lucacerone

@LucaCerone 왜이 파일을 수락했는지 잘 모르겠습니다 .의 모든 파일 이 재귀 적으로 변경 됩니다 . 이 명령은 불필요하며 공백이 포함 된 파일 이름으로 중단됩니다. (재귀 적으로 파일을 변경하려는 경우 와 비슷합니다 ). /myfolderfindfind /myfolder | xargs chown luca:lucachown -R luca:luca /myfolder
Lekensteyn

Lekensteyn이 맞습니다 ^.
Emmanuel

@Lekensteyn 나는 공간이 일치하지 않도록 찾기를 변경했습니다
Emmanuel

4

잘. 루트로서의 명령 행은 매우 강력합니다. 고전 중 일부를 읽으십시오 . 맞습니다. .*일치하는 ..것이 정확히 의도 된 것입니다. 도트는 특수 문자가 아닙니다. 컨벤션입니다. 일반적으로 점으로 시작하는 파일은 디렉토리를 나열 할 때 기본보기에서 숨겨집니다. 일반적으로 현재 디렉토리로 .이어지는 inode는 ..이름을 가져오고 부모 디렉토리로 이어지는 inode는 이름을 가져옵니다 .

당신이해야 할 일은

chown -R luca:luca /myfolder

점으로 시작하는 파일 이름에 특별한 것이 없다고 언급 했습니까? 재귀 chown는 그렇게 생각하지 않습니다.

현재 소유권을 루트로 다시 변경하여 일부 기능을 구할 수 있습니다. 장기적으로는 아마도 시스템을 다시 설치해야 할 것입니다.

일반적으로 :

  1. 루트로 작업하지 마십시오.
  2. 루트로 작업하는 경우 Enter 키를 누르기 전에 각 명령을 두 번 읽으십시오.
  3. 확장이 확실하지 않은 경우 먼저 "안전한"명령 (예 :)으로 확장하십시오 echo .*.
  4. 루트로 작동하지 마십시오.
  5. 그래픽 인터페이스를 사용하여 안전하게 수행 할 수있는 많은 작업이 있습니다 (문제는 그러한 작업의 예입니다).
  6. 루트 계정 사용을 피해야한다고 언급 했습니까?

폴더에있는 모든 파일의 소유권을 변경하고 싶지 않았습니다. 숨겨진 파일 만 ..
lucacerone

2
그래, 내 나쁜 이 경우에는 다음과 chown -R luca:luca /myfolder/.[^.]*같이 생각합니다
1 월

2
echo .*확장을 시도하는 좋은 방법입니다. 쉘이 보는 것을 정확하게 보여줍니다. ls .*좀 더이 디렉토리를 아래로 갈 것이다 (같은 혼란 스러울 수 있습니다 ls -d .*더 좋을 수도 있지만뿐만 아니라 바로 사용할 수 있습니다 echo .*)
Robie BASAK

@RobieBasak 좋은 지적!
1 월
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.