루트 액세스 권한이 있는 Linux에서 특정 사용자의 권한을 어떻게 알 수 있나요?

루트 액세스 권한이 있는 Linux에서 특정 사용자의 권한을 어떻게 알 수 있나요?

로컬 서버에 대한 루트 액세스 권한이 있습니다. 며칠 전 제 동료가 이 서버에 사용자를 생성하고 사용자 이름과 비밀번호를 줬는데 해당 사용자의 권한이 최소화되었습니다. 예를 들어 사용자는 자신의 홈 디렉터리에 파일을 만들 수도 없습니다.

"사용자 권한"이라는 개념이 있습니까? 그렇다면 어떻게 보거나 수정하나요?

답변1

계정을 생성할 때 동료가 "수동으로" 홈 디렉토리 를 생성하여 해당 홈 디렉토리를 에서 소유하게 했을 가능성이 있습니다 root.root

chown -R username ~username
chgrp -R $(id -gn username) ~username

username문제의 계정 이름은 어디에 있습니까?

편집하다

이것이 실제로 문제인 경우 나중에 이런 일이 발생하지 않도록 하려면 사용자 계정을 만드는 데 사용하는 명령줄 -m에 스위치를 추가해야 합니다. useradd이렇게 하면 사용자가 선택한 홈 디렉토리가 존재하지 않는 경우 생성됩니다. 이렇게 하면 "올바른" 소유권과 권한을 가진 홈 디렉토리가 생성되므로 이러한 문제가 발생하지 않습니다.

편집 2

위에 추가된 명령은 chgrp기본 그룹에 대한 전체 홈 디렉토리의 그룹 소유권을 변경합니다. 환경에 따라 이는 정확히 원하는 것이 아닐 수 있으며, 홈 디렉토리 내 특정 하위 디렉토리의 그룹 소유권을 "수동으로" 변경하여 하위 디렉토리마다 다른 그룹 소유권을 설정해야 할 수도 있습니다. 일반적으로 개인용 컴퓨터에서는 그렇지 않지만 "동료"를 언급하셨으므로 공유 디렉터리에 대한 그룹 소유권이 중요한 네트워크로 연결된 사무실 환경에 대해 이야기하고 있다고 가정합니다.usernameusername

답변2

당신이 요청한 대로, 유닉스에서는 이것을 체계적으로 수행할 수 있는 방법이 실제로 없습니다. 을 사용하면 sudo요청한 것과 유사한 것을 만들 수 있지만 이는 완전히 인위적이며 제공할 수 있는 목록의 포괄성이 매우 제한적입니다. 명령 그룹을 생성한 다음 사용자 sudo(또는 사용자 그룹)가 이러한 명령 그룹에 액세스하도록 허용할 수 있습니다.

# /etc/sudoers
someuser ALL=/sbin/service, /sbin/chkconfig

sudo -l그런 다음 사용자로서 이 명령을 사용하여 실행이 허용되는 명령을 확인할 수 있습니다.

$ sudo -l
...

User someuser may run the following commands on this host:
    (ALL) ALL
    (root) /sbin/service, (root) /sbin/chkconfig, (root)

답변3

Joseph R.이 제안한 것처럼 홈 디렉토리가 올바른 소유권으로 생성되지 않았다는 것이 가능한 설명입니다. 99%의 경우 액세스 문제는 단순히 chown및 명령을 각각 사용하여 chmod소유권 및 권한 비트를 올바르게 설정하는 문제 입니다. (일부 특별한 경우에는 SELinux, AppArmor, 파일 시스템 ACL 또는 네트워크 파일 시스템 자격 증명 매핑과 같은 다른 요소가 작용합니다. 그러나 앞서 말했듯이 이 경우가 귀하에게 적용될 가능성은 거의 없습니다.)

나머지 질문에 대답하려면...예, 어떻게 실패하는지 직접 확인할 수 있습니다. 루트로서 일시적으로 다른 사용자가 되어 해당 사용자의 비밀번호를 몰라도 이 작업을 수행할 수 있습니다 /bin/su - username. 실행하면 됩니다. 그러면 해당 사용자 이름과 비밀번호로 로그인한 것처럼 다른 사용자로 쉘이 실행됩니다. 쉘을 완료하면 exit원래 루트 쉘로 돌아갑니다.

관련 정보