Chmod가 예상대로 작동하지 않습니다.

Chmod가 예상대로 작동하지 않습니다.

내 파일 권한을 이렇게 변경하려고 할 때

 $ sudo chmod a+x *.* 

이 오류가 나타납니다

 chmod: cannot access ‘*.*’: No such file or directory

그리고 디렉토리에 있는 모든 단일 파일의 권한을 변경하고 싶을 때

 $ sudo chmod a+x directory/* 

같은 오류가 뜹니다

 chmod: cannot access ‘directory/*’: No such file or directory

다른 디렉토리에서 동일한 명령을 시도하면 작동하지만 /var/www/html 디렉토리에서는 작동하지 않지만 실행할 때 파일별 권한 파일을 a+x로 변경해도 작동하지 않습니다.

 ls

권한 오류가 나타납니다

 ls: cannot open directory .: Permission denied

답변1

Linux의 파일 확장자는 특별한 것이 아니며 단지 파일 이름의 일부일 뿐입니다. 쉘의 파일 글로빙은 모든 문자에 사용되므로 대신 *사용할 수 있습니다 .chmod a+x *.

답변2

문제 ls는 디렉터리에 대한 권한이 충분하지 않은 것 같습니다. 처럼https://stackoverflow.com/a/15800917/3501748상태: 디렉토리의 내용을 보려면 디렉토리에 실행 권한 세트가 필요합니다.

cd한 레벨로 돌아가서 방금 온 디렉토리에 대한 권한이 무엇인지 확인하십시오. sudo루트에 해당 폴더에 대한 권한이 없으면 해당 폴더에 액세스할 수 있는 권한을 부여하지 않습니다. 어쩌면 sudo -u <username>도움이 될 수도 있습니다.

시작점 아래의 디렉터리 트리를 통해 반복해야 하는 경우 를 사용하세요 chmod -R.

답변3

먼저 기존 답변을 인정하고 싶습니다.

  • UweBurger가 말했듯이 *Ubuntu(또는 일반적으로 Unix)에서 일반 와일드카드를 사용합니다. ( directory귀하의 예에서는 비어 있어서 오류가 발생할 수 있습니까 chmod: cannot access ‘directory/*’: No such file or directory?)
  • Northern-Bradley가 제안한 것처럼 플래그를 사용하여 R트리 chmod를 재귀적으로 탐색하여 현재 지점 아래의 모든 권한을 변경할 수 있습니다. 즉, 을 사용 chmod -R directory하거나, 권한이 부족한 경우 sudo chmod -R directory(단, 사용 시 시스템 파일에 대한 권한을 실수로 변경하지 않도록 주의하세요)sudo에게chmod; 귀하의 사용자에게는 그렇게 할 수 있는 권한이 없기 때문에 첫 번째 변형이 더 안전합니다.

그러나 파일과 동일한 방식으로 디렉토리의 권한을 변경하고 싶지 않을 수도 있다는 점을 덧붙이고 싶습니다. 에서 설명했듯이공식 문서, 디렉토리에 대한 읽기( r) 권한은 해당 내용을 볼 수 있음(예: 사용 ls)을 의미하고, 쓰기( w) 권한은 사용자가 그 안에 파일을 생성/제거할 수 있도록 하며, 실행( x) 권한은 내부에 대한 권한을 의미합니다 cd. 훌륭한 답변이 있습니다여기새로운 권한을 반복적으로 적용할 때 파일과 디렉터리를 구별하는 방법을 제안합니다. 사용하는 변형 xargs은 다음과 같습니다아마도 더 빠를 것입니다. 아무 것도 반환하지 않는 경우 오류를 방지하기 r위해 플래그를 추가할 수 있으며 권한이 필요한 경우 파이프의 양쪽 절반에 사용해야 합니다 (다시 말하지만 as 를 사용할 때는 주의해야 합니다). 그러면 다음과 같습니다.xargsfindrootsudochmodroot

sudo find [경로/대상/디렉터리] -type d -print0 | sudo xargs -0r chmod [원하는 디렉터리 권한]

sudo find [경로/대상/디렉터리] -type f -print0 | sudo xargs -0r chmod [원하는 파일 권한]

어디에 [desired-*-permissions]줄 수 있나요?명시적으로( 777) 또는문자를 사용하여(좋다 a+x).

관련 정보