非root用户,可以改别人密码吗?

时间:2021-07-07 09:33:23
普通用户,加入root组可以改吗?
还有其他途径可改吗

19 个解决方案

#1


sudo ?

#2


除非你用sudo  否则应该是不行的
passwd命令 属主是root 是设置了suid位的 你可以ls -l `which passwd`查看一下  也就是普通用户用passswd命令更改自己的秘密的时候 其实也是root权限执行的 但却只能更改自己密码 
因此 在passwd的源码里肯定设置了判断当前用户是谁 如果非root 那么就只能修改自己的密码

因为没研究过passwd命令的源码 上面是个人猜测 仅供参考

另外把普通用户加入root组 是不推荐的做法  与其这样做你不如给他root权限  

#3


没试过,不过估计是行不通的!

#4


应该不行吧,这都行的话linux的权限管理不成摆设了啊

#5


直接改不行 

#6


肯定不行,那你把root改了,不就可以登root了,
普通用户应该没有权限写,甚至读passwd文件,所以要用passwd程序实现。

#7


用root把passwd文件权限改了就可以
或者把别的用户怕uid改成0,那就等同于root权限了,也就可以改了

#8


恩,加入root组应该实现不了改密码的

#9


用root权限修改吧,sudo权限也不能修改他人密码。

#10


passwd这个文件有特殊权限。

#11


有些操作系统支持角色,更细粒度的权限控制,可以指定一个用户或角色可以运行哪些命令,所以对于修改用户口令这一权力,不一定非得是root。Solaris, AIX较新版本都支持,别的不清楚。

#12


用光盘启动进入LIVECD系统可以进行修改

#13


实现不了。除非使用rescue模式或单用户模式。

#14


不行,sudo也是要root的权限。

#15


引用 2 楼 steptodream 的回复:
除非你用sudo  否则应该是不行的
passwd命令 属主是root 是设置了suid位的 你可以ls -l `which passwd`查看一下  也就是普通用户用passswd命令更改自己的秘密的时候 其实也是root权限执行的 但却只能更改自己密码 
因此 在passwd的源码里肯定设置了判断当前用户是谁 如果非root 那么就只能修改自己的密码

因为没研究过passwd命令的……

根据我的知识是可以改的,将uid和gid都改成0就可以了吧!!

#16


引用 2 楼 steptodream 的回复:
除非你用sudo 否则应该是不行的
……


使用Sudo方法是可以解决这个问题的,下面是我的测试:
1.建立测试用户testAcct1和testAcct2(使用testAcct1设置testAcct2的密码)

useradd testAcct1
useradd testAcct2

2.编辑/etc/sudoers文件,允许用户testAcct1执行/usr/bin/passwd
使用visudo -f /etc/sudoers编辑文件(就像使用Vi一样),在文件# User privilege specification下方添加一行:

testAcct1       listenerhost=           /usr/bin/passwd

其中listenerhost是我测试的主机名,可能会随测试环境改变而改变。保存退出。
3.使用testAcct1登陆
su - testAcct1
4.testAcct1使用sudo来修改testAcct2的密码
以上的步骤都是为sudo命令作准备的,这一步是关键:

sudo /usr/bin/passwd testAcct2

这一步会要求你首先输入testAcct1的密码,输入验证成功后,会提示你再输入testAcct2的密码(也就是我们要改的密码)下面是我的测试:

[testAcct1@listenerhost ~]$ sudo /usr/bin/passwd testAcct2

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:

        #1) Respect the privacy of others.
        #2) Think before you type.

Password:
Changing password for user testAcct2.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


5.使用testAcct2登陆测试
su - testAcct2输入4中修改后的密码,成功登陆,其实我们修改密码已经成功。但是,我们还是验证看看:

[testAcct2@listenerhost ~]$ id
uid=503(testAcct2) gid=505(testAcct2) groups=505(testAcct2) context=user_u:system_r:unconfined_t

6.删除测试帐户testAcct1和testAcct2
userdel testAcct1
userdel testAcct2

#17


不可以,

#18


该回复于2010-10-21 14:47:31被版主删除

