Linux中如何做超出自己权限的事

发表于:2022-5-31 09:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:但求无Bug    来源:Python技术

#
Linux
分享:
  众所周知,Linux是一个分时多用户操作系统,每个用户都有独立权限且相互隔离。其中root用户的权限是最大的,其能够操作所有的文件以及执行所有的命令。当然,正因为如此,使得其风险很大,若操作不当,就会产生严重的问题,更严重者可以导致系统崩溃。
  因而在大多数的时候,我们并不会直接使用root用户登录系统,而是使用一些有着特定权限的普通用户。因此在做某些操作的时候,就会遇到权限不足的情况,比如修改其他普通用户的密码(当然这种操作有些不合理,只是为了举例)。
  假定我们的系统中有有两个普通用户:user1和user2,当前登录系统的用户为user1,此时需要修改user2的命令,如果直接执行如下命令,就会报权限不足的提示:
  Linux中如何做超出自己权限的事
  此时有两种方式可以解决,分别是:切换其他用户执行和以其他用户的权限执行。
  切换其他用户执行
  对于切换用户而言,我们最先想到的就是,先退出当前的登录用户,然后选择目标用户进行重新登录。但是这种方式操作起来有些麻烦,因而我们可以使用更简洁的方式,也就是su命令来实现直接切换用户。
  以上面的例子来说,先使用su切换到root用户,接着再次执行之前的操作,结果如所示:

  如果我们想回退到之前的用户,只需要执行exit命令,执行结果如下所示:
  对于su来说,默认情况下是切换为root用户,如果需要切换为指定的用户,则可以在su后面指定用户名。比如user1切换为user2,使用到的命令如下所示:
  su user2
  
  执行结果如下所示:

  需要说明一点的是,如果从root用户切换为普通用户,则可以进行直接切换,而无需输入对应用户的密码。比如从root用户切换为user1用户,执行结果如下所示:
  对于su命令来说,其还可以加一个参数:"-"。加上该参数之后,不仅身份会变成对应的用户,甚至对应的用户环境也会跟着改变,当然最直观的感受就是主目录。
  下面来分别演示一下这两种情况:
  ·带“-”参数
  使用user1用户进行登录,执行“su -”命令切换后,使用pwd命令来查看当前所属的目录:
  · 不带“-”参数
  使用user1用户进行登录,执行“su ”命令切换后,使用pwd命令来查看当前所属的目录:
  以其他用户的权限执行操作
  大多数时候,我们只是需要以某个用户的权限来执行对应的命令即可,而不是非要切换成对应的用户。
  对于以其他用户权限执行某个操作的命令为:sudo。比如上面提到的例子,此时可以使用如下命令:
  sudo passwd user2

  执行后如所示:
  看到这大家是否会有所困惑呢?不是说使用sudo命令可以使用其他用户的权限做某些操作吗?怎么还提示错误了呢?
  实际上运行该命令有一定的限制条件,那就是该用户必须在/etc/sudoers中存在。也只有当用户在/etc/sudoers配置文件中被配置过时,才能够拥有使用sudo命令的权限,才能使用sudo以其他用户的身份执行某些操作。
  当然,作为普通用户是没有编辑/etc/sudoers配置文件的权限的,该操作必须使用root用户登录系统,来将该用户添加到/etc/sudoers配置文件中。这种限制在一定程度上避免了安全风险,毕竟所有能够使用sudo命令的人都是被root用户进行过授权。
  以root用户登录系统后,就可以通过执行如下命令进入到/etc/sudoers配置文件的编辑页面:
  vi /etc/sudoers
  或
  visudo

  对于以上的两个命令,推荐使用visudo,因为这种方式有自动的语法检查功能。
  执行命令的页面如下所示:
  接着在该配置文件中新增一条配置信息:
  user1 ALL=(ALL) ALL ## 复制上一行的内容
  如下所示:
  接着保存并退出。此时再次执行上面修改user2用户的密码的命令,结果如下所示:
  也就是说,此时通过使用sudo命令,就可以使得普通用户user1能够以root用户的权限来完成修改其他普通用户user2的密码的操作。
  通过观察发现,每次执行sudo命令时都需要输入当前登录用户的密码,这似乎让人有点恼火,那么是否有办法避免这个事呢?解决方法就是使用root用户来对刚才的配置进行修改,在user1的记录的最后一个ALL前面增加一个参数:NOPASSWD,修改后的记录为:
  user1 ALL=(ALL) NOPASSWD:ALL

  如下图所示:
  保存退出后,再次重复之前的操作,发现这次无需再次输入密码:
  到此,如何做自己权限之外的操作的方法已经介绍完毕,希望可以对大家有所帮助。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号