苏州北大青鸟|电脑人才培训中心『官方网站』

高中生毕业了做什么?高中生学什么好 苏州北大青鸟、苏州北大青鸟学费、苏州北大青鸟地址
ACCP7.0培训-入手最快 JAVA培训—收入最高 .NET培训—就业面最宽 网络营销培训—需求量最大
高中毕业学什么好 大学生找不到工作怎么办 学什么技术有前途(好转行) 初中(中专)毕业学什么好
当前位置: 主页 > 青鸟百科 >

如何用linux—VIM将文件的owner从root替换成普通

时间:2013-01-31 14:59来源:苏州北大青鸟 作者:苏州北大青鸟 点击:
  首先使用user用户新建一个目录,然后在新建目录下,sudo touch一个文件tempfile,则tempfile属于root并且具有644权限。
  接下来使用vim编辑tempfile,写点东西进去,保存之后,在用ls -li来查看信息,发现该文件已经属于user了,虽然还是保持了644权限,而且inode也保持不变。
  一开始回答者给出了一个vim的操作机制,vim在操作文件时,会先将tempfile拷贝到swap文件.tempfile.swp,然后所有的操作都在.tempfile.swp上进行,当user保存文件时,vim首先尝试将.tempfile.swp的内容写回tempfile,因为权限错误,vim重试,将tempfile删除,并将.tempfile.swp重命名为tempfile。
  但是用ls -li查看到的tempfile的inode并未改变,所以这种解释不成立。
  通过strace观察vim调用的system call,发现该现象和swap文件并没有关系,实际上是先删除文件,又新建了一次。
9267 open("tempfile", O_WRONLY|O_CREAT|O_TRUNC, 0644) = -1 EACCES (Permission denied)   //存盘时发现无权限
9267 lstat64("tempfile", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
9267 getuid32() = 1001
9267 unlink("tempfile") = 0      //user创建的vim目录,所以即使没有对文件的写权限也可以从该目录中将文件删除(可以写目录文件)。
9267 open("tempfile", O_WRONLY|O_CREAT|O_TRUNC, 0644) = 4  //因为带有O_CREAT,此时vim会新建tempfile文件,并在后续将我想要的内容写入该文件。
9267 write(4, "henghenghaha\n", 13) = 13
9267 fsync(4) = 0
9267 close(4) = 0
9267 chmod("tempfile", 0644)
  使用的命令序列:
zbie@ubuntu:~$ mkdir vim
zbie@ubuntu:~$ cd vim
zbie@ubuntu:~/vim$ ls
zbie@ubuntu:~/vim$ sudo touch tempfile
[sudo] password for zbie:
zbie@ubuntu:~/vim$ ls -lrti
total 0
1488045 -rw-r--r-- 1 root root 0 2012-12-27 03:14 tempfile
zbie@ubuntu:~/vim$ strace -f -o vim.strace vim tempfile
zbie@ubuntu:~/vim$ ls -lrti
total 96
1488049 -rw-r--r-- 1 zbie zbie 87727 2012-12-27 03:15 vim.strace
1488045 -rw-r--r-- 1 zbie zbie 13 2012-12-27 03:15 tempfile
1. The swap file     *swap-file*
Vim stores the things you changed in a swap file.  Using the original file
you started from plus the swap file you can mostly recover your work.
The swap file is updated after typing 200 characters or when you have not
typed anything for four seconds.  This only happens if the buffer was
changed, not when you only moved around. 
  看起来swap只是保存了delta变化,vim错误恢复的时候,可以根据源文件和swap合并生成最新的文件。
 
zbie@ubuntu:~/vim$ vi a
zbie@ubuntu:~/vim$ xxd a
0000000: 6161 6161 6161 6161 610a aaaaaaaaa.
zbie@ubuntu:~/vim$ ls -lrta
-rw-r--r-- 1 zbie zbie 10 2012-12-27 03:46 a
  新开一个terminal,使用vi编辑,输入bbbbbb,然后等待5s,将terminal强制关闭。
zbie@ubuntu:~/vim$ ls -lrta
-rw-r--r-- 1 zbie zbie 10 2012-12-27 03:46 a
-rw-r--r-- 1 zbie zbie 12288 2012-12-27 03:46 .a.swp
zbie@ubuntu:~/vim$ xxd .a.swp |less
0000000: 6230 5649 4d20 372e 3200 0000 0010 0000 b0VIM 7.2.......
0000010: d10a dc50 d5b4 1600 f624 0000 7a62 6965 ...P.....$..zbie
0000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000040: 0000 0000 7562 756e 7475 0000 0000 0000 ....ubuntu......
0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000060: 0000 0000 0000 0000 0000 0000 7e7a 6269 ............~zbi
0000070: 652f 7669 6d2f 6100 0000 0000 0000 0000 e/vim/a.........
0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
..............
00003e0: 0000 0000 0000 0000 0075 7466 2d38 0d55 .........utf-8.U
00003f0: 3332 3130 2322 2120 1312 5500 0000 0000 3210#"! ..U.....
...............
0002fe0: 0000 0000 0000 0000 0000 0000 6262 6262 ............bbbb
0002ff0: 6262 6262 6200 6161 6161 6161 6161 6100 bbbbb.aaaaaaaaa.

  根据ls和xxd的结果,显然swap不是源文件的副本,只是代表了文件的变动。



 
  学校简介:
  北大青鸟是北京大学直属的计算机培训学校,是目前全国IT职业教育第一品牌及全国最大的IT教育产品研发中心,多年来一直被多家媒体评选为全国十佳教育品牌。
  北大青鸟苏州养育巷校区是北大青鸟总部指定的华东校区、专业的软件技术实训基地。办学18年来,一直致力于苏州电脑培训教学始终紧跟市场发展,并追随市场动态,课程中新加入国际最主流的计算机技术,以及上千多个企业真实案例,学员通过这里短期的培训学习都能获得相当于二年的真实工作经验。目前该校区采用北大青鸟最新软件工程师accp6.0课程,其内容由易到难、循序渐进,即使零基础的学员都能学会。北大青鸟课程有:苏州java培训苏州.net培训苏州网络营销培训等,被誉为华东IT人才的摇篮。现应企业需求,正启动IT人才培养工程,针对目前高中生、大学生的就业问题,提供多种课程内容、多种班型选择,为学员提供广阔就业平台,负责推荐就业,落实就业难的问题。有效帮助高中生、大学生短时间内找到自己理想的工作。
  苏州北大青鸟养育巷校区,网站:http://www.0512-accp.com/。电话:0512-65224689。校区地址:苏州市沧浪区养育巷49号二楼。(苏州北大青鸟)




标签:

(原文标题:如何用linux—VIM将文件的owner从root替换成普通

(责任编辑:苏州北大青鸟



相关新闻

  • 天行健,君子以自强不息!
  • 学习总结:Scrum学习总结
  • URL规范,你知道哪些?
  • 北大青鸟(苏州电脑人才)学习感言:
    更多
    分享按钮
    ------分隔线----------------------------
    招生专题