本文目录:
- 1、linux sudo用法
- 2、linux给普通用户sudo权限
- 3、Linux之让普通用户具有sudo权限
- 4、linux设置sudo权限
linux sudo用法
一种约束用户执行系统管理命令方面的安全机制,允许指定的用户以root身份执行指定的命令而不需要提供root密码。用过Ubuntu(Debian系)的小伙伴很有发言权。
当用户要执行比如systemctl stop httpd时,如果该用户不被允许使用systemctl stop命令,则命令无法运行,从而实现只允许指定用户(信任的小伙伴)才可运行相关系统、服务管理方面的命令;如果用户被允许使用该命令,sudo机制也会提醒用户输入其账号密码,从而存在一个缓冲的时间,可以让命令执行者脑袋清醒一下,确认无误后敲下回车。
Sudo应该是Switch User Do的简写(尚未考证),简单粗暴的翻译就是“切换用户干”,当指定sudo systemctl stop httpd命令时,事实上是以root用户的身份运行的。下面以Redha系CentOS7.6来介绍一下sudo的使用,通过visudo直接回车可看到:
图中可以看出默认有8个命令别名,每一个别名分别对应一些命令,比如PROCESS,是nice、kill、killall三个命令的别名。之所以要有别名,是因为将命令分门别类后便于后面的引用。
看懂语法,基本就可以搞定了。每个框框中注释部分说的很清楚。比如“%wheel ALL=(LL) NOPASSWD:ALL”表示wheel这个群组中的用户可以在任何主机上执行任何命令且不需要输入密码。
用户名:ds
群组: testgroup
要求:只允许testgroup群组用户执行跟networking相关的命令
步骤:
1、 [endif]命令行中输入visudo回车—编辑/etc/sudoers文件
2、 [endif]去掉“Cmnd_Alias NETWORKING…“一行的的注释
3、 加入下面一行
4、 测试
可以看到ds用户执行ping是可以的,但是执行kill命令就不行了,即使使用sudo尝试使用root身份执行也不行:
通过/var/log/secure日志文件可以看的更详细:
常用实例讲解
1 .oracle用户可以在任何地点以任何的身份执行所有命令,等同于root。
oracle ALL=(ALL) ALL
2. oracle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和usermod(需要密码).
这样oracle2就可以免密码useradd,有密码(密码为oracle2的自身密码)使用userdel。
oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
使用方式如下
[oracle2@centos74 ~]$ useradd test001 # 直接使用命令是不可以的。
-bash: /usr/sbin/useradd: Permission denied
[oracle2@centos74 ~]$ sudo useradd test001 # 必须加sudo
[oracle2@centos74 ~]$ id test001 # 查看添加的用户信息
uid=1031(test001) gid=1032(test001) groups=1032(test001)
3. oracle3用户只能在192.168.1.120主机远程登录并以root身份执行ifconfig eth0命令。
Cmnd_Alias NETCMND = /sbin/ifconfig eth0
oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND
4. oracle4用户可以执行/usr/sbin下的所有命令除了/usr/sbin/userdel
oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel
5. oracle5用户可以cat /var/log/secure*的文件
oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *
linux给普通用户sudo权限
linux与用户权限设置:
1、添加用户
首先用adduser命令添加一个普通用户,命令如下:
#adduser tommy //添加一个名为tommy的用户
#passwd tommy //修改密码
Changing password for user tommy.
New UNIX password: //在这里输入新密码
Retype new UNIX password: //再次输入新密码
passwd: all authentication tokens updated successfully.
2、赋予root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
Linux之让普通用户具有sudo权限
一、简介
sudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部root命令的一个工具。Linux系统下,为了安全,一般来说我们操作都是在普通用户下操作,但是有时候普通用户需要使用root权限,比如在安装软件的时候。这个时候如果我们需要切回root用户下。安装完毕后可能还需再切回普通用户,这样操作效率就会比较低,所以用sudo命令就会很方便。
执行sudo的时候相当于具备了root权限去执行命令,执行完毕后自动切回到普通用户
2.打开/etc/sudoers文件进行编辑
找到root ALL=(ALL) ALL ,加入
Linux下如何让普通用户具备sudo执行权限(普通用户提权)
我这里的普通用户是 zhangfei
首先还是需要知道root的密码
加入一行即可:
将该普通用户加入权限:
linux设置sudo权限
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_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = 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
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_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
【linux添加sudo】的内容来源于互联网,如引用不当,请联系我们修改。
网友留言: