当前位置: 首页 > 科技观察

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

时间:2023-03-12 05:43:56 科技观察

众所周知,Linux是一个分时多用户操作系统,每个用户都有独立的权限,相互隔离。其中root用户的权限最大,可以操作所有文件,执行所有命令。当然,也正因为如此,风险很大。如果操作不当,会导致严重的问题,更严重的会导致系统崩溃。所以,很多时候,我们不会直接使用root用户登录系统,而是使用一些具有特定权限的普通用户。因此,在进行某些操作时,会遇到权限不足的情况,比如修改其他普通用户的密码(当然,这种操作有些不合理,仅举个例子)。假设我们系统中有两个普通用户:user1和user2。当前登录系统的用户是user1。这时需要修改user2的命令。有两种解决方法,即:切换到其他用户执行和以其他用户权限执行。切换其他用户执行对于切换用户,我们首先想到的是先退出当前登录用户,然后再选择目标用户重新登录。但是这种方法操作起来有点繁琐,所以我们可以使用更简洁的方法,即直接使用su命令切换用户。以上面的例子为例,先用su切换到root用户,然后再次执行之前的操作,结果如图:如果我们想回到之前的用户,只需要执行exit命令,执行结果如下:对于su,默认是切换到root用户。如果需要切换到指定用户,可以在su后面指定用户名。例如从user1切换到user2,使用的命令如下:suuser2执行结果如下:需要注意的是,如果是从root用户切换到普通用户,可以不输入密码直接切换相应用户的。例如从root用户切换到user1用户,执行结果如下:对于su命令,还可以加一个参数:“-”。添加这个参数后,不仅身份会变成对应的用户,连对应的用户环境也会发生变化。当然最直观的感觉还是主目录。下面分别演示这两种情况:使用user1用户带“-”参数登录,执行“su-”命令切换,使用pwd命令查看当前目录:使用user1用户不带“-””参数登录,执行“su”命令切换,使用pwd命令查看当前目录:以其他用户权限进行操作。很多时候,我们只需要以某个用户的权限执行相应的命令即可,而不是不要切换到相应的用户。以其他用户权限执行操作的命令是:sudo。比如上面提到的例子,这时候可以使用如下命令:sudopasswduser2执行如图所示:看到这里你是不是一头雾水?不是说可以在其他用户的权限下使用sudo命令进行某些操作吗??为什么还是提示错误?其实运行这个命令是有一定限制的,就是这个用户必须存在于/etc/sudoers.conf中。只有在/etc/sudoers配置文件中配置了该用户,他才有权限使用sudo命令,才能像其他用户一样使用sudo进行某些操作。当然,作为普通用户,是没有权限编辑/etc/sudoers配置文件的。该操作必须使用root用户登录系统,将用户添加到/etc/sudoers配置文件中。这种限制在一定程度上避免了安全风险。毕竟所有可以使用sudo命令的人都是root用户授权的。以root用户登录系统后,执行以下命令即可进入/etc/sudoers配置文件的编辑页面:vi/etc/sudoers或visudo以上两条命令,推荐使用visudo,因为这个方法有自动语法检查功能。执行命令的页面如下:然后在配置文件中添加一条新的配置信息:user1ALL=(ALL)ALL##复制上一行内容如下:然后保存退出。此时再次执行上述命令修改user2的密码,结果如下:也就是说此时使用sudo命令,普通用户user1可以完成其他用户的密码修改普通用户user2具有root用户操作权限。通过观察,发现每次执行sudo命令都需要输入当前登录用户的密码,显得有点烦人,请问有没有办法避免呢?解决方法是使用root用户修改刚才的配置,在user1的最后一条ALL的记录前添加一个参数:NOPASSWD,修改后的记录为:user1ALL=(ALL)NOPASSWD:ALL如图下图:保存退出后,再次重复之前的操作,发现这次不用再输入密码:至此,越权操作的方法介绍完毕,希望它对每个人都有帮助。