![向用户授予有限的 Sudo 权限](https://linux22.com/image/1128341/%E5%90%91%E7%94%A8%E6%88%B7%E6%8E%88%E4%BA%88%E6%9C%89%E9%99%90%E7%9A%84%20Sudo%20%E6%9D%83%E9%99%90.png)
我听说可以这样做,但没有找到相关文档。具体来说,我想让某人能够将其密码用作 steam 应用程序的 sudo。
答案1
您可以使用命令别名限制用户可以运行的命令sudo
- 例如,这/etc/sudoers
将限制用户执行管理所需的命令:
# define host aliases
Host_Alias HOSTNAME = laptop
# define command aliases
Cmnd_Alias ARCH = /bin/tar, /bin/gzip, /bin/gunzip
Cmnd_Alias CRYPT = /sbin/losetup, /sbin/cryptsetup
Cmnd_Alias DIR = /bin/mkdir, /bin/rmdir
Cmnd_Alias DEVICE = /sbin/ifup, /sbin/ifdown
Cmnd_Alias DISK = /bin/mount, /bin/umount
Cmnd_Alias EDIT = /usr/bin/nano, /usr/bin/gedit
Cmnd_Alias FILE = /bin/cp, /bin/echo, /bin/ln, /bin/mv, /bin/rm, /usr/bin/touch, /usr/bin/rename
Cmnd_Alias FORMAT = /sbin/mkfs.ext2, /sbin/mkfs.ext3, /sbin/mkfs.ext4, /sbin/mkfs.msdos, /sbin/mkfs.vfat
Cmnd_Alias NAV = /usr/bin/nautilus
Cmnd_Alias NETWORK = /sbin/route, /sbin/iptables, /usr/bin/nmap, /usr/sbin/hping3
Cmnd_Alias PERM = /bin/chattr, /bin/chgrp, /bin/chmod, /bin/chown
Cmnd_Alias PROCESS = /usr/bin/ps, /bin/kill, /usr/bin/killall, /sbin/shutdown
Cmnd_Alias SELINUX = /usr/sbin/semanage, /usr/bin/chcon, /sbin/restorecon, /usr/sbin/setsebool
Cmnd_Alias SERVERS = /etc/init.d/network, /etc/init.d/cups, /etc/init.d/nfs, /etc/init.d/httpd, /etc/init.d/vsftpd
Cmnd_Alias SERVICE = /usr/bin/systemctl, /sbin/chkconfig, /sbin/service, /usr/sbin/updatedb
Cmnd_Alias SOFTWARE = /usr/bin/dpkg, /usr/bin/apt-get
Cmnd_Alias VIEW = /bin/cat, /usr/bin/du, /bin/ls, /bin/tree, /bin/top, /bin/tails
# define access
root ALL = (ALL) ALL
wilf HOSTNAME = NOPASSWD: ARCH, CRYPT, DIR, DISK, DEVICE, EDIT, FILE, FORMAT, NAV, NETWORK, PERM, PROCESS, SERVERS, SERVICE, SOFTWARE, VIEW
不要只是复制粘贴。阅读手册 ( man sudoers
) 并尝试了解它如何首先保证您的系统安全。特别是NOPASSWD
位(以上适用于不需要那么高安全性的设备)。之后还要检查用户是否无法sudo -i
绕过它等。
您还可以将命令分配给特定组而不是单个用户。例如,要允许组中的用户wheel
(该组需要存在并且已添加所需的用户)使用sudo shutdown
... 并且无需密码关闭计算机:
%wheel ALL= NOPASSWD: /sbin/shutdown
关于如何运行 steam 应用程序(或某个程序),请具体了解一下,找到/创建它的启动器(~/.local/share/applications
如果由本地用户完成,则通常在 中),您可以使用它来找到运行它所需的命令 - 请注意,这通常是指存储在 中的程序~/.local/share
。但是,通常授予用户可编辑目录中脚本的 sudo 访问权限是一个非常糟糕的想法,因为他们可以用自己的脚本替换该脚本以获得提升的访问权限。如果您确实想授予他们访问一些脚本的权限,请确保只有具有正确权限的root
用户才能编辑它们/sbin
。如果您不信任某个用户,就不要授予他们 sudo 访问权限。