파일의 권한과 그룹 소유자를 동시에 변경하는 방법


9

파일 권한을 변경하기 위해 chmod를 사용할 수 있음을 알고 있습니다. 그룹 소유자를 변경하기 위해 chgrp를 사용할 수 있습니다. 그러나 권한과 소유자를 동시에 변경하려면 Linux에서 사용할 수있는 명령이 있습니까?

예를 들어,이 권한과 소유자가있는 파일이 있습니다.

-rw-r--r--+  1 raymondtau  staff    0 May  8 16:38 WantToChangeThisFile

이제는 다음과 같이 변경하고 싶습니다.

---x-w--wx+  1 raymondtau  admin    0 May  8 16:38 WantToChangeThisFile

이 명령을 사용할 수 있다는 것을 알고 chmod 123 WantToChangeThisFile && chgrp admin WantToChangeThisFile있지만 깔끔한 방법이 있는지 알고 싶습니다.

답변:


9

"UNIX-way"라는 개념이 있습니다. 각 도구는 하나의 간단한 기능을 수행해야합니다. 더 복잡한 기능이 필요한 경우 작은 도구를 결합 할 수 있습니다.

그 반대는 모든 기능이 하나의 거대한 도구 내에서 집계 될 때 독점 디자인입니다.

복잡한 것을 원한다면 간단한 도구를 사용하여 스크립트를 작성하십시오.


다음은 이러한 도구를 하나의 셸 함수로 결합한 스크립트ch 입니다.
Keith

2
그는 이미 존재 rsync와 같은 및 리눅스하지만 여러 도구를 달성 할 수있는 무엇을 요구 그것이 대답 방법은,이 경향이 없다는 여러 물건을 평균 도구는 하나의 도구 / 하나의 함수 기존되지 않습니다 선호한다합니다
Kiwy

@Kiwy 일부 Linux 도구는 유닉스 방식의 원칙을 따르지 않으며 다른 성격의 다른 기능을 결합합니다. 예를 들어 체계화 된 것처럼.
Kondybas

1
@Kondybas "tend to"는 문장의 중요한 부분입니다. 규칙에 대한 예외가 존재합니다. 아직도 나에게 당신의 대답은 정말 나쁜 것입니다.
Kiwy

9

최종 대상과 같이 파일을 어딘가에 복사하는 것이라면 다음 install명령을 살펴볼 수 있습니다 .

install -m 0777 -o root $sourcefile $destinationfile


1

* nix에서 작업에 적합한 도구를 사용하는 것이 중요하지만 실제로 각 연결 명령에서 동일한 경로를 반복하는 것은 어리석은 것처럼 보입니다. 대신 실제로 Bash 변수를 사용하고 작은 스크립트에서는 특히를 사용해야 $_합니다.

당신의 명령은 다음과 같습니다.

chmod 123 WantToChangeThisFile && chgrp admin $_

Alt +. 현재 쉘에서 마지막으로 사용 된 인수를 가져 오는 것과 비슷한 일을합니다.


0

이 경우 Rsync가 유용합니다.

Fine Manual (TM)에서

--chown = USER : GROUP 간단한 사용자 이름 / 그룹 이름 매핑

--chmod = CHMOD는 파일 및 / 또는 디렉토리 권한에 영향을줍니다

예를 들어, chmod / mnt / lala / lala4000 / "ugo = rX"및 "foo.bar"를 숨기려고합니다.

rsync --chmod = ugo = rX --chown = foo : bar -rvtpolgh / mnt / lala / lala4000 / / mnt / lala / lala4000 /

이것은 재귀 적으로 dir을 질식시키고 chmod합니다.


0

rsync명령 으로 그런 목표를 달성 할 수 있습니다

rsync -a --chown=root:root --chmod=F755 filename filename

나는 그것을 얻지 못한다
Pierre.Vriens

이것은 안전하지 않습니다. 지정된 파일과 하위 디렉토리가 아닌 지정된 디렉토리와 하위 디렉토리에서 일치하는 모든 파일에 영향을 미칩니다.
telcoM

-1

chown username:groupname file ...동시에 두 가지를 모두 변경할 수 있습니다 . 동일한 (inode) 구조에서 두 개의 필드를 변경하므로 결합하면 두 개의 시스템 호출이 저장됩니다 (하나는 현재 값을 읽기위한 것이고 다른 하나는 수정 된 vaule을 설정하기위한 것).


chown소유자 만 변경합니다. OP가 요청한 것과 동시에 권한이 어떻게 변경됩니까? 참고 OP의 예에는 역시 포함 chmod됩니다.
jscott

그가 쓴 아, thougth 그는 3 가지 변경을 원 그룹 소유자를 변경하는 나는 그가 그룹을 의미 생각 하고 소유자.
wurtel

-3
#!/bin/bash

# Setting the Variables for execution
LOGDIR=$HOME
CURRENTTIME=$(date +"%Y%m%d%s%H%M%S")
LOGFILE=${LOGDIR}/chgpermission_${CURRENTTIME}.log
MASTERFILE=$1
INDEX=0

# Checking the number of Parameters passed
if [ "$#" -ne 1 ]; then
    echo "Master file name is mandatory parameter" > ${LOGFILE}
    exit 1
fi

# Loading the Master file into an Array 
echo "Loading the Master file ${MASTERFILE} into an array" >> ${LOGFILE}
while read line
do
#echo $line  
MASTERARRAY[$INDEX]=$HOME/$line 
INDEX=$(expr $INDEX + 1) 
done < ${MASTERFILE}

echo "Number of parameters in an master array ${MASTERARRAY[@]}" >> ${LOGFILE}

# Changing the permission of the file 
echo "Changing the permission of the file in master file ${MASTERFILE}" >> ${LOGFILE} 
index=0
for index in "${MASTERARRAY[@]}"
do
    if [ -f "$index" ] 
    then
       echo "$index file exist"
       echo  "$index file exist" >> ${LOGFILE}
       chmod 755 "$index" 
       chown workstation "$index"
       chgrp workstation "$index" 
    else
      echo "$index file does not extst"
      echo "$index file does not exist" >> ${LOGFILE}  
    fi 
done 

2
적어도 그것이 어떻게 작동하는지에 대한 설명을 제공 할 수 사용으로 가정 어떻게 (매개 변수 그들이 ... 무엇을 얼마나)
Kiwy

2
답변으로 일부 코드를 붙여 넣지 마십시오.
Konrad Gajewski

주석 처리는 생산적이지 않을 수 있습니다. 이것은이 사용자가 게시 한 유일한 내용이며 그 이후로는 로그인하지 않았습니다.
G-Man, 'Reinstate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.