마지막에 이 문구를 봤는데이 답변:
추신: 권한이 없는 사용자로 실행할 때 rfkill이 작동하는 이유를 모르겠습니다. 내 Mint에는 setuid 또는 setgid 비트가 없습니다.
궁금해서 제 아치 시스템을 확인해 봤습니다. 내 시스템의 모습 sudo
은 다음과 같습니다 rfkill
. 파일 크기와 날짜가 생략되었습니다. setuid 비트가 없는 것 같습니다(비교를 위해 rfkill
하나 있습니다).sudo
$ /usr/bin/env ls -lah $(which sudo) $(which rfkill)
-rwxr-xr-x 1 root root [OMITTED] /sbin/rfkill
-rwsr-xr-x 1 root root [OMITTED] /sbin/sudo
흥미롭게도 rfkill
무선 액세스를 비활성화하고 활성화하기 위해 실행됩니다.여기에 명시된 바와 같이,내 계정에서 실행 중임 에도 불구하고 rfkill
(즉, 다음 root
과 같지 않거나 sudo
유사하지 않음).
일반적으로 하드웨어를 활성화/비활성화하는 명령은 권한을 사용하여 실행 해야 하기 때문에 rfkill
이를 요구하지 않는 방법은 무엇입니까 ?root
root
답변1
최신 Linux 시스템 생태계, 대략 언제체계/dev
이를 바탕으로 물리적으로 로그인한 상태(예: 키보드 앞)에서 항목에 대한 접근 권한을 변경할 수 있습니다.
사람들이 비교할 수 있는 소유권 /dev/rfkill
. 예를 들어, Debian 12 시스템의 로컬(물리적) 세션에 로그인한 UID 1000을 가진 사용자를 볼 때:
$ echo $UID
1000
$ getfacl -n /dev/rfkill
getfacl: Removing leading '/' from absolute path names
# file: dev/rfkill
# owner: 0
# group: 106
user::rw-
user:1000:rw-
group::rw-
mask::rw-
other::r--
따라서 이 추가 ACL은 소유자에게 장치 파일에 대한 액세스 권한을 부여합니다.
user:1000:rw-
사용자가 실제로 로그인한 부분이 아닌 경우( sleep 5
로그인 프롬프트를 사용하여 콘솔로 전환할 시간이 있는 경우) 이 ACL이 삭제됩니다(존재하는 경우).
$ sleep 5; getfacl -n /dev/rfkill
getfacl: Removing leading '/' from absolute path names
# file: dev/rfkill
# owner: 0
# group: 106
user::rw-
group::rw-
mask::rw-
other::r--
연결된 커널 드라이버가 장치 파일에 대한 ACL 이상의 추가 액세스 또는 소유권을 구체적으로 제한하지 않는 한 이는 추가 권한 없이 이를 사용하는 애플리케이션에 적용됩니다.
실행합니다(루트로 사용하는 것이 더 좋지만 결과는 실제로 변하지 않습니다).
inotifywait -m -r -e attrib /dev
로그인 프롬프트를 사용하여 콘솔로 두 번 전환하고 다시 돌아가서 아이디어를 얻으려면 일반적으로 다음과 같이 수행하십시오.
- 오디오 관련 파일(
/dev/snd/
) - 동영상 관련 파일(
/dev/dri/
) - 이동식 장치 파일일 수 있습니다(예: 대상...
/dev/cdrom
). - 가상화용 KVM(
/dev/kvm
) - 내가 놓친 다른 파일이 있을 수도 있습니다.
이는 기본값을 반영하지 않을 수도 있지만 아이디어를 제공합니다.
빠른 검색으로 이 항목을 찾았습니다.체계문서는 다음 위치에 있습니다.Linux의 다중 좌석:
알아채다로그인했습니다관리하다여러 장치 클래스의 ACL, 사용자 코드가 좌석에 연결된 장치 노드에 액세스할 수 있도록 허용사용자가 활성 세션을 갖고 있는 한. 이는 기본적으로 애플리케이션에 투명합니다.
사용하여 관리하는 경우체계최소한 두 가지 구성 요소가 작동합니다.
Udevd시스템에 존재하는 적격 장치에 플래그를 지정하세요.
TAG+="uaccess"
경험상 목록은 다음과 같이 찾을 수 있습니다(
/lib
심볼릭 링크가 없는 시스템/usr/lib
도 검색해야 함/usr/lib/udev/rules.d
).grep -rw uaccess /etc/udev/rules.d /lib/udev/rules.d
다른 결과 중에서 rfkill에 대한 줄은 다음에서 찾을 수 있습니다
/lib/udev/rules.d/70-uaccess.rules
.KERNEL=="rfkill", SUBSYSTEM=="misc", TAG+="uaccess"
로그인했습니다사용자 시트 변경 사항을 추적하고(과정 생성 외에도) 이전에 태그가 지정된 장치에 대한 ACL을 변경합니다.유액세스사용자 좌석이 활성화된 경우
작은 세부사항에 대해서는:
seat_set_active()
->seat_apply_acls()
->devnode_acl_all()
, 나중에 확인하세요유액세스상표.