3

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

 2 years ago
source link: https://os.51cto.com/article/710286.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux中如何做超出自己权限的事-51CTO.COM

de386c798d11cd09eb31c9e8b67566a0.jpg
Linux中如何做超出自己权限的事
作者:但求无Bug 2022-05-30 14:12:03

众所周知,Linux是一个分时多用户操作系统,每个用户都有独立权限且相互隔离。其中root用户的权限是最大的,其能够操作所有的文件以及执行所有的命令。当然,正因为如此,使得其风险很大,若操作不当,就会产生严重的问题,更严重者可以导致系统崩溃。

众所周知,Linux是一个分时多用户操作系统,每个用户都有独立权限且相互隔离。其中root用户的权限是最大的,其能够操作所有的文件以及执行所有的命令。当然,正因为如此,使得其风险很大,若操作不当,就会产生严重的问题,更严重者可以导致系统崩溃。

因而在大多数的时候,我们并不会直接使用root用户登录系统,而是使用一些有着特定权限的普通用户。因此在做某些操作的时候,就会遇到权限不足的情况,比如修改其他普通用户的密码(当然这种操作有些不合理,只是为了举例)。

假定我们的系统中有有两个普通用户:user1和user2,当前登录系统的用户为user1,此时需要修改user2的命令,如果直接执行如下命令,就会报权限不足的提示:

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

此时有两种方式可以解决,分别是:切换其他用户执行和以其他用户的权限执行。

切换其他用户执行

对于切换用户而言,我们最先想到的就是,先退出当前的登录用户,然后选择目标用户进行重新登录。但是这种方式操作起来有些麻烦,因而我们可以使用更简洁的方式,也就是su命令来实现直接切换用户。

以上面的例子来说,先使用su切换到root用户,接着再次执行之前的操作,结果如所示:

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

如果我们想回退到之前的用户,只需要执行exit命令,执行结果如下所示:

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

对于su来说,默认情况下是切换为root用户,如果需要切换为指定的用户,则可以在su后面指定用户名。比如user1切换为user2,使用到的命令如下所示:

su user2

执行结果如下所示:

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

需要说明一点的是,如果从root用户切换为普通用户,则可以进行直接切换,而无需输入对应用户的密码。比如从root用户切换为user1用户,执行结果如下所示:

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

对于su命令来说,其还可以加一个参数:"-"。加上该参数之后,不仅身份会变成对应的用户,甚至对应的用户环境也会跟着改变,当然最直观的感受就是主目录。

下面来分别演示一下这两种情况:

  • 带“-”参数

使用user1用户进行登录,执行“su -”命令切换后,使用pwd命令来查看当前所属的目录:

Linux中如何做超出自己权限的事
  • 不带“-”参数

使用user1用户进行登录,执行“su ”命令切换后,使用pwd命令来查看当前所属的目录:

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

以其他用户的权限执行操作

大多数时候,我们只是需要以某个用户的权限来执行对应的命令即可,而不是非要切换成对应的用户。

对于以其他用户权限执行某个操作的命令为:sudo。比如上面提到的例子,此时可以使用如下命令:

sudo passwd user2

执行后如所示:

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

看到这大家是否会有所困惑呢?不是说使用sudo命令可以使用其他用户的权限做某些操作吗?怎么还提示错误了呢?

实际上运行该命令有一定的限制条件,那就是该用户必须在/etc/sudoers中存在。也只有当用户在/etc/sudoers配置文件中被配置过时,才能够拥有使用sudo命令的权限,才能使用sudo以其他用户的身份执行某些操作。

当然,作为普通用户是没有编辑/etc/sudoers配置文件的权限的,该操作必须使用root用户登录系统,来将该用户添加到/etc/sudoers配置文件中。这种限制在一定程度上避免了安全风险,毕竟所有能够使用sudo命令的人都是被root用户进行过授权。

以root用户登录系统后,就可以通过执行如下命令进入到/etc/sudoers配置文件的编辑页面:

vi /etc/sudoers
或
visudo

对于以上的两个命令,推荐使用visudo,因为这种方式有自动的语法检查功能。

执行命令的页面如下所示:

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

接着在该配置文件中新增一条配置信息:

user1 ALL=(ALL) ALL ## 复制上一行的内容

如下所示:

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

接着保存并退出。此时再次执行上面修改user2用户的密码的命令,结果如下所示:

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

也就是说,此时通过使用sudo命令,就可以使得普通用户user1能够以root用户的权限来完成修改其他普通用户user2的密码的操作。

通过观察发现,每次执行sudo命令时都需要输入当前登录用户的密码,这似乎让人有点恼火,那么是否有办法避免这个事呢?解决方法就是使用root用户来对刚才的配置进行修改,在user1的记录的最后一个ALL前面增加一个参数:NOPASSWD,修改后的记录为:

user1 ALL=(ALL) NOPASSWD:ALL

如下图所示:

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

保存退出后,再次重复之前的操作,发现这次无需再次输入密码:

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

到此,如何做自己权限之外的操作的方法已经介绍完毕,希望可以对大家有所帮助。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK