사용자를 특정 데스크탑 환경으로 제한하려면 어떻게합니까?


8

Ubuntu Precise 12.04의 표준 설치를 실행 중이며 Unity 데스크톱 환경에서 일상적인 작업을 수행하는 데 매우 만족합니다.

그러나 재생에 관해서는 LXDE에 대해 훨씬 편안하다고 느낍니다 (배경 : 현재 상태에서 Unity는 Unity 2D 또는 LXDE보다 프레임 속도가 훨씬 낮습니다-알려진 버그이며 현재 작업 중입니다).

이를 위해 게이머 사용자 프로필을 만들었으며 이제 LXDE 데스크톱 환경 만 사용하도록 제한하고 싶습니다.

더 자세히 설명하기 위해 : 부팅 후 로그인하라는 메시지가 표시되면 LXDE 만 로그인 화면에 게이머 사용자 프로필 옵션으로 표시되기를 원하지만 표준 사용자 프로필에는 사용할 데스크톱 환경을 선택할 수있는 옵션이 여전히 있어야합니다.

도움이 될만한 통찰력에 대해 미리 감사드립니다!


다음 번에 마지막 선택을 기본값으로 유지해야합니다. 그렇지 않습니까? 기본 옵션이 올바른 데스크탑 환경 인 경우 다른 옵션을 원하지 않는 이유가 있습니까?
reverendj1

질문을 한 후에도이 동작이 나타났습니다. 기본적으로, 그것은 이미 내가 원했던 것과 요청한 이유입니다. 그 외에도, 나는 여전히 솔루션에 관심이 있습니다-그룹 및 권한에 대해 더 많이 알아야합니다 '') 이것이 큰 문제인 것 같습니다. 달성하는 것이 불가능합니까?
FuzzyQ

답변:


4

좋아, LightDM (로그인 관리자)에 대한 이해로 특정 사용자 의 데스크탑 환경을 제한하는 것은 지원되지 않는 것 같습니다 . 그것은 전부 또는 아무것도 아닌 거래입니다. 기본적으로 사용자가 데스크탑 환경을 선택하면 기본 데스크탑 환경이됩니다. 다음에 로그인 할 때 다른 것을 선택하지 않으면 기본값으로 로그인됩니다.

그러나 사용자가이를 변경할 수 없도록 만들 수 있습니다. 이 사용자는 여전히 다른 데스크탑 환경을 선택할 수는 있지만 기본 환경을 변경하지는 않습니다. 나는 당신이 그 사람이 그것을 바꿀 걱정이 없다면 이것이 가장 안전한 방법이라고 생각합니다. .dmrc홈 디렉토리 (예 : / home / user)에있는 파일을 편집하기 만하면 됩니다. 기본 세션이 저장되는 곳입니다. Session해당 파일 의 변수를 원하는대로 변경하십시오. 즉 ubuntu기본 Unity DE, ubuntu-2dUnity 2D 및 LXDELXDE입니다. 다른 DE로 로그인해도 변경되지 않도록하기 위해 간단히 변경할 수 없습니다 (변경 불가능).

sudo chattr +i /home/user/.dmrc

변경할 수없는 플래그를 제거하지 않으면 아무도 해당 파일 (루트 및 기타 프로그램 포함)을 변경할 수 없습니다.

sudo chattr -i /home/user/.dmrc

이 사용자가 다른 DE로 로그인하는 것을 절대로 원하지 않는다면, 이것을 달성하기 위해 정말로 해킹 된 방법을 알아 냈습니다 (즉, 귀하의 책임 으로이 작업을 수행함). 나는 지루했고 일종의 재미있는 시도처럼 보였다. LightDM에서 볼 수있는 다른 DE는 모두 파일 /usr/share/xsessions로 유지됩니다 .desktop. 참고로, 로그인 화면에 표시하지 않으려는 모든 항목을 삭제할 수 있습니다 (그러나 모든 사용자에 대해 제거됩니다). 이 중 하나를 열면 매우 간단합니다. 데스크탑의 모든 바로 가기와 마찬가지로 기본 데스크탑 실행기 파일입니다. 각각은Exec로그인 화면에서 DE를 선택하면 (즉, 어떤 DE가 시작되는지) 실행됩니다. 우리는 이것을 이용하고 로그인하는 사용자를 확인합니다. 사용자가 제한된 사용자 인 경우 특정 DE를 사용하도록합니다.

먼저, 각 .desktop파일에 대해 에서 /usr/share/xsessions/스크립트를 작성해야합니다 /usr/local/bin. 예를 들어, ubuntu.desktopUnity DE 인에 대해이 작업을 수행하는 방법을 보여 드리고 LXDE를 DE로 사용하여 제한된 사용자 (restricteduser)가 사용하도록합니다. LXDE.desktop을 보면 Exec명령이 /usr/bin/startlxde있고 TryExec명령 이 없음을 알 수 있습니다 . 당신이 열 때 ubuntu.desktop우리가 볼 Exec명령은 다음 gnome-session --session=ubuntuTryExec명령입니다 unity. TryExec명령은 같은 소리 것입니다. Exec명령을 실행 한 후에는 명령을 실행 하려고 시도 TryExec하지만 실패하면 충돌하지 않습니다.

