当前位置: 技术问答>linux和unix
如何实现chmod命令
来源: 互联网 发布时间:2017-05-27
本文导语: 1. 在学习unix/linux编程实践教程的时候,有个课后习题是:实现chmod命令 2. 但是我想了很久,我只是知道用stat来得到文件的属性。但是如何修改文件的属性却不知道。 3. chmod确实可以修改文件的属性:chmod 777 文件...
1. 在学习unix/linux编程实践教程的时候,有个课后习题是:实现chmod命令
2. 但是我想了很久,我只是知道用stat来得到文件的属性。但是如何修改文件的属性却不知道。
3. chmod确实可以修改文件的属性:chmod 777 文件名
但是,代码层面上面是如何实现的呢?
我曾经想到过一种非常笨的方法是:open一个新的文件,然后设定文件属性为777,再把原来的文件数据copy过来,然后在删除原来的文件,再修改新的文件名为原来文件名即可。但是这种方法明显是太复杂了。
如何实现chmod命令呢?
PS:看了源代码,结果没看懂。。。。
2. 但是我想了很久,我只是知道用stat来得到文件的属性。但是如何修改文件的属性却不知道。
3. chmod确实可以修改文件的属性:chmod 777 文件名
但是,代码层面上面是如何实现的呢?
我曾经想到过一种非常笨的方法是:open一个新的文件,然后设定文件属性为777,再把原来的文件数据copy过来,然后在删除原来的文件,再修改新的文件名为原来文件名即可。但是这种方法明显是太复杂了。
如何实现chmod命令呢?
PS:看了源代码,结果没看懂。。。。
|
if you couldn't understand the source for chmod here:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c
then I guess you will have to take a look on the implementation of linux file system, ext2 at least, and figure out the way to modify file system metadata directly, which is the place for storing permission bits...
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c
then I guess you will have to take a look on the implementation of linux file system, ext2 at least, and figure out the way to modify file system metadata directly, which is the place for storing permission bits...