Chinaunix

标题: 请教shell编程问题...急 [打印本页]

作者: julia0928    时间: 2004-01-06 12:02
标题: 请教shell编程问题...急

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

二、修改口令时,要求输入新旧口令,如何将从网页的表单中采集到的数据,代替输入和回车?如何代替标准输入(/dev/stdin),我用重定向的办法试了半天,无功而返,请大虾们指教......
作者: q1208c    时间: 2004-01-06 12:12
标题: 请教shell编程问题...急
1. 权限问题好办,用set UID就行了。
2. 这可能有一点麻烦。你看一下 man passwd 可能有帮助。

另外,如果从网页上改password,你最好老虎好安全问题。别叫人给黑了。
作者: julia0928    时间: 2004-01-07 09:16
标题: 请教shell编程问题...急
谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。
作者: 零二年的夏天    时间: 2004-01-07 09:45
标题: 请教shell编程问题...急
这样可以么?
  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.
复制代码

作者: q1208c    时间: 2004-01-07 10:06
标题: 请教shell编程问题...急
[quote]原帖由 "julia0928"]谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。[/quote 发表:

shell 是可以的。
等下我找找帖上来。
作者: q1208c    时间: 2004-01-07 10:11
标题: 请教shell编程问题...急

  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. ##
复制代码

试一下先。
作者: 零二年的夏天    时间: 2004-01-07 11:46
标题: 请教shell编程问题...急
这样是可以添加用户密码的。
作者: tiansgx    时间: 2004-01-07 12:59
标题: 请教shell编程问题...急
expect is good!
作者: q1208c    时间: 2004-01-07 13:01
标题: 请教shell编程问题...急
谢谢!
作者: 流氓无产者    时间: 2004-01-07 15:06
标题: 请教shell编程问题...急
建议你别这样做,最好检验一道
先过滤一道user,排出特殊用户
然后再用expect改
作者: myfisher    时间: 2004-01-07 18:40
标题: 请教shell编程问题...急
to q1208c,
我每次启动MySQL的时候都要切换目录,启动MySQL,输密码什么的,麻烦死了,也可以用脚本编程的方法来解决吗?
作者: q1208c    时间: 2004-01-07 19:23
标题: 请教shell编程问题...急
原帖由 "myfisher" 发表:
to q1208c,
我每次启动MySQL的时候都要切换目录,启动MySQL,输密码什么的,麻烦死了,也可以用脚本编程的方法来解决吗?

也许行吧,我没用过 MySQL 不知道行不行。可以试试。

你把过程写下来,我看看有没有办法。
作者: myfisher    时间: 2004-01-07 19:30
标题: 请教shell编程问题...急
先要切换目录
shell>;cd /usr/local/mysql/bin
shell>;./mysqld_safe --user=root &
shell>;./mysql -u root -p name_database
Enter Password:****

退出的时候
mysql>;exit;
shell>;./mysqladmin -u root shutdown -p
Enter password:****

问题就在于登陆和退出都要输密码,不知道shell编程能否完成。
请q1208c帮忙看看。我shell编程知道个大概,不熟。
作者: q1208c    时间: 2004-01-07 19:37
标题: 请教shell编程问题...急
就算能行也不能那么做呀!因为不能把 root 密码写下来的。这是安全问题呀!还有,这是个交互式的呀,不太好办。
作者: myfisher    时间: 2004-01-07 19:41
标题: 请教shell编程问题...急
谢谢指教。
作者: lightwiter    时间: 2004-01-07 19:54
标题: 请教shell编程问题...急
mysql -uroot -ppasswd


就可以了呀。反正你不用考虑安全问题的。
作者: lightwiter    时间: 2004-01-07 20:06
标题: 请教shell编程问题...急
[quote]原帖由 "tiansgx"]expect is good![/quote 发表:



这个怎么弄呀,导出一个什么变量名呀,passwd加什么参数??
作者: julia0928    时间: 2004-01-08 09:43
标题: 请教shell编程问题...急
[quote]原帖由 "q1208c"]试一下先。[/quote 发表:


先谢谢各位指点,按上面的做了一下,要改一点点,就是
echo $password>;/tmp/1.tmp
cat /tmp/1.tmplpasswd --stdin $username
否则要报错。
再次多谢。
作者: 零二年的夏天    时间: 2004-01-08 09:48
标题: 请教shell编程问题...急
  1. echo $password|passwd --stdin $username
复制代码

是否会没问题。
作者: julia0928    时间: 2004-01-09 11:01
标题: 请教shell编程问题...急
各位大虾,现在非交互输入已没有问题了,但权限上仍有问题。用setUid试了一下,没过,passwd要求root或本人,我用su,但到了root的shell后,我的cgi程序就停止运行了,要exit后才又运行。
另外,在用户改口令前,要对其原有口令进行验证,这个在纯shell下能不能做呀?
作者: q1208c    时间: 2004-01-09 11:08
标题: 请教shell编程问题...急
[quote]原帖由 "julia0928"]另外,在用户改口令前,要对其原有口令进行验证,这个在纯shell下能不能做呀?[/quote 发表:

这个可能会有点问题,因为 password 是加密后存的。
可以试试用旧 password su - username 下。
作者: julia0928    时间: 2004-01-09 12:48
标题: 请教shell编程问题...急
试过了,用su 可以交互地运行,但在网页上,非交互方式不行,而且shell环境一变,脚本运行就停了。
作者: q1208c    时间: 2004-01-09 13:02
标题: 请教shell编程问题...急
那就不知了。
作者: 零二年的夏天    时间: 2004-01-09 13:09
标题: 请教shell编程问题...急
不知道这篇贴对您的工作是否有启发:

http://bbs.chinaunix.net/forum/viewtopic.php?t=229232
作者: julia0928    时间: 2004-01-13 10:03
标题: 请教shell编程问题...急
各位,经过大家的指导,用sudo解决了用户验证和权限问题。

又用GNU C以及SHELL脚本做了另一套,多谢各位了!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2