| 关键词: 用户 zcwyou sudo 命令 身份 密码 root 指令 文件 配置 |
日常操作中为了避免一些误操作,更加安全的管理系统,我们一般使用普通用户登录系统,而非root。当需要执行一些管理员命令操作时,再切换成root用户身份去执行。 普通用户切换到root用户的方式有:su和sudo。 sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。 sudo是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root执行的操作,而不需要知道root的密码,它依赖于/etc/sudoers这个文件,可以授权于那个用户在那个主机上能够以管理员的身份执行什么样的管理命令,而且是有限的。这个文件相当于就是一个授权表。 Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。 使用权限:在 /etc/sudoers 中有出现的使用者。 配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。 visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理。 ![]() 2. 配置sudo用户 修改sudo的配置文件,使zcwyou用户也可以通过sudo调用root权限。让用户zcwyou可以通过sudo执行所有root可执行的命令。 以root身份用visudo打开配置文件 [ zcwyou@zcwyou ~] $ visudo ![]() 可以看到类似下面几行: # Runas alias specification # User privilege specificationroot ALL=(ALL)ALL 加入一行,针对zcwyou用户: zcwyou ALL=(ALL) ALL 保存退出 root root用户 ALL 所有的主机上都可以 (ALL) 是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令 ALL 所有的命令,也可以限制只能执行某些指令。 验证: 切换到zcwyou用户,我们用它的身份执行命令: [ zcwyou@zcwyou ~] $ su - zcwyou [ zcwyou@zcwyou ~] $ ls / root ls: /root: 权限不够 [ zcwyou@zcwyou ~] $ sudo ls / root PassWord: anaconda-ks.cfg Desktop install.log install.log.syslog 3. 限制sudo用户的权限 只让zcwyou像root那样使用ls和ifconfig [ zcwyou@zcwyou ~] $ visudo 修改为以下内容: zcwyou localhost= /sbin/ifconfig, /bin/ls ![]() 再来执行命令: [ zcwyou@zcwyou ~] $ sudo head - 5 / etc / shadow Password: Sorry, user zcwyou is not allowed to execute /usr/bin/head -5 /etc/shadow as root on localhost.localdomain. 提示没有权限,证明设置成功。 [ zcwyou@zcwyou ~] $ sudo / sbin / ifconfig eth0 ifconfig可正常使用。 4. 借用其他用户身份 例如,我们想让zcwyou用户在linux主机上以user1或user2的身份执行date命令,这样编写配置文件: zcwyou linux=(user1,user2) /usr/bin/date 那么,zcwyou到底以user1还是user2的身份执行?需要把user1或user2设为默认的目标用户即可。比如,再加一行,以user1为默认用户: Defaults:zcwyou runas_default=user1 当然,我们可以使用sudo -u user1 date或者sudo -u user2 date灵活切换用户。但这样比较麻烦。 再来看一条里面的规则: %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom user321 192.168.100.0/24=(root) /usr/sbin/useradd %users 就是代表users这个组里面的所有成员 ALL 代表可以这所有的主机上 = 后面没有括号,也就是代表默认是以root身份 /sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 可以执行挂载的命令 用户是user321 5. 查看用户可以执行的命令 已经授权的普通用户可以使用命令: [ zcwyou@zcwyou ~] $ sudo - l 显示可以执行那些命令 要执行命令要在执行命令之前加上 sudo ,然后输入用户自己的密码,这是因为要验证,执行命令的用户确实是该用户。 sudo命令还有这个机制,就是在你正确输入密码并成功执行命令的5分钟内,再执行命令是不需要输入密码的,过了5分钟,就需要再次验证该用户的自己的密码,当然也可以手动让该期限过期,请看最后的sudo语法。 Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行: Defaults env_reset 6. sudo免密码: 默认情况下,每次使用sudo都要求输入密码(相隔大于5分钟),通过修改配置免密。针对用户user123设置 user123 localhost=NOPASSWD: /bin/cat, /bin/ls 7. sudo选项说明
![]() 点击了解更多,快速查看更多的技术文章列表。 |
| 本文出处: https://www.toutiao.com/a6672317127719911950/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|