이제 .desktop스크립트를 만들 수 있는 파일 에서 얻은 명령을 가져옵니다 . 우리는 그들을 넣을 것입니다 /usr/share/bin. 우리는 하나를위한 것과 하나를위한 것을 만들어야 Exec합니다 TryExec. 우리는 다음과 같이 할 것입니다 :

ubuntude.sh

#!/bin/bash

if [ `/usr/bin/whoami` = "restricteduser" ] ; then
   /usr/bin/startlxde
else
   gnome-session --session=ubuntu
fi

ubuntudetry.sh

#!/bin/bash

if [ `/usr/bin/whoami` != "restricteduser" ] ; then
   unity
fi

로그인 한 사용자가 제한된 사용자인지 테스트하고 적절한 DE를 시작합니다. 이제 우리는 그것들이 실행 가능한지 확인해야합니다 :

sudo chmod +x /usr/local/bin/ubuntude.sh
sudo chmod +x /usr/local/bin/ubuntudetry.sh

이제 ubuntu.desktop실제 DE 대신 스크립트를 호출하도록 변경해야합니다 . 파일에서 ExecTryExec행을 주석 처리하고 다음 과 같이 바꾸십시오.

Exec=/usr/local/bin/ubuntude.sh
TryExec=/usr/local/bin/ubuntudetry.sh

다른 DE에 대해서도이 과정을 반복하십시오. 더있는 경우 TryExecDE를 들어, 다음 LXDE는 사용하지 않는 한, 중 이에 대한 detry.sh 스크립트를 만들 필요가 없습니다 TryExec. 분명히 이것은 약간 해킹이므로 파일을 편집하기 전에 파일을 백업해야하지만 사용자가 올바른 DE에 로그인하고 있는지 확인해야하는 경우에는 제대로 작동합니다.


1
우선, 정교한 답변에 감사드립니다! 이것은 꽤 교활한 접근법입니다. 그러나 마지막 부분을 올바르게 사용하면 제한된 사용자가 lightdm에서 선택한 옵션에 관계없이 lxde에 강제로 로그인 합니다. 그러나 여전히 / usr / share / xsessions /에 나열된 다른 모든 옵션이 표시됩니다. 이 경우에는 옵션 1을 사용하는 것이 좋습니다. 데스크톱 환경 세션을 설정하는 사용자 별 옵션이 없다는 것은 부끄러운 일입니다. 사용자 폴더에서 원치 않는 xsessions를 제거하는 것이 편리하고 간단합니다.
FuzzyQ

1
천만에요. 나는 그것을 일종의 도전으로 받아들였으며, LightDM에 대해 더 깊이 파고 들었습니다. 맞습니다. 사용자는 여전히 다른 모든 옵션을 볼 수 있습니다. LXDE를 사용해야하므로 중요하지 않습니다. 내가 말했듯이 .dmrc 파일은 사용자 별 기본값을 유지하기 위해 존재하지만 사용자가 특정 DE 만 사용 하도록 하거나 강제 로 볼 수있는 것을 제한 하는 기본 제공 방법은 없습니다 . 내가 제시 한 핵없이 모두 또는 아무도 아니다.
reverendj1

1

Debian Squeeze 및 Wheezy에서는 한 줄로 .xsessionrc를 추가 할 수도 있습니다.

수출 STARTUP = XXX

사용자 홈 디렉토리의 XXX (강제 세션 스크립트는 위의 Exec-Line 참조)는 사용자가 선택한 항목에 관계없이 특정 세션 유형을 강제 실행합니다.

우분투에서도 작동합니다.

(/etc/X11/Xsession.d/40x11-common_xsessionrc 및 50x11-common_determine-startup에서 왜 작동하는지 확인하십시오)


0

reverendj1의 답변이 효과가 없었습니다. Exec =에 지정한 값이 직접 실행되지 않고 / etc / X11 / Xsession에 인수로 전달 되었기 때문일 수 있습니다. (출처 : https://askubuntu.com/a/857420/873016 )

문제에 대한 다른 해결책 :
1. 모든 / usr / share / xsessions / .desktop 파일을
백업하십시오 . 2. / usr / share / xsessions / .desktop 파일을 모두 삭제 하십시오.
3. /usr/share/xsessions/default.desktop 파일 만 작성하십시오.

[Desktop Entry]
Name=Default
Comment=This session is the default session. It will look up the user specific desktop session in ~/.xsession.
Exec=default

"default"는 Xsession의 핵심 단어이며 사용자 디렉토리에서 특정 세션을 찾습니다.
4. 이제 모든 사용자 이름에 대해 /home/{username}/.xsession 파일을 작성하십시오. "키오스크 유사"앱의 경우 다음과 같이 표시됩니다.

#!/bin/bash

cd /home/{yourUsername}/ && ./startApplication.py
logout

예를 들어 다른 사용자가 완전히 데스크탑 관리자를 시작하도록 허용해야하는 경우 다음과 같습니다.

#!/bin/bash

exec icewm-session
  1. ~ / .xsession 파일이 실행 가능한지 확인하십시오
sudo chmod +x ~/.xsession

lightdm으로 우분투 16.04에서 테스트되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.