linux是一个安全的操作系统,它对用户访问权限的控制很好的实现了安全控制。但是,你要是想知道文件的相关属性,你会在shell下使用什么命令来实现呢?
要查看文件的属性,只需在shell下通过命令ls -l<filename>你可以先通过命令ls -l 来查看你目录下所有文件的属性。再通过ls -l<filename>命令来具体到某一个文件 .例如,我用ls -l 来查看我所有文件的属性如下:
我在我的终端下通过输入 ls -l test.c来查看文件test.c的文件属性.
dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ ls -l test.c
-rw-rw-r-- 1 dongmengyuan dongmengyuan 1185 6月 17 21:17 test.c
比如,上面的运行结果从左至右依次是:文件属性 文件数 所有者 拥有该文件的用户所属的组 文件大小 文件创建时间 文件名。
第一项文件属性总共由10位组成,第一位表示文件类型。剩下9 位都表示文件的访问权限,可以按照3个一组分为3组,从左至右,第一组表示文件所有者对该文件的操作权限,第二组表示与文件所有者同组的用户对该文件的操作权限,第三组表示其他用户对该文件的操作权限.由上图,我们可以清楚的知道每组只能出现3种字母,即r,w,x. 其中r 表示可读(read),w表示可写(write),x表示可执行。对于可读,可写,可执行3种权限,他们分别对应一个值。
r=4 w=2 x=1.
4+2+1=7. 所以777表示文件所有者,所属组,其他用户都拥有读,写,可执行3种权限。
然而,有时候由于某些原因,我们必须要修改文件访问权限来提高安全指数,那么在shell下我们应该怎么做呢?
对文件权限的修改在shell下可通过命令chmod来进行。比如
在shell下man 2 chmod 可以查看 chmod/fchmod 的函数原型如下
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
例:我的test.c的访问权限是-rw-rw-r--.即664.
我在shell下通过命令 chmod 777 test.c 将它的权限修改为:所有者,所属组,其他用户都拥有读,写,可执行权限。具体用法大家可以参考man chmod.
dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ chmod 777 test.c
dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ ls -l test.c
-rwxrwxrwx 1 dongmengyuan dongmengyuan 1185 6月 17 21:17 test.c
chmod / fchmod 的区别在于chmod 以文件名作为第一个参数,fchmod以文件描述符作为第一个参数。
权限修改成功返回0,失败返回-1。错误代码会存于系统预定义变量errno中。
所以,为了提高文件的安全指数,大家都试试这几个简单有效的shell命令吧