(이 문제는 다음과 관련이 있을 수 있습니다.Linux: "외부" 파티션을 마운트할 때 사용자 소유권을 시뮬레이션/마스크하시겠습니까? - 스택 오버플로)
저는 보통 Ubuntu(현재 11.04)를 데스크탑 OS로 사용합니다.myself
uid=1000, 이 그룹에 속함myself
gid=1000; 기본적으로 홈 디렉토리 권한은 다음과 같습니다.
> stat ~
File: `/home/myself'
...
Access: (0755/drwxr-xr-x) Uid: ( 1000/ myself) Gid: ( 1000/ myself)
이제 동일한 시스템에서 LiveUSB(Live-CD)를 통해 OpenSuse(현재 11.2)를 부팅해야 하는 경우가 있습니다. Live-CD 환경의 기본 사용자가linux
uid=999, 이 그룹에 속함users
gid=100; 따라서 홈 디렉토리 권한은 다음과 같습니다.
> stat ~
File: `/home/linux'
...
Access: (0755/drwxr-xr-x) Uid: ( 999/ linux) Gid: ( 100/ myself)
따라서 기본적으로 라이브 OpenSUSE(기본 사용자는 999:100)에 Ubuntu 드라이브(1000:1000 소유)를 마운트하면 평소처럼 액세스할 수 없습니다.
linux@linux:~> touch /media/extdrive/xxx
touch: cannot touch `/media/extdrive/xxx': Permission denied
linux:users
그래서 OpenSUSE 시스템에서 기본 uid/gud를 변경해야 한다고 생각하여 다음을 시도했습니다.
> sudo /usr/sbin/usermod -u 1000 linux
usermod: Account `linux' is currently in use.
> id linux
uid=999(linux) gid=100(users) groups=100(users),33(video)
# so if that fails.... change directly from /etc/passwd?
> sudo nano /etc/passwd
> id linux
uid=1000(linux) gid=100(users) groups=100(users),33(video)
...uid를 변경하면 Ubuntu 드라이브에 문제 없이 액세스할 수 있습니다. 하지만 이제는 이전에 사용했던 OpenSUSE 항목에 액세스할 수 없습니다 linux:users
.
> sudo nano /etc/fstab
sudo: unknown uid: 999
...그러니까,나쁜/etc/passwd를 직접 변경하는 것에 대한 생각 :) 여기서 해결 방법은 먼저 루트 셸로 이동하여 명령을 실행하고 usermod
재부팅하는 것 같습니다. 이제 OpenSUSE 환경에서 부팅했습니다.
linux@linux:~> stat ~
Access: (0755/drwxr-xr-x) Uid: ( 1000/ linux) Gid: ( 100/ users)
이를 통해 평소와 같이 Ubuntu 파일 시스템/드라이브에 액세스하는 동시에 OpenSUSE의 기본 사용자가 소유한 모든 항목에 대한 일반적인 액세스도 허용합니다.
그러나 안전을 위해 그룹 ID도 변경하고 싶습니다. 이를 수행하는 데 권장되는 방법은 무엇입니까(위 토론에서 올바르게 수행하지 않은 경우 uid를 변경하는 데 권장되는 방법은 무엇입니까)?
답변해 주셔서 대단히 감사합니다.
응원합니다!
답변1
귀하의 질문을 올바르게 이해했다면 조건부를 사용할 수 find
있습니다 -gid
.
find /media/extdrive -gid 100 | sudo xargs chown myself:myself
또는 원하는 find
경우 -exec
:
sudo find /media/extdrive -gid 100 -exec chown myself:myself {} +
또는 유용한 옵션이 chown
있는 맨페이지를 확인하세요 .--from
sudo chown -R myself:myself --from=:100
자세한 내용은 해당 맨페이지를 참조하십시오.