linux设置sudo权限

linux设置sudo权限,第1张

Linux用户配置sudo的工作过程如下:

1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限

2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认

3,若密码输入成功,则开始执行sudo后续的命令

4,root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)

5,若欲切换的身份与执行者的身份相同,也不需要输入密码

visudo使用vi打开/etc/sudoers文件,但是在保存退出时,visudo会检查内部语法,避免用户输入错误信息

visudo需要root权限

[Hadoop@localhost ~]$ visudo

visudo:/etc/sudoers:权限不够

visudo:/etc/sudoers:权限不够

使用visudo命令打开sudo配置文件

## Sudoers allows particular users to run various commands as

## the root user, without needing the root password.

## 该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码

##

## Examples are provided at the bottom of the file for collections

## of related commands, which can then be delegated out to particular

## users or groups.

## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或

## 用户组所使用

##

## This file must be edited with the 'visudo' command.

## 该文件必须使用"visudo"命令编辑

## Host Aliases

## Groups of machines. You may prefer to use hostnames (perhaps using

## wildcards for entire domains) or IP addresses instead.

## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)

## 、或IP地址,这时可以配置主机别名

# Host_AliasFILESERVERS = fs1, fs2

# Host_AliasMAILSERVERS = smtp, smtp2

## User Aliases

## These aren't often necessary, as you can use regular groups

## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname

## rather than USERALIAS

## 这并不很常用,因为你可以通过使用组来代替一组用户的别名

# User_Alias ADMINS = jsmith, mikem

## Command Aliases

## These are groups of related commands...

## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,

## 可以通过sudo调用所有别名包含的命令,下面是一些示例

## Networking 网络 *** 作相关命令别名

# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient

, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig

, /sbin/mii-tool

## Installation and management of software 软件安装管理相关命令别名

# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services 服务相关命令别名

# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

## Updating the locate database 本地数据库升级命令别名

# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage 磁盘 *** 作相关命令别名

# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe

, /bin/mount, /bin/umount

## Delegating permissions 代理权限相关命令别名

# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

## Processes 进程相关命令别名

# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers 驱动命令别名

# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.

#You have to run "ssh -t hostname sudo <cmd>".

# 一些环境变量的相关配置,具体情况可见man soduers

Defaultsrequiretty

Defaultsenv_reset

Defaultsenv_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"

Defaultsenv_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"

Defaultsenv_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"

Defaultsenv_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"

Defaultsenv_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Defaultssecure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what software on

## which machines (the sudoers file can be shared between multiple

## systems).

## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)

## Syntax(语法):

##

## user MACHINE=COMMANDS 用户 登录的主机=(可以变换的身份) 可以执行的命令

##

## The COMMANDS section may have other options added to it.

## 命令部分可以附带一些其它的选项

##

## Allow root to run any commands anywhere

## 允许root用户执行任意路径下的任意命令

root ALL=(ALL) ALL

## Allows members of the 'sys' group to run networking, software,

## service management apps and more.

## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令

# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE

, DRIVERS

## Allows people in group wheel to run all commands

## 允许wheel用户组中的用户执行所有命令

%wheel ALL=(ALL) ALL

## Same thing without a password

## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令

# %wheel ALL=(ALL) NOPASSWD: ALL

## Allows members of the users group to mount and unmount the

## cdrom as root

## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令

# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system

## 允许users用户组中的用户关闭localhost这台服务器

# %users localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)

#includedir /etc/sudoers.d

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。

1、内容不同:

su命令:用来切换用户,substitute英文含义“代替”的意思。

sudo命令:sudo为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户。

2、用法不同:

su命令:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变。

sudo命令: 查看当前用户可以用sudo执行的命令都有哪些。

3、环境不同:

su命令:切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境。

sudo命令:是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。

扩展资料:

su的参数:

-c<指令>或--command=<指令>:执行一个指令后就恢复原来的身份;

-f或--fast:使shell不用读取启动文件,适用于csh和tcsh;

-,-l,--login:切换用户时,使环境变量(home,shell,user,logname,path等)和欲切换的用户相同、不使用则取得用户的临时权限;

-m,-p,:变更身份时,保留环境变量不变;

-s<shell>,--shell=<shell>:指定执行命令的shell;

--help:显示帮助;

--version:显示版本信息;

用户账户:指定欲切换用户,默认切换为root。

参考资料:百度百科-su


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7146916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存