1. 假设linux系统当前目录下有一个文件myfile,输入命令ls -l myfile
假设输出 -rw-r--r-- 2 abc abc 1024 Oct 14 04:10 myfile
(1)首先,除去前面的-,后面9个字符表示权限位,分别表示文件属主的权限,同组用户的权限,其他用户的权限
权限分为读、写和可执行,-表示文件类型为普通文件
(2)linux下的文件类型有:
-:普通文件
d:目录文件
l:链接文件
p:管道文件(有名管道)
s:套接字文件
b:块设备文件
c:字符设备文件
(3)权限位后面的数字2表示此文件myfile的文件链接数,链接分为硬链接和软链接
硬链接:相当于指向磁盘文件的指针,所以它们的inode一样,硬链接有一个好处就是表示方便,缺点为不能跨文件系统使用
创建方法:ln target_file new_link_file。
软链接:相当于存储文件的绝对路径,可以跨文件系统使用,但是删除源文件会导致链接文件失效,硬链接则不会
创建方法:ln -s target_file new_link_file。
目录的链接数至少为2,因为.是当前目录的硬链接
(4)接下来两个字符串分别为文件属主和文件所属的组名
(5)1024为文件的大小,单位为字节
(6)为文件的最近修改时间
(7)为文件名
2. 修改文件的权限
使用chmod,有两种方法,为符号模式和绝对模式
(1)符号模式
语法:chmod [who] operator [permission] filename
who有u(文件属主),g(同组用户),o(其他用户),a(所有用户)
operator: +,-,=
permission: r,w,x
例如:把文件myfile设置为文件属主能够执行,其他用户不能读
chmod u+x o-r myfile
$ ls -l myfile
-rwxr----- 2 abc abc 1024 Oct 14 04:10 myfile
(2)绝对模式
使用八进制,r=4,w=2,x=1
所以上面那个例子也可以这样写:
chmod 740 myfile
3. 目录的权限
r:可以列出目录下的文件;
w:可以在该目录下创建和修改文件;
x:可以访问(进入)该目录
注意:目录的权限会覆盖该目录下文件的权限
例如:如果目录docs具有权限
drwxr--r-- 2 abc admin 2048 Oct 4 12:00 docs
而其中的文件pay的权限为:
-rwxrwxrwx 1 abc admin 1024 Oct 4 13:00 pay
那么admin组的用户将无法编辑pay文件
4. suid位 和 guid位
suid位意味着如果某个用户对属于自己的shell脚本设置了这个权限,那么其他用户在执行此文件时也拥有其文件属主所具有的权限
同样的道理应用于guid
设置suid:
(1) chmod u+s filename
(2) chmod 4755 filename
设置guid:
chmod 6755 filename