请教shell编程问题...急

发布于 2022-10-01 15:30:48 字数 357 浏览 15 评论 0


我现在需要写一个在网页上修改用户口令的脚本,当用户在网页上输入自己的用户名及新旧口令后,
一、我不清楚权限的转换怎样解决。因为从网页上,用户的身份是Apache,而在shell环境下,只有超级用户和用户本人才可以修改口令,如何解决?

二、修改口令时,要求输入新旧口令,如何将从网页的表单中采集到的数据,代替输入和回车?如何代替标准输入(/dev/stdin),我用重定向的办法试了半天,无功而返,请大虾们指教......

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

纸伞微斜 2022-10-08 15:30:48

1. 权限问题好办,用set UID就行了。
2. 这可能有一点麻烦。你看一下 man passwd 可能有帮助。

另外,如果从网页上改password,你最好老虎好安全问题。别叫人给黑了。

月亮是我掰弯的 2022-10-08 15:30:48

谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。

泪眸﹌ 2022-10-08 15:30:48

这样可以么?

  1. --stdin
  2.               This option is used to indicate that passwd  should
  3.               read  the  new  password from standard input, which
  4.               can be a pipe.

复制代码

病女 2022-10-08 15:30:48

[quote]原帖由 "julia0928"]谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。[/quote 发表:

shell 是可以的。
等下我找找帖上来。

梦旅人picnic 2022-10-08 15:30:48
  1. #!/bin/bash
  2. #
  3. # set the user name and password
  4. #
  5. username = user
  6. password = password
  7. # add new user
  8. #
  9. useradd $username
  10. #
  11. #give the password for the new user
  12. #
  13. cat $password | passwd --stdin $username
  14. # end of script. ##

复制代码
试一下先。

关于从前 2022-10-08 15:30:48

这样是可以添加用户密码的。

夢归不見 2022-10-08 15:30:48

expect is good!

山色无中 2022-10-08 15:30:48

谢谢!

友欢 2022-10-08 15:30:48

建议你别这样做,最好检验一道
先过滤一道user,排出特殊用户
然后再用expect改

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文