边边角角的知识点

Apr 15, 2016


1. setuid权限

今天调了一下Iterm2中ls的配色,发现在\bin目录下有如图的显示效果:

setuid

ps和rcp的执行文件颜色和其它不同,从ls -lha的结果来看它们两个与其它文件并没有什么不同,于是我再用file命令查看文件:

setuid_2

此时发现ps和rcp的前面多了个setuid的参数,该参数是Linux的三个特殊权限之一,其作用是让执行该命令的用户拥有所有者的权限。除了setuid外还有setgidstick bit

2. 执行权限

execute

如上图所示,作为execute.sh的owner,我拥有rw读写权限,但如果想通过./execute.sh直接执行,却被告知权限不够,而用sh execute.sh却能够执行。后者实际上是将脚本交由/bin/sh执行,仅仅需要读权限即可。那么如果我只有execute.shx执行权限,是否能够直接执行了?

execute_x

如图所示,仅仅拥有执行权限或仅拥有读权限,都不能直接执行execute.sh,只有当两种权限同时具备时才可。我的理解是,执行权限控制文件是否可直接执行,而由于该文件亦需要\bin\sh程序去读取并解释执行,所以同时亦需要读权限。

3. 标准输出与错误输出

在Shell脚本中有时能看到 >/dev/null 2>&1这样的语句,在语句中>/dev/null等同于1>/dev/null,其中1表示stdout标准输出,而/dev/null表示空设备文件。默认的标准输出和标准错误输出都是打印在屏幕上,1>/dev/null则表示不输出任何信息到终端,也不定向到系统文件中。而2表示标准错误输出,而&表示等同于的意思,2>&1则表示为标准错误输出的重定向等同于标准输出,整条语句的意思实际傻姑娘就是不输出任何内容。

4. 重定向

在使用>重定向时,会先判断右边文件是否存在,存在则先删除,不存在则创建。因此,cat test > test这样的操作,结果永远为空。

5. Java方法签名

方法签名:返回值内行+方法名+参数列表,参数列表受到参数的顺序,类型,数量的影响,public void test(int a,long b)public void test(long a,int b)签名不同。

flash cookie用于记录用户在浏览flash网页时保留信息,它比http cookie的容量更大,没有默认过期时间且难以删除。flash cookie容易被用来窃取普通用户的信息,且难以预防,这点需要注意。

ps:第三方如何盗取用户cookies? 可以通过在广告位中植入代码,获取原网站给用户种下的cookies

7. su -与su的区别

su - USERNAME切换用户后,工作环境同时也切换
su USERNAME 切换后不改变原用户的工作目录和环境变量目录


上一篇博客:算法导论学习
下一篇博客:Mac高效开发小技能