1. setuid权限
今天调了一下Iterm2中ls
的配色,发现在\bin
目录下有如图的显示效果:
ps和rcp的执行文件颜色和其它不同,从ls -lha
的结果来看它们两个与其它文件并没有什么不同,于是我再用file
命令查看文件:
此时发现ps和rcp的前面多了个setuid
的参数,该参数是Linux的三个特殊权限之一,其作用是让执行该命令的用户拥有所有者的权限。除了setuid
外还有setgid
和stick bit
。
2. 执行权限
如上图所示,作为execute.sh的owner,我拥有rw
读写权限,但如果想通过./execute.sh
直接执行,却被告知权限不够,而用sh execute.sh
却能够执行。后者实际上是将脚本交由/bin/sh
执行,仅仅需要读权限即可。那么如果我只有execute.sh
的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)
签名不同。
6. flash cookie
flash cookie用于记录用户在浏览flash网页时保留信息,它比http cookie的容量更大,没有默认过期时间且难以删除。flash cookie容易被用来窃取普通用户的信息,且难以预防,这点需要注意。
ps:第三方如何盗取用户cookies? 可以通过在广告位中植入代码,获取原网站给用户种下的cookies
7. su -与su的区别
su - USERNAME
切换用户后,工作环境同时也切换
su USERNAME
切换后不改变原用户的工作目录和环境变量目录