q1208c 回复于:2004-01-06 12:12:20 |
1. 权限问题好办,用set UID就行了。 2. 这可能有一点麻烦。你看一下 man passwd 可能有帮助。 另外,如果从网页上改password,你最好老虎好安全问题。别叫人给黑了。 |
julia0928 回复于:2004-01-07 09:16:34 |
谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。 |
零二年的夏天 回复于:2004-01-07 09:45:02 |
这样可以么? [code:1:1c7880b7de]--stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.[/code:1:1c7880b7de] |
q1208c 回复于:2004-01-07 10:06:27 |
[quote:78f9820c21="julia0928"]谢谢q1208c ,我看了精华区的一篇文章,说用纯shell 无法解决passwd的非交互输入问题,可以用expect,我不熟,正在试。[/quote:78f9820c21] shell 是可以的。 等下我找找帖上来。 |
q1208c 回复于:2004-01-07 10:11:51 |
[code:1:96da8f1470] #!/bin/bash # # set the user name and password # username = user password = password # add new user # useradd $username # #give the password for the new user # cat $password | passwd --stdin $username # end of script. ##[/code:1:96da8f1470] 试一下先。 |
零二年的夏天 回复于:2004-01-07 11:46:54 |
这样是可以添加用户密码的。 |
tiansgx 回复于:2004-01-07 12:59:42 |
expect is good! |
q1208c 回复于:2004-01-07 13:01:18 |
谢谢! |
流氓无产者 回复于:2004-01-07 15:06:32 |
建议你别这样做,最好检验一道 先过滤一道user,排出特殊用户 然后再用expect改 |
myfisher 回复于:2004-01-07 18:40:33 |
to q1208c, 我每次启动MySQL的时候都要切换目录,启动MySQL,输密码什么的,麻烦死了,也可以用脚本编程的方法来解决吗? |
q1208c 回复于:2004-01-07 19:23:13 |
[quote:3896d7e155="myfisher"]to q1208c, 我每次启动MySQL的时候都要切换目录,启动MySQL,输密码什么的,麻烦死了,也可以用脚本编程的方法来解决吗?[/quote:3896d7e155] 也许行吧,我没用过 MySQL 不知道行不行。可以试试。 你把过程写下来,我看看有没有办法。 |
myfisher 回复于:2004-01-07 19:30:12 |
先要切换目录 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:13 |
就算能行也不能那么做呀!因为不能把 root 密码写下来的。这是安全问题呀!还有,这是个交互式的呀,不太好办。 |
myfisher 回复于:2004-01-07 19:41:40 |
谢谢指教。 |
lightwiter 回复于:2004-01-07 19:54:28 |
mysql -uroot -ppasswd 就可以了呀。反正你不用考虑安全问题的。 |
lightwiter 回复于:2004-01-07 20:06:40 |
[quote:8e5a8cf5d6="tiansgx"]expect is good![/quote:8e5a8cf5d6] 这个怎么弄呀,导出一个什么变量名呀,passwd加什么参数?? |
julia0928 回复于:2004-01-08 09:43:02 |
[quote:be11d7e795="q1208c"]试一下先。[/quote:be11d7e795] :em02: 先谢谢各位指点,按上面的做了一下,要改一点点,就是 echo $password>/tmp/1.tmp cat /tmp/1.tmplpasswd --stdin $username 否则要报错。 再次多谢。 |
零二年的夏天 回复于:2004-01-08 09:48:41 |
[code:1:d8f13clearcase/" target="_blank" >cc751]echo $password|passwd --stdin $username[/code:1:d8f13cc751] 是否会没问题。 |
julia0928 回复于:2004-01-09 11:01:39 |
各位大虾,现在非交互输入已没有问题了,但权限上仍有问题。用setUid试了一下,没过,passwd要求root或本人,我用su,但到了root的shell后,我的cgi程序就停止运行了,要exit后才又运行。 另外,在用户改口令前,要对其原有口令进行验证,这个在纯shell下能不能做呀? |
q1208c 回复于:2004-01-09 11:08:18 |
[quote:96a1cf0642="julia0928"]另外,在用户改口令前,要对其原有口令进行验证,这个在纯shell下能不能做呀?[/quote:96a1cf0642] 这个可能会有点问题,因为 password 是加密后存的。 可以试试用旧 password su - username 下。 |
julia0928 回复于:2004-01-09 12:48:41 |
试过了,用su 可以交互地运行,但在网页上,非交互方式不行,而且shell环境一变,脚本运行就停了。 |
q1208c 回复于:2004-01-09 13:02:09 |
那就不知了。:( |
零二年的夏天 回复于:2004-01-09 13:09:14 |
不知道这篇贴对您的工作是否有启发: http://bbs.chinaunix.net/forum/viewtopic.php?t=229232 |
julia0928 回复于:2004-01-13 10:03:39 |
各位,经过大家的指导,用sudo解决了用户验证和权限问题。 又用GNU C以及SHELL脚本做了另一套,多谢各位了! |