사용자가 sudo를 통해 다른 사용자의 홈 디렉터리를 볼 수 있도록 허용

사용자가 sudo를 통해 다른 사용자의 홈 디렉터리를 볼 수 있도록 허용

저는 시스템 관리를 처음 접했습니다. 우리는 서버와 클라이언트 컴퓨터를 갖춘 랩을 설정했습니다. 클라이언트 컴퓨터에는 중앙 서버의 모든 사용자를 위한 작업 공간이 있는 LDAP 사용자가 있습니다. 따라서 사용자가 로그인할 때마다 해당 작업공간은 NFS 서비스를 통해 클라이언트 시스템에 마운트되고, 로그아웃하면 모든 작업이 서버에 저장됩니다.

이제 서버의 로컬 사용자에게 제한된 루트 액세스를 제공하고 싶습니다. 나는 이 로컬 사용자가 모든 LDAP 사용자의 홈 디렉토리만 볼 수 있기를 원합니다. 서버에서 라운드 유저를 찾고 있는 것 같아요. 또한 서버의 로컬 사용자에게 제한된 루트 액세스를 허용하려면 visudo 파일을 일부 변경해야 한다고 생각합니다.

user1, %operator ALL= /home/users

로컬 사용자 user1의 visudo 파일에 위 명령을 추가해 보았습니다. 아래와 같이 휠 그룹에도 사용자를 추가했습니다.

usermod -G 10 user1

그러나 아무런 변화도 보이지 않습니다. 내 작업 방식이 원하는 결과를 얻지 못하는 이유는 무엇입니까 sudo?

이 접근 방식이 작동하지 않는 것 같아서 다음과 같이 묻습니다.사용자가 다른 사용자의 홈 디렉토리를 읽을 수 있도록 허용

답변1

몇 가지:

  1. 이 명령은 sudo사용자가 (1) 소유자가 아니거나 (2) 해당 그룹에 대한 읽기 권한이 있는 그룹의 디렉터리에 대한 액세스 권한을 얻는 것이 아니라 명령 또는 명령 집합에 대한 더 높은 수준의 자격 증명으로 자신을 승격시키는 데 사용됩니다. 디렉토리, 또는 (3) 디렉토리에는 전 세계에 공개된 다른 권한이 없습니다.

  2. 이 파일에는 /etc/sudoers주어진 시스템에 대한 모든 규칙이 포함되어 있으며 어떤 사용자, 사용자 그룹이 어떤 명령을 상승된 권한( root일반적으로 아래에 표시됨)으로 실행할 수 있는지 또는 다른 사용자 계정을 지정합니다. 당신은 보통 할 것입니다아니요이 파일을 직접 편집할 수는 있지만 그렇게 하지 않는 것이 가장 좋습니다.

  3. 이 명령은 visudo파일을 편집하기 위해 규정된 방법입니다 /etc/sudoers.

  4. 사용자가 액세스할 수 있는 sudo 자격 증명을 확인하려면 가장 쉬운 방법은 해당 사용자가 되어 명령을 실행하는 것입니다 sudo -l.

    $ sudo -l
    Matching Defaults entries for saml on this host:
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User saml may run the following commands on this host:
    (ALL) ALL
    (root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root) /usr/lib/jupiter/scripts/resolutions, (root)
    /usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root) /usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
    

휠 채널

나는 당신이 사용자에게 루트 권한을 부여하는 오래된 방법인 user groups 을 언급하고 있다고 생각합니다 wheel(내가 아는 한) su -. 이 기사에서는 다음과 같은 제목으로 이 그룹의 사용에 대한 좋은 토론을 제공합니다.Linux 시스템 관리.

액세스 권한을 부여하시겠습니까 /home/<user>?

내가 아는 한, 제한하려는 다른 방식으로 해당 사용자에게 더 높은 권한을 부여하지 않고는 이를 수행할 수 있는 체계적인 방법이 없습니다. 이런 방식으로 액세스할 책임이 있는 특정 사용자를 신뢰하지 않는다면 그 사람은 아마도 해당 작업에 적합한 사람이 아닐 것입니다!

그룹

예를 들어. 학생 2명과 조교 1명이 있다고 가정해 보겠습니다. 학생(사용자 1 및 사용자 2) 조교(사용자 3).

따라서 그룹은 다음과 같습니다.

  • 레벨 1
  • vbox 사용자 1

따라서 위의 사용자(1-3) 중 하나로 시스템에 로그인하면 내 그룹은 다음과 같습니다.

$ groups
users vboxusers class1

또한 그룹은 학생의 홈 디렉터리에 설정되어야 합니다.

$ ls -l /home/user1 | head -3
total 37784
drwxrwxr-x   2 saml class1     4096 May 16 22:02 alsa
drwxrwxr-x  31 saml class1     4096 Mar 26 12:09 apps

단지 아이디어입니다. 이 접근 방식에는 문제가 있지만 제공한 정보를 고려하면 "한 가지 접근 방식"입니다!

답변2

이제 서버의 로컬 사용자에게 제한된 루트 액세스를 제공하고 싶습니다.

이것은 나쁜 생각처럼 들립니다.

첫째, 데이터 개인 정보 보호 문제가 있습니다. 이 사용자가 전체 루트 액세스 권한을 갖는 것을 신뢰하지 않는다면 왜 그가 사용자 데이터를 갖고 있다고 믿을 것입니까?

둘째, 어떻게든 이 사용자에게 제한된 루트 액세스 권한을 부여하더라도 /home(이는 불가능하다고 생각합니다) 예상하지 못한 전체 루트 액세스 권한을 부여할 수 있는 몇 가지 방법이 있습니다.

  • 그는 심볼릭 링크를 만들 수 있습니다 /:

    cd /home
    ln -s / evil-symlink
    

    /home/evil-symlink/이제 루트 파일 시스템이 에 있기 때문에 루트처럼 루트 파일 시스템의 내용에 액세스할 수 있습니다 /home.

  • 그는 setuid그 안에 실행 파일을 만들 수 있습니다 /home. /bin/bash에 복사 /home/bash하고 실행 chmod u+s /home/bash하면 자신만의 root쉘이 생깁니다.

내가 생각할 수 있는 권한에 관계없이 사용자를 특정 디렉터리로 제한하는 유일한 방법은 chroot루트 디렉터리가 중단될 수 있는 경우입니다 chroot.

답변3

첫째, 무엇을 잘못하고 있습니까?

user1, %operator ALL= /home/users

이를 통해 user1디렉터리의 모든 명령을 모든 사용자로 실행할 수 있습니다. /home/users디렉터리에 실행 가능한 프로그램이 없으면 규칙은 실제로 아무 작업도 수행하지 않습니다. 실행 가능한 프로그램이 있으면 규칙에 따라 user1해당 프로그램이 실행될 수 있습니다.

sudo사용자에게 파일에 대한 액세스 권한을 부여하는 데는 사용할 수 없으며 다른 사용자로서 명령을 실행할 수 있는 권한만 부여할 수 있습니다.

바라보다사용자가 다른 사용자의 홈 디렉토리를 읽을 수 있도록 허용당신이 하고 싶은 일을 성취할 수 있는 방법을 찾으세요.

관련 정보