sudo的作用是啥呢?Sudoers allows particular users to run various commands as the root user, without needing the root password。
1、WSL Ubuntu
文件的第一句话:This file MUST be edited with the 'visudo' command as root. 这个文件需要root用户使用visudo来编辑修改,这个编辑器库检查语法,避免修改错误。
/etc/sudoers.d/目录下的文件也同样有效,提示可以在目录下新建个配置文件来避免直接修改sudoers文件。Please consider adding local content in /etc/sudoers.d/ instead of directly modifying this file.
文件里面最重要的是三个配置:
超级用户拥有所有权限
# User privilege specification
root ALL=(ALL:ALL) ALL
admin用户组拥有所有权限
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
允许使用sudo来获得所有权限
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
这条配置的含义是:
第一个,指定的是用户,也可以是别名;
第二个,ALL指定的是用户所在的主机,可以是ip,也可以是主机名;
第三个,括号里指定的也是用户,指定以什么用户身份执行sudo
第四个,ALL指定的是执行的命令;
文件最后包含sudoers.d目录。
#includedir /etc/sudoers.d
2、树莓派4B
相比于WSL Ubuntu,树莓派resdebian就只有其中两条主要的配置。
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
3、CentOS7
相比于上面,CentOS7的sudoers文件就丰富的多,可以定义具体的权限。但也有些区别。
root ALL=(ALL) ALL 。括号中只有一个ALL。
wheel用户在运行所有命令,可以不输入密码。
%wheelALL=(ALL) NOPASSWD: ALL
允许使用用户挂载U盘
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
允许使用用户关机
%users localhost=/sbin/shutdown -h now
配置文件中列出很多别名NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS。比如PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall。
那么下面的配置就是允许sys用户组可以执行别名定义的应用。
%sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
linux系统中,etc文件夹下的sudoers文件是我们常用sudo指令的配置文件。我们可能会通过修改sudoers去修改指令。但是如果修改不当则会出现以下情况:
这样的情况的出现一般是 sudoers文件本身成为了可读和可写的状态。并且可以被所有人读写。
解决问题的办法很简单:
这样即可正常使用sudoers文件。
1、超级用户概念与重要性在所有Linux系统中,系统都是通过UID来区分用户权限级别的,而UID为0的用户被系统约定为是具有超级权限。超级用户具有在系统约定的最高权限范围内 *** 作,所以说超级用户可以完成系统管理的所有工作。我们可以通过/etc/passwd 来查得UID为0的用户是root,而且只有root对应的UID为0,从这一点来看,root用户在系统中是无可替代的至高地位和无限制权限。root用户在系统中就是超级用户。 在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法 *** 作的,但对root除外。root用户的特权性还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户)。 与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户,但为了完成特定的任务,普通用户和伪装用户也是必须的。Linux是一个多用户、多任务的 *** 作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同,这也是Linux系统比Windows系统更为安全的本质所在。 由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,我们必须用到超级权限;在一般情况下,为了系统安全,对于一般常规级别的应用,不需要root用户来 *** 作完成,root用户只是被用来管理和维护系统之用;比如系统日志的查看、清理,用户的添加和删除。 在不涉及系统管理的工作的环境下,普通用户足可以完成,比如编写一个文件,听听音乐;用gimp 处理一个图片等...... 基于普通应用程序的调用,大多普通用户就可以完成。 当我们以普通权限的用户登录系统时,有些系统配置及系统管理必须通过超级权限用户完成,比如对系统日志的管理,添加和删除用户。而如何才能不直接以root登录,却能从普通用户切换到root用户下才能进行 *** 作系统管理需要的工作,这就涉及到超级权限管理的问题。 获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过su和sudo来解决。 2、超级用户在系统管理中的作用 (1)对任何文件、目录或进程进行 *** 作 但这种 *** 作是在系统最高许可范围内的 *** 作,有些 *** 作就是具有超级权限的root也无法完成。比如/proc 目录,/proc 是用来反应系统运行的实时状态信息的,因此即便是root也无法对其进行写 *** 作。 (2)对于涉及系统全局的系统管理 硬件管理、文件系统管理、用户管理以及涉及到的系统全局配置等等......如果执行某个命令或工具时,提示无权限,大多是需要超级权限来完成,比如用adduser来添加用户,这个只能用通过超级权限的用户来完成。 3、超级用户的授权 (1)su命令 su命令就是切换用户的工具。比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法。通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码;而普通用户切换到其它任何用户都需要密码验证。 su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等。 (2)sudo命令 su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作,但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协,我们绝对不能保证这10个用户都能按正常 *** 作流程来管理系统,其中任何一人对系统 *** 作的重大失误,都可能导致系统崩溃或数据损失,所以su 工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用,这时最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。 通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ,另外sudo 是需要授权许可的,所以也被称为授权许可的su。 sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。 (3)编写/etc/sudoers文件 sudo的配置文件是/etc/sudoers ,我们可以用他的专用编辑工具visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息。配置好后,可以用切换到授权的用户下,通过sudo -l 来查看哪些命令是可以执行或禁止的。 /etc/sudoers 文件中每行算一个规则,前面带有#号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用\号来续行,这样看来一个规则也可以拥有多个行。 /etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的。 具体使用可以查看man sudoers。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)