Leopard下如何让你的sudo不需要输密码

在Snow Leopard的Terminal里面用sudo的时候总是需要输入密码,而在单位的FreeBSD服务器上则不需要。我觉得从安全角度来说这个密码用处不大,有了反而会浪费时间。

搜索了一下,发现要这样做

修改/etc/sudoers文件(记得sudo vi它,存的时候要w!),去掉这一行前面的#号:

%wheel ALL=(ALL) NOPASSWD: ALL

然后执行下面命令,记得将your_username替换为你的用户名:

sudo dscl . append /Groups/wheel GroupMembership your_username

从此就不需要在sudo的时候输入密码了。

前两天被身边的朋友嘲笑我用的bash在按Tab自动完成的时候不能忽略大小写。所以…

前两天被身边的朋友(他用csh)嘲笑我用的bash在按Tab自动完成的时候不能忽略大小写。所以就造成你键入do就不能自动联想到”Downloads”,有的时候你不得不ls一下看看是否有大写的文件夹。Google下发现bash其实是支持忽略大小写的。在Mac下修改~/.inputrc,加入:

set completion-ignore-case On

然后重启一下Terminal,就开始支持大小写通配了。其实这里解释的是我看到的最清晰的:http://www.macosxhints.com/article.php?story=20070831153033300。Bash使用了readline,而readline的配置就在~/.inputrc,里面还有很多配置,有兴趣可以研究一下。注意,上面那个方法在10.5以后的OSX才生效,10.4以前的版本设置方法不同,大家自己Google吧。

解决Mac环境下的Java Version问题

前一段时间遇到了一个奇怪的问题:我的Mac下面的Lotus Notes 8.5和FreeMind 0.9rc4都不能工作了,它们的共同特点就是都基于Java。我试验了在Terminal里面启动/Applications/Notes/Contents/MacOS/Notes的话是可以启动的,但是会启动以前的Basic界面(后来我才知道可能它是个Cabon应用,而不是Java版本)。所以就一直凑合着用。
可是昨天我尝试运行/Applications/Utilities/Java Preference的时候它也无法启动了,我这才觉得这不是个简单问题,必须要彻底解决。

我回忆了一下,我最开始的时候尝试用Java Preference的时候修改了JDK的顺序,将JDK6放在最上方,可是在Terminal里面(java -version)依然只可以访问1.5。所以当时就手动修改了系统的指向:


/System/Library/Frameworks/JavaVM.frameworks/Versions/Current -> /System/Library/Frameworks/JavaVM.frameworks/Versions/1.6
/System/Library/Frameworks/JavaVM.frameworks/Versions/CurrentJDK -> /System/Library/Frameworks/JavaVM.frameworks/Versions/1.6

这样修改以后就工作了,命令行里面执行java -version显示:

java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

但是大家千万不要这样做,这个其实是后面很多问题的一个重要原因。

如果你修改了上面的指向,我推荐你unlink它们,然后下载Java for Mac OSX 10.5 Update 4 (http://www.apple.com/downloads/macosx/apple/application_updates/javaformacosx105update4.html)重新安装一下就可以重新生成这些link了。不过记得要unlink自己手工建立的符号链接(比如我的是Current, CurrentJDK, 1.6),否则升级包无法替换你建立的那些。

但是我这样做了以后还是没有解决所有问题,Java Preference可以正常启动了,不过它设置的顺序依然不管用,java -version总是返回1.5。我突然想到估计是运行我们的Ant脚本曾经提醒过JAVA_HOME的问题,我手动设置过一个,忘记去掉了。所以去查我的.profile,发现了罪魁祸首:

export JAVA_HOME='/Library/Java/Home'

这个设置是错误的,虽然它存在,可是它不会根据Java Preference修改的结果去寻找你的Java的bin和lib,也就造成了后面的一系列错误。

修改为(或者删掉JAVA_HOME声明也是安全的):
export JAVA_HOME='/System/Library/Frameworks/JavaVM.framework/Current/Home'

问题解决,教训是如果你手头有工具,应该学会使用它,如果没有耐心学习就错误的使用工具,一开始感觉能解决问题,可是后来它会造成越来越多的错误。那么决绝方案就是回到原点,恢复,学习,正确的使用工具。