当前位置:首页 > 行业动态 > 正文

su: cannot set groups: operation not permitted

su命令简介

su(switch user)命令是Linux系统中用于切换用户的命令,它允许用户在不退出当前会话的情况下,切换到其他用户,su命令的一般格式为:su [选项] [用户名],[选项]可以是-c或-d,分别表示执行指定的shell脚本或直接登录用户;[用户名]是要切换到的用户的用户名。

解决su命令cannot set groups: Operation not permitted的问题

这个问题通常是由于当前用户没有权限修改其他用户的组而引起的,要解决这个问题,可以尝试以下方法:

1、使用root用户登录

由于su命令需要root权限才能修改其他用户的组,所以首先需要以root用户身份登录,在终端输入以下命令:

sudo su 

然后输入root用户的密码,按回车键登录。

2、修改/etc/pam.d/su文件

打开/etc/pam.d/su文件,找到以下行:

%wheel ALL=(ALL) ALL 

将该行注释掉,即在行首加上号:

%wheel ALL=(ALL) ALL 

保存并关闭文件,这样就允许了普通用户使用su命令切换到其他用户,如果需要恢复原来的设置,只需删除注释即可。

3、使用setgroups命令设置组ID

在终端输入以下命令:

sudo su -c "setgroups $(id -gn)" 用户名 

将“用户名”替换为要切换到的用户的用户名,这个命令会将当前用户的组ID设置为目标用户的组ID,从而实现切换用户的目的,需要注意的是,这个命令只能在已经修改了/etc/pam.d/su文件的情况下使用。

相关问题与解答

1、su和sudo有什么区别?

答:su命令是以root用户身份登录,而sudo命令是以其他用户的身份执行指定的命令,sudo命令需要知道目标用户的密码才能执行,而su命令则不需要,sudo命令还可以设置环境变量、限制输出等。

2、如何查看当前用户的组ID?

答:在终端输入以下命令:

id -gn 

这个命令会显示当前用户的组ID,如果需要查看其他用户的组ID,可以将“当前用户”替换为“其他用户”。

0