未加星标

安全与加密之su与sudo使用详解

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
本章目录

su命令的使用

sudo命令

sudo配置说明

sudo别名和示例

前言

在工作生产环境中尽量不要去使用root用户,因为root权限过大,一旦操作失误后将面临十分严重的后果。但许多的系统管理命令和服务为了安全只有超级用户才有权限使用,因此这也无疑让普通用户受到更多的权限束缚,而su命令则是用于便捷的变更使用者的身份,能够让使用者在不注销的情况下顺畅的切换至其他用户。

1.su命令的使用

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户账号和密码。

语法

su (选项)(参数)

选项

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

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

-l或--login:改变身份时,也同时变更工作目录。以及HOME,SHELL,USER,LOGNAME,PATH变量等;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s或--shell=:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息

参数

用户:指定要切换身份的目标用户。

示例

变更账号为root查看root家目录后退回当前用户

[[email protected] ~]$ su -l root -c ls 密码: anaconda-ks.cfg gpgtest initial-setup-ks.cfg [[email protected] ~]$ 小结

若要完整的切换到新使用者的环境,必须使用su - username 或 su -l username,才会彻底转换为新用户;

如果仅想运行一次root的命令,可以使用su -c 'command'的方式来实现;

使用root切换为任何使用者时,不需要输入新用户的口令。

当多人管理时,若大家都是用su来切换为root时,就面临着所有用户都需要知道root口令,这将很不安全,这时就需要用到sudo命令

2.sudo命令

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

语法

sudo (选项)(参数)

选项

-b:在后台执行指令;

-h:显示帮助; -H:将HOME环境变量设为新身份的HOME环境变量;

-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。 -l:列出目前用户可执行与无法执行的指令;

-p:改变询问密码的提示符号; -s:执行指定的shell; -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;

-v:延长密码有效期限5分钟;

-V :显示版本信息。

参数

指令:需要运行的指令和对应的参数。

sudo命令特性:

sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用sudo,会提示联系管理员

sudo可以提供日志,记录每个用户使用sudo操作

sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机

sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”

通过visudo命令编辑配置文件,具有语法检查功能

示例

以zh用户的身份,在tmp目录下创建一个名为mytest的文件

[[email protected] ~]# sudo -u zh touch /tmp/mytest [[email protected] ~]# ll /tmp/mytest -rw-r--r--. 1 zh zh 0 12月 5 22:34 /tmp/mytest 思考

sudo为什么默认仅有root能使用

当用户运行sudo时,系统与/etc/sudoers文件中搜寻该使用者是否有运行sudo的权限

若使用者具有可运行sudo的权限后,便让使用者输入用户自己的口令来确认

若口令输入成功,便开始进行sudo后续命令(root运行sudo时不需要输入口令)

若切换的身份与运行者身份相同,也不需要输入口令

注意:

sudo运行的重点在于,/etc/sudoers文件中是否有执行者的相关配置,所以能否使用sudo与/etc/sudoers有关,编辑sudoers文件,不能直接使用vim去修改,这个文件内容有一定的语法格式,应使用visudo命令;visudo会调用vi编辑器来修改配置文件,,若存在语法错误,则会报错。

只有超级用户才可以使用visudo命令编辑sudo配置文件(/etc/sudoers);visudo命令优势:1、可以防止多个用户同时修改sudo配置文件;2、对sudo程序配置文件的语法检查;

visudo 语法格式

使用者账号 登录者的来源主机名=(可切换的身份) 可下达的命令 root ALL=(ALL) ALL

这四个组件的意义

使用者账号:系统的哪个账号可以使用sudo这个命令,默认为root

登录者的来源主机名:登录账号由哪部主机链接到本主机,这个配置值可以指定客户端主机,默认值root可来自任何一部网络主机

可切换的身份:这个账号可以切换成什么身份来下达后面的命令,默认root可以切换成任何人

可下达的命令:可用该身份下达什么命令,这个命令请务必使用绝对路径,默认root可以切换任何身份执行任何命令

示例

1. 允许用户切换任何身份,执行所有命令

[[email protected] ~]# visudo zh ALL=(ALL) ALL [[email protected] ~]# su - zh [[email protected] ~]$ sudo -l #查看zh用户可以使用sudo执行哪些命令 [sudo] password for zh: #输入zh用户明码 Matching Defaults entries for zh on this host: requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User zh may run the following commands on this host: (ALL) ALL # 可以使用所有命令 [[email protected] ~]$ ls /root #直接查看root目录,被阻止 ls: cannot open directory /root: Permission denied [[email protected] ~]$ sudo ls /root #使用sudo可以查看 a.sh dir1 key.pem pubkey.pem usr

2. 指定某用户只具有管理用户功能

