Ulf*_*lfR 4 usb debian permissions
我是 acl 的新手,所以这对我来说是黑魔法。但我拥有的是一台我想与之交谈的相机。
所以我得到了一台网络启动的 Debian 机器:
ulf@term13:~(0)$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.10 (squeeze)
Release: 6.0.10
Codename: squeeze
Run Code Online (Sandbox Code Playgroud)
我在那台机器上安装了一个相机:
ulf@term13:~(0)$ lsusb | grep Nikon
Bus 001 Device 092: ID 04b0:0428 Nikon Corp.
ulf@term13:~(0)$ ls -alF /dev/bus/usb/001/092
crw-rw-r--+ 1 root root 189, 91 25 sep 10.05 /dev/bus/usb/001/092
Run Code Online (Sandbox Code Playgroud)
请注意+权限字符串末尾的crw-rw-r--+。这表明这里有一个ACL正在工作:
ulf@term13:~(1)$ getfacl /dev/bus/usb/001/092
getfacl: Removing leading '/' from absolute path names
# file: dev/bus/usb/001/092
# owner: root
# group: root
user::rw-
user:knut:rw-
group::rw-
mask::rw-
other::r--
Run Code Online (Sandbox Code Playgroud)
显然用户 knutrw在这里拥有额外的权限。但他是怎么得到它们的呢?
我可以使用 为我的用户设置相同的权限setfacl。但重新连接相机后,任何类似的设置都不会出现。打开和关闭相机后,它实际上被安装在另一个设备上:
ulf@term13:~(0)$ lsusb | grep Nikon
Bus 001 Device 093: ID 04b0:0428 Nikon Corp.
Run Code Online (Sandbox Code Playgroud)
但新 093 设备的权限与旧 092 相同(没有我添加到 092 的任何额外权限)。
我认为有一个udev-rule-file 应该是负责人,但它是空的???
ulf@term13:~(0)$ ls -alF /etc/udev/rules.d/90-libgphoto2.rules
-rw-r--r-- 1 root root 0 26 aug 2014 /etc/udev/rules.d/90-libgphoto2.rules
Run Code Online (Sandbox Code Playgroud)
其他 udev 文件都没有与此相关的任何内容。
是否有一些配置文件?这是由不再存在的系统管理员设置的,因此我需要自己修复它。
\n\n显然,用户 knut 在这里拥有额外的 rw 权限。但他是怎么得到它们的呢?
\n
用户“knut”是否已在控制台登录?在许多最新的 Linux 系统上,udev根据当前登录的用户授予设备访问权限。
\n(这里的“控制台”是指直接连接到计算机\xe2\x80\x93的主显示器+键盘,无论是文本模式还是图形模式都没有关系。)
\n旧版本(包括 Debian 6)有规则,并TAGS+="udev-acl"从 ConsoleKit 获取会话状态(如果存在),否则从 pam_console 获取。查一下who,内容/var/run/console,或许还有ck-list-sessions。这些机制相对简单 \xe2\x80\x93 如果用户登录到“控制台”,他们就可以访问,否则就不能。
使用 systemd 的发行版从systemd-logind获取相同的信息并使用"uaccess"标签。除了控制台之外,logind 还支持“多席位”系统,其中多个用户可以同时在多个显示器上工作,每个显示器都有一个指定的 USB 端口。
如果您想绕过此问题并向其他用户授予访问权限,您可以使用此 \xe2\x80\x93 的传统“组”权限编写 udev 规则,将您的设备分配给该组GROUP="camera-users"并向该组添加人员。
\n\n打开和关闭相机后,它实际上被安装在另一个设备上:
\nRun Code Online (Sandbox Code Playgroud)\nulf@term13:~(0)$ lsusb | grep Nikon\nBus 001 Device 093: ID 04b0:0428 Nikon Corp. \n
在 Linux(通常是 Unix)上,\'mount\' 是指将文件系统附加到某个目录(“/dev/sda2 安装在 /boot”\xe2\x80\x93 /dev/sda2 包含的文件系统可访问在 /boot)。同时USB设备编号只是数字,按顺序分配;这并不构成“安装”设备。
\n| 归档时间: |
|
| 查看次数: |
3522 次 |
| 最近记录: |