/etc/passwd를 반복하고 각 UID를 name-UID 값의 입력 파일에서 제공하는 새 값으로 변경하는 bash 스크립트를 작성했습니다. 추가 경고로 실행 중인 프로세스가 있는지 확인하면서 다음과 같이 썼습니다.
# Mod user and group
usermod -u $uid $login
groupmod -g $uid $login
find /data -group $old_uid -exec chgrp -h $login {} \;
find /data -user $old_gid -exec chown -h $login {} \;
불행하게도 대부분의 사용자는 적극적으로 사용하지 않을 때에도 자신의 컴퓨터에 일부 프로세스가 있는 것으로 나타났습니다. 프로세스가 실행되는 동안 위 코드를 실행하는 것은 얼마나 위험합니까?
답변1
이것은 상당히 위험한 작업입니다. 이 작업을 수행해야 하는 경우 해당 사용자에 대해 아무것도 실행되지 않도록 할 수 있는 모든 작업을 수행하십시오.
- 사용자에게 (가능한 한 많은 경고와 함께) 무엇을 하고 있는지, 언제 하고 있는지 알려주세요.
- 작업을 시작하기 전에 실행 중인 모든 프로세스를 종료하도록 정중하게 요청하세요.
- 작업하는 동안 모든 사용자의 로그인을 일시적으로 차단하세요.
- 시작하기 전에 모든 사용자 프로세스와 세션을 강제 종료합니다.
그렇기 때문에....... 논의를 위해 다음에 usermod
만 groupmod
영향을 미칩니다.
- 사용자가 로그인할 때 사용자의 세션에 할당된 UID, GID 및 그룹
chgrp
또는 조작과 유사한 검색에 사용됩니다.sudo
- 역방향 조회를 사용하는 것과 같은 것
ls -l
실행 중인 모든 프로세스는 이전과 정확히 동일한 UID 및 GID를 갖습니다. 사용자가 무언가를 실행하는 동안 사용자를 변경하면 이는 정말 좋지 않습니다.
- 아직 열려 있는 이전 로그인 세션은 이전 UID 및 GID를 유지합니다. UID와 GID를 재활용하면 효과적으로 다른 사용자로 로그인됩니다.
- 현재 로그인 세션에 연결되지 않은 실행 프로세스는 사실상 "불량" 상태가 됩니다. 사용자는 더 이상 로그인하여 죽일 수 없습니다. 아마도 더 이상 어떤 사용자도 다음을 제외하고는 할 수 없을 것입니다.
root
- 파일 소유권도 변경하면 실행 중인 프로세스가 처리 중인 데이터에 대한 모든 액세스 권한을 잃어 충돌이 발생할 수 있습니다.