파일 사용자 권한 부여

파일 사용자 권한 부여

이 문제를 해결하는 데 어려움을 겪고 있습니다.

현재 디렉토리의 모든 파일에 대한 실행 권한을 확인하는 쉘 스크립트를 작성하십시오. 파일에 사용자 실행 파일 권한이 없으면 사용자 실행 파일로 만드십시오.

현재 디렉터리의 모든 파일을 반복하고 출력을 텍스트 파일에 쓰는지 생각하고 있었습니다. 그런 다음 모든 줄의 네 번째 문자를 읽고 'x' 또는 '-'인지 확인합니다.

답변1

당신이 가지고 있는 아이디어는 타당해 보이지만 불필요하게 크고 복잡해 보입니다. 대신 다음을 사용할 수 있습니다.

#!/bin/bash
for file in *; do
    [[ -x $file ]] || chmod u+x "$file"
done
  • *현재 디렉터리의 모든 파일( )을 읽습니다.

  • 그런 다음 스크립트를 실행하는 사용자가 파일을 실행할 수 있는지 확인합니다( [[ -x $file ]]).

  • 그렇지 않은 경우( ||), 사용자( chmod u+x "$file")가 파일을 실행 가능하게 만듭니다.

기본적으로 *숨겨진 파일과 일치하지 않습니다. 숨겨진 파일과 일치하려면 다음 줄도 추가하세요.

shopt -s dotglob

shebang 라인 이후.

일반 파일만 검색하고 작업하려면 다음을 수행하십시오.

#!/bin/bash
for file in *; do
    if [[ -f $file ]]; then
        [[ -x $file ]] || chmod u+x "$file"
    fi
done

답변2

find다음을 사용하는 간단한 명령입니다 chmod.

find . -type f ! -perm -u+x -exec chmod u+x {} \;

또는 현재 폴더에만 해당:

find . -maxdepth 1 -type f ! -perm -u+x -exec chmod u+x {} \;

설명

  • .

    현재 폴더에서 검색을 시작합니다.

  • -maxdepth

    재귀적이지 않음

  • -type f

    파일만 있고 폴더는 없습니다.

  • ! -perm -u+x

    파일 소유자에 대한 실행 플래그가 없는 파일만

  • -exec chmod u+x {}

    파일 소유자의 실행 가능 플래그를 설정합니다.

답변3

그것이 더 큰 자동화 프로젝트의 일부인지 아니면 단순히 하고 싶은 일인지 언급해 주셨으면 좋겠습니다.

디렉토리에서 간단히 다음을 수행할 수 있습니다.

chmod u+x *

이렇게 하면 폴더 내의 모든 파일에 실행 가능 상태가 추가됩니다.당신의 사용자". "에 추가해 볼 수 있습니다.모든 사람" 에 의해

chmod a+x *

사용자는 해당 특정 폴더 내의 파일을 변경할 수 있는 권한이 있어야 합니다. '를 가져야 한다는 뜻이다.쓰다' 허가. 그렇지 않으면 아무것도 변경할 수 없습니다. 사용자가 관리자인 경우 다음 sudo명령을 사용하여 호출할 수 있습니다.

sudo chmod a+x *

파일에 이미 실행 가능 상태가 있는 경우 해당 상태를 다시 부여해도 아무런 해가 없습니다. 물론, 제가 말했듯이, 보고와 같은 다른 목적으로 상태가 변경된 모든 파일의 이름을 사용하려는 경우는 제외됩니다. heemayl의 대본은 그런 목적에 있어서 좋은 것입니다.


Mostafa Najafiyazdi 댓글에서 추가됨

[..] 실행 권한이 없는 폴더의 권한을 건드리고 싶지 않다면 chmod u+x *[..]을 사용하면 안 됩니다.

관련 정보