如何确定组的权限?

如何确定组的权限?

当您调用 时sudo,它会提示输入密码,然后检查/etc/sudoers配置文件以查看用户是否被允许访问以运行命令。/etc/sudoerssudo允许某些用户或组运行某些命令的配置文件。例如,下面我们让名为 的用户john从任何终端运行命令 power off:

john ALL= /sbin/poweroff

显然 root 用户可以做任何事情:

root    ALL=(ALL) ALL

由于root可以执行任何操作,因此我们经常希望使用该sudo程序将自己提升为root(带有密码提示)来执行一些系统级命令。如果我们输入正确的用户密码,那么我们就可以执行该命令。但我们首先需要一种方法来确保该用户可以提升为 root。因此, 的目的/etc/group

sudo:x:27:myuser

/etc/group是一个文本文件,定义用户所属的组。文件系统权限分为用户、组和其他。组的使用允许以有组织的方式委派额外的能力,例如对磁盘、打印机和其他外围设备的访问。

读完的时候本文关于如何使用gammu-smsd守护进程,我遇到了这一行:

我们并不真的希望每次发送短信时都输入管理密码,因此我们必须做的第一件事就是将自己添加到 dialout 用户组中。该组的所有成员都有权在 Ubuntu 系统上使用类似调制解调器的设备。

授予 dialout 组这样的权限是在哪里定义的?我查看我的/etc/sudoers文件,发现没有提及 dialout:

$ sudo cat /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

我认为关于团体,我缺少一个关键要素。

答案1

授予各种访问权限的组的 Unix 方法非常原始 - 它大多只是向相关设备授予写入(可能还有读取)类型的权限。例如,对于拨出:

faheem@orwell:/dev$ ls -lah | grep dialout 
crw-rw---T 1 root dialout 4, 64 Jul 22 22:45 ttyS0 
crw-rw---T 1 root dialout 4, 65 Jul 22 22:45 ttyS1 
crw-rw---T 1 root dialout 4, 66 Jul 22 22:45 ttyS2 
crw-rw---T 1 root dialout 4, 67 Jul 22 22:45 ttyS3

因此,dialout组具有对相关设备进行写入和读取的权限;在本例中为串行端口。

答案2

编写一些程序来检查当前用户是否属于特定组。如果是,则运行该应用程序,如果不是,则提示输入管理员密码。

这与 sudoers 文件无关,而是在软件代码级别执行的检查。

相关内容