#19


sudo 就是root命令。用root给你修改的权限

#1


sudo ?

#2


除非你用sudo  否则应该是不行的
passwd命令 属主是root 是设置了suid位的 你可以ls -l `which passwd`查看一下  也就是普通用户用passswd命令更改自己的秘密的时候 其实也是root权限执行的 但却只能更改自己密码 
因此 在passwd的源码里肯定设置了判断当前用户是谁 如果非root 那么就只能修改自己的密码

因为没研究过passwd命令的源码 上面是个人猜测 仅供参考

另外把普通用户加入root组 是不推荐的做法  与其这样做你不如给他root权限  

#3


没试过,不过估计是行不通的!

#4


应该不行吧,这都行的话linux的权限管理不成摆设了啊

#5


直接改不行 

#6


肯定不行,那你把root改了,不就可以登root了,
普通用户应该没有权限写,甚至读passwd文件,所以要用passwd程序实现。

#7


用root把passwd文件权限改了就可以
或者把别的用户怕uid改成0,那就等同于root权限了,也就可以改了

#8


恩,加入root组应该实现不了改密码的

#9


用root权限修改吧,sudo权限也不能修改他人密码。

#10


passwd这个文件有特殊权限。

#11


有些操作系统支持角色,更细粒度的权限控制,可以指定一个用户或角色可以运行哪些命令,所以对于修改用户口令这一权力,不一定非得是root。Solaris, AIX较新版本都支持,别的不清楚。

#12


用光盘启动进入LIVECD系统可以进行修改

#13


实现不了。除非使用rescue模式或单用户模式。

#14


不行,sudo也是要root的权限。

#15


引用 2 楼 steptodream 的回复:
除非你用sudo  否则应该是不行的
passwd命令 属主是root 是设置了suid位的 你可以ls -l `which passwd`查看一下  也就是普通用户用passswd命令更改自己的秘密的时候 其实也是root权限执行的 但却只能更改自己密码 
因此 在passwd的源码里肯定设置了判断当前用户是谁 如果非root 那么就只能修改自己的密码

因为没研究过passwd命令的……

根据我的知识是可以改的,将uid和gid都改成0就可以了吧!!

#16


引用 2 楼 steptodream 的回复:
除非你用sudo 否则应该是不行的
……


使用Sudo方法是可以解决这个问题的,下面是我的测试:
1.建立测试用户testAcct1和testAcct2(使用testAcct1设置testAcct2的密码)

useradd testAcct1
useradd testAcct2

2.编辑/etc/sudoers文件,允许用户testAcct1执行/usr/bin/passwd
使用visudo -f /etc/sudoers编辑文件(就像使用Vi一样),在文件# User privilege specification下方添加一行:

testAcct1       listenerhost=           /usr/bin/passwd

其中listenerhost是我测试的主机名,可能会随测试环境改变而改变。保存退出。
3.使用testAcct1登陆
su - testAcct1
4.testAcct1使用sudo来修改testAcct2的密码
以上的步骤都是为sudo命令作准备的,这一步是关键:

sudo /usr/bin/passwd testAcct2

这一步会要求你首先输入testAcct1的密码,输入验证成功后,会提示你再输入testAcct2的密码(也就是我们要改的密码)下面是我的测试:

[testAcct1@listenerhost ~]$ sudo /usr/bin/passwd testAcct2

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:

        #1) Respect the privacy of others.
        #2) Think before you type.

Password:
Changing password for user testAcct2.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


5.使用testAcct2登陆测试
su - testAcct2输入4中修改后的密码,成功登陆,其实我们修改密码已经成功。但是,我们还是验证看看:

[testAcct2@listenerhost ~]$ id
uid=503(testAcct2) gid=505(testAcct2) groups=505(testAcct2) context=user_u:system_r:unconfined_t

6.删除测试帐户testAcct1和testAcct2
userdel testAcct1
userdel testAcct2

#17


不可以,

#18


该回复于2010-10-21 14:47:31被版主删除

#19


sudo 就是root命令。用root给你修改的权限

#20