modprobe -r psmouse
루트 권한 없이 사용자가 or 를 실행하는 것만으로 실행할 수 있는 쉘 스크립트를 작성하고 싶습니다
modprobe psmouse
. 가능합니까? 나는 이 모듈을 가지고 있습니다 :
$ ls -l /lib/modules/4.4.0-116-generic/kernel/drivers/input/mouse/psmouse.ko
-rw-r--r-- 1 root root 219670 Feb 12 17:06 /lib/modules/4.4.0-116-generic/kernel/drivers/input/mouse/psmouse.ko
권한을 변경하는 것만으로도 충분합니까?
답변1
sudo 보안 정책을 조정하고 규칙을 만드세요 /etc/sudoers.d
.
- 정의된 사용자 집합(필요에 따라 한 명의 사용자 또는 사용자 집합일 수도 있음)
- 만 실행
modprobe
하고rmmod
, - cmd 매개변수에서만
psmouse
, - sudo 비밀번호 유무에 관계없이.
이것이 "/etc/sudoers.d"가 일반적으로 사용되는 것입니다. 그래서 여기에... (단일 호스트 구성을 가정하고 찾은 파일이 정렬된 어휘 순서로 구문 분석 /etc/sudoers.d
된다는 것을 기억합니다.)sudo
- 해당 줄을 반드시
/etc/sudoers
포함 하세요.#include /etc/sudoers.d
/etc/sudoers.d/00_aliases
나는 일반적 으로 사용자, cmd, 호스트 및 그룹 별칭을 정의하는 개인 기본 파일을 사용합니다 . 이렇게 하면 기본 기본 시스템 설정이 포함된sudo visudo
Tweak 사용을 크게 줄일 수 있을 뿐만 아니라 다른 파일도 에서 먼저 해결되는 별칭을 사용합니다 ./etc/sudoers
/etc/sudoers.d/
sudo
/etc/sudoers.d/00_aliases
/etc/sudoers.d
예를 들어 20_psmouse라는 이름의 파일을 에 배치합니다 .
포함된 sudoers.d 파일을 광범위하게 사용할 계획이 없다면 다음을 수행할 수 있습니다.아니요/etc/sudoers.d/00_aliases
아래와 같이 임시 별칭을 만들고 포함된 파일에 직접 포함합니다.
User_Alias MOUSE_TWKR = user1[, user2[, user3[, ...]]]
Cmnd_Alias MOUSE_MOD_TWK = /usr/bin/modprobe, /usr/bin/rmmod
MOUSE_TWKR your-host = NOPASSWD: MOUSE_MOD_TWK psmouse
진실은 푸딩에 있으므로 다음을 수행해야 합니다.
1) 그것을 찾아보고 man sudoers
(Archlinux에서 예제는 2038년의 1911번째 줄에서 시작됩니다!!)
2) 몇 가지 실험을 수행해야 합니다. 예를 들어, 위의 규칙이 너무 허용적이어서 cmd 및 관리 중인 컨텍스트 내에서
옵션 사용을 제한하려는 경우 파일 항목을 다음으로 바꾸십시오.modprobe
rmmod
MOUSE_TWKR your-host = NOPASSWD: MOUSE_MOD_TWK [!-] psmouse
...그리고 비밀번호를 강제로 입력하세요.
MOUSE_TWKR your-host = MOUSE_MOD_TWK [!-] psmouse
(*) "your-host"를 호스트 이름으로 바꾸거나 ALL
모든 호스트 허용으로 바꾸면 호스트 예가 됩니다...
답변2
파일에 대한 권한을 변경하면 psmouse.ko
누군가가 파일을 변경할 수 있게 만드는 것 외에는 많은 일을 하지 않습니다(나쁜 일이 될 것입니다!) modprobe
및 를 실행하도록 허용할 수 있지만 rmmod
이론적으로 로드 및 언로드할 수 있기 때문에 위험합니다. 시스템에 모든 커널 모듈이 설치되어 있습니다!
원하는 것은 작은 도우미 스크립트를 만들고 허용된 사용자가 이를 실행할 수 있도록 허용하는 것입니다 root
.
스크립트 만들기:
/usr/local/bin/load_mouse.sh
#!/bin/sh /sbin/modprobe psmouse
/usr/local/bin/unload_mouse.sh
#!/bin/sh /sbin/rmmod psmouse
/usr/local/bin
이러한 스크립트는 소유자root:root
및 권한이 있는 공개적으로 액세스 가능한 디렉토리(제가 선호하지만 이는 개인 취향임)에 있어야 합니다755
.root
소유권은 필수는 아니지만 사람들이 변경하기가 더 어려워집니다. 이 스크립트는 수퍼유저로 실행되어야 하므로 안전해야 한다는 점을 기억하세요!사용자가 실행할 수 있도록 허용
visudo
에 포함된 파일을 사용하거나 추가하려면/etc/sudoers.d
다음을 추가하세요.username ALL=(root) /usr/local/bin/load_mouse.sh,/usr/local/bin/unload_mouse.sh
username
적절한 사용자 이름으로 바꾸 거나%groupname
그룹 구성원이 이 명령을 실행할 수 있도록 하려는 경우.sudo /usr/local/bin/load_mouse.sh
이제 사용자는 (또는 ) 을 사용하여 스크립트를 실행할 수 있습니다unload_mouse
./usr/local/bin
그것이 그들의 것이라면 그것도PATH
괜찮sudo load_mouse.sh
습니다.(선택사항)
sudo
통화 종료sudo
마지막으로, 이를 더 쉽게 입력/실행할 수 있도록 다른 스크립트로 래핑할 수 있습니다 ./usr/local/bin/mouse_on
#!/bin/sh sudo /usr/local/bin/load_mouse.sh
/usr/local/bin/mouse_off
#!/bin/sh sudo /usr/local/bin/unload_mouse.sh
특별한 권한이 필요하지 않지만
root:root
권한이 있는 것이 마음에 듭니다755
. 이제 사용자는mouse_on
andmouse_off
(스크립트 실행을 허용하는 한) 만 입력할 수 있습니다.