[[email protected] ~]# visudo zh ALL=(root) /usr/bin/passwd [[email protected] ~]# su - zh [[email protected] ~]$ sudo passwd lisi [sudo] password for zh: Changing password for user lisi. New password: Retype new password: passwd: all authentication tokens updated successfully. [[email protected] ~]$ su - lisi Password: [[email protected]s7 ~]$ whoami lisi # 此时就面临一个问题,这个用户是不是就可以更改root用户的密码呢? [[email protected] ~]$ sudo passwd Changing password for user root. # 修改的为root的密码 New password: Retype new password: passwd: all authentication tokens updated successfully. [[email protected] ~]$ sudo passwd root Changing password for user root. # 指定修改root密码也可以 New password: Retype new password: passwd: all authentication tokens updated successfully. [[email protected] ~]$ su - root Password: Last login: Thu Dec 29 10:24:12 CST 2016 from 192.168.1.104 on pts/1 [[email protected] ~]# whoami root #此时该如何解决呢? [[email protected] ~]# visudo 99 zh ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root # 加上!,代表不可运行的意思。因此定义为:可以运行passwd+除root以为的任意字符。 [[email protected] ~]# su - zh [[email protected] ~]$ sudo passwd Sorry, user zh is not allowed to execute '/bin/passwd' as root on centos7. [[email protected] ~]$ sudo passwd root Sorry, user zh is not allowed to execute '/bin/passwd root' as root on centos7. [[email protected] ~]$ sudo passwd lisi Changing password for user lisi. New password: Retype new password: passwd: all authentication tokens updated successfully.

3. 使用群组免口令功能

# 新建一个user1组,将zh用户加入user1 [[email protected] ~]# useradd user1 [[email protected] ~]# usermod -G user1 zh [[email protected] ~]# id zh uid=1008(zh) gid=1020(zh) groups=1020(zh),1021(user1) # 编辑sudo配置文件 [[email protected] ~]# visudo %user1 ALL=(ALL) NOPASSWD: ALL # 测试 [[email protected] ~]$ sudo ls /root a.sh dir1 key.pem pubkey.pem usr [[email protected] ~]$ sudo -k [[email protected] ~]$ sudo ls /root a.sh dir1 key.pem pubkey.pem usr [[email protected] ~]$ exit logout [[email protected] ~]# su - user1 [[email protected] ~]$ sudo ls /root a.sh dir1 key.pem pubkey.pem usr

4. 通过别名设置sudo

别名具有以下四种类型

Host_Alias:定义主机别名

User_Alias:定义用户别名,别名成员可以为用户,也可以为用户组(前面加%)

Runas_Alias:定义runas别名,这个别名为“目的用户”,即sudo允许切换至的用户;

Cmnd_Alias:定义命令别名

[[email protected] ~]# visudo User_Alias USERADMIN = zh,user1 Cmnd_Alias ADMINCMD = !/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwd root USERADMIN ALL=(root) ADMINCMD #测试 [[email protected] ~]# su - zh Last login: Tue Jan 3 11:37:05 CST 2017 on pts/0 [[email protected] ~]$ sudo ls /root Sorry, user zh is not allowed to execute '/bin/ls /root' as root on centos7. [[email protected] ~]$ sudo passwd Sorry, user zh is not allowed to execute '/bin/passwd' as root on centos7. [[email protected] ~]$ sudo passwd root Sorry, user zh is not allowed to execute '/bin/passwd root' as root on centos7. [[email protected] ~]$ sudo passwd lisi Changing password for user lisi. New password: Retype new password: passwd: all authentication tokens updated successfully. [[email protected] ~]# su - user1 Last login: Tue Jan 3 11:41:34 CST 2017 on pts/0 [[email protected] ~]$ sudo ls /root/ Sorry, user user1 is not allowed to execute '/bin/ls /root/' as root on centos7. [[email protected] ~]$ sudo passwd Sorry, user user1 is not allowed to execute '/bin/passwd' as root on centos7. [[email protected] ~]$ sudo passwd root Sorry, user user1 is not allowed to execute '/bin/passwd root' as root on centos7. [[email protected] ~]$ sudo passwd lisi Changing password for user lisi. New password: Retype new password: passwd: all authentication tokens updated successfully.

sudo搭配su的使用方法 :

很多时候我们需要大量运行很多root的工作,所以一直使用sudo确实比较麻烦。那么我们可以使用sudo搭配su使用,将身份转为root,而且还用用户自己的口令变成root。这样一来,可以更加方便的管理系统,而且root密码也不会泄露。

示例

[[email protected] ~]# visudo User_Alias USERADMIN = zh,user1 USERADMIN ALL=(root) /bin/su - [[email protected] ~]# su - zh [[email protected] ~]$ sudo su - [sudo] password for zh: Last login: Tue Jan 3 10:11:55 CST 2017 from 192.168.1.104 on pts/0 [[email protected] ~]# ls a.sh dir1 key.pem pubkey.pem usr [[email protected] ~]# exit logout [[email protected] ~]$ exit logout [[email protected] ~]#

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: ADMTIUAUTAUSUAUT变量RYSAGE
分页:12
转载请注明
本文标题:安全与加密之su与sudo使用详解
本站链接:http://www.codesec.net/view/520585.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(72)