su 发帖数: 149 | 1 一个login shell的environment variables可以在诸如
".login"或".cshrc"的scripts中设置。
CGI scripts通常是以nobody的身份运行的,
他们的environment variables应该在哪里设置呢?
比如说,怎样才能为所有的CGI scripts预先
设置好"Path"呢? | l*l 发帖数: 225 | 2 nobody is a user of your system, so it is the same as
other users when you set env.
example, when you use uncgi, you can export PATH=$PATH:/somepth
【在 su 的大作中提到】 : 一个login shell的environment variables可以在诸如 : ".login"或".cshrc"的scripts中设置。 : CGI scripts通常是以nobody的身份运行的, : 他们的environment variables应该在哪里设置呢? : 比如说,怎样才能为所有的CGI scripts预先 : 设置好"Path"呢?
| su 发帖数: 149 | 3 But Where should I put this?
Since the execution of a CGI script is not in a
login shell, no login scipts are executed in advance.
【在 l*l 的大作中提到】 : nobody is a user of your system, so it is the same as : other users when you set env. : example, when you use uncgi, you can export PATH=$PATH:/somepth
| l*l 发帖数: 225 | 4 任何的程序都是在一定的环境下运行的, 因此如果你要设置环境
变量, 在相应的CGI程序里设置. 我举的例子是利用UNCGI, 一种
UNIX SHELL CGI,可以这么设置, 同样道理, 用C++写的CGI也
可以采用相应的方法.
不过你说的要设置一个通用的的环境变量, 由余NOBODY没有SHELL因此
比较困难, 你可以尝试更改或者自己写一个受限的SHELL给NOBODY用, 这个
SHELL的环境设置以后就永远起作用. 不管你写什么样的CGI,但是无疑
会大大降低系统的安全性.
下面是我的一个简短的SHELL CGI的开头, 和通常的SHELL一样:
http://people.physics.tamu.edu/llu/ 远程字典和在线画图)
#!/bin/sh
PATH="/bin:/usr/bin:/usr/local/bin:/home/people/llu/bin:."
export PATH
HOME=/www/people/llu/cgi-bin/tmp
export HOME
cd $HOME
rm -rf temp.*
LOGfile=$HOME/log
e
【在 su 的大作中提到】 : But Where should I put this? : Since the execution of a CGI script is not in a : login shell, no login scipts are executed in advance.
| su 发帖数: 149 | 5 我们可以写一个简单的CGI script来看一看已被设好的环境变量。
(apache带的"printenv"和"test-cgi"均可以做到)
可以看出"PATH"是被assigned过的。
问题是:他是在哪儿被assigned的?
莫不是在install apache的时候就已经设置好了?
【在 l*l 的大作中提到】 : 任何的程序都是在一定的环境下运行的, 因此如果你要设置环境 : 变量, 在相应的CGI程序里设置. 我举的例子是利用UNCGI, 一种 : UNIX SHELL CGI,可以这么设置, 同样道理, 用C++写的CGI也 : 可以采用相应的方法. : 不过你说的要设置一个通用的的环境变量, 由余NOBODY没有SHELL因此 : 比较困难, 你可以尝试更改或者自己写一个受限的SHELL给NOBODY用, 这个 : SHELL的环境设置以后就永远起作用. 不管你写什么样的CGI,但是无疑 : 会大大降低系统的安全性. : 下面是我的一个简短的SHELL CGI的开头, 和通常的SHELL一样: : http://people.physics.tamu.edu/llu/ 远程字典和在线画图)
| su 发帖数: 149 | 6 好象apache启动时的"PATH"被用在了所有的CGI scripts中,
但其他的environmental variable并没有象"PATH"这样被输出。
不知道可不可以控制被输出到CGI scripts中的env var.
我没有明白你的意思。即使真有这样一个shell,apache又怎么会知
道它的
存在。且一个CGI script并一定要在一个shell中运行,它本身完全
可以是
一个可执行程序。 | v*****r 发帖数: 1119 | 7 是设在 global profile 里 (/etc/profile or /etc/csh.profile) 不行吗?
【在 su 的大作中提到】 : 一个login shell的environment variables可以在诸如 : ".login"或".cshrc"的scripts中设置。 : CGI scripts通常是以nobody的身份运行的, : 他们的environment variables应该在哪里设置呢? : 比如说,怎样才能为所有的CGI scripts预先 : 设置好"Path"呢?
| T**********l 发帖数: 12149 | 8
【在 su 的大作中提到】 : 一个login shell的environment variables可以在诸如 : ".login"或".cshrc"的scripts中设置。 : CGI scripts通常是以nobody的身份运行的, : 他们的environment variables应该在哪里设置呢? : 比如说,怎样才能为所有的CGI scripts预先 : 设置好"Path"呢?
|
|