>

파일 소유권을 루트에서 myuser로 변경하는 스크립트를 작성하고 싶습니다. 소유권을 검사하고 루트로 발견되면이를 myuser로 변경하는 스크립트입니다. 스크립트는 파일에 오류를 기록해야합니다. 파일 소유권을 변경하는 방법을 알고 있지만 스크립트에 파일을 넣는 방법에 대해 잘 모르겠습니다

  • 답변 # 1

    파일의 그룹도 변경하고 싶다고 가정하면 ( :newuser 만 삭제하지 않는 경우) ).

    find /dir/with/files -type f -user root -exec chown newuser:newuser {} + 2>>logfile
    
    

    분명히 루트가 소유 한 파일을 변경하려면 루트 여야합니다. 따라서 sudo 로 실행해야합니다.  또는 su 후 . 또한 디렉토리도하고 싶다면 (아마도 그렇게 생각합니다) -type f 를 삭제하십시오. .

  • 답변 # 2

    find(다양한 매개 변수와 일치하는 디렉토리 구조의 파일을 찾습니다)를 사용하여이 작업을 재귀 적으로 수행하는 가장 간단한 방법입니다. 예를 들어

    find . [or other directory] -type f -user 0 -exec chown <newusername> '{}' +
    
    

    여기서 -type f는 디렉토리 나 다른 비정규 유형의 파일을 건드리지 않기 위해 사용됩니다 (필요하지 않은 경우 제거).

    물론 이것을하려면 루트가되어야합니다.

    와 같이 이것을 스크립트에 넣을 수 있습니다
    #!/bin/sh
    if [ "$#" -lt 1 ]; then #check if username was given
      echo >&2 "provide user name"
      exit 1
    fi
    find . -type f -user 0 -exec chown "$1" '{}' +
    
    

    다른 오류를 확인할 필요는 없다고 생각합니다. 대부분 루트가 아닌 경우 실패합니다.

관련 자료

  • 이전 d bus - 터미널 에뮬레이터 프로세스가 d-bus를 사용하는 이유는 무엇입니까?
  • 다음 리눅스 커널 구축 방법