用户:
Linux下有两种用户:普通用户和超级用户(root)
超级用户:可以在Linux系统下做任何事情不受限制
普通用户:只能在Linux下做有限的事情
超级用户的命令提示符是"#" 普通用户的命令提示符是"$"
文件权限:
这个是我们Linux下使用 ll 命令显示出来的文件的权限信息:
总共是有10个字符,分为4个部分,开始的第一个字符为一个部分,后面9个字符每3个为一部分
第一个字符是文件的类型(Linux不是按照文件的后缀区分文件的,Linux是按照这第一个字符区分的,当然这不影响我们自己使用后缀区分)
-: 普通文件,文本,源代码,可执行程序,第三方动静态库等
d:目录文件
l:链接文件
p:管道文件
b:块设备文件,磁盘
c:字符设备文件
需要注意一个点:虽说Linux不用文件的后缀区分文件,但是编译器gcc g++ 可不一样,他们是要区分的
Linux系统,人分为三类:文件的拥有者(owner)、文件的所属组(grouper)、文件的其他用户(other)
红框中的就是文件的拥有者
上面说了前面那10个字符后面9个每三个为一组,正好每一组对应: 文件的拥有者(owner)、文件的所属组(grouper)、文件的其他用户(other) 。
r:就是可读
w:就是可写
x: 可执行
-:没有这个权限
权限也是修改的,在终端上我们可以使用chmod命令来修改文件权限
chmod (u/g/o) (+/-) (r/w/x) 文件名
比如: chmod u+rw test.cc (就是给test.cc 文件的拥有者添加读和写的权限)
chmod o-x test.cc (给test.cc文件的其他用户删除可执行的权限)
chmod g+x,u-r test.cc (也可以同时设置多个)
注意:虽说有的文件,你给它添加了可执行的权限,如果它本身就是不可执行的,也是没有用的
chmod命令 还可以使用8进制的方式使用
chmod 666 test.cc (每一个6转为2进制就对应 拥有者、所属组、其他 的权限)
666:110 110 110 (- 和(r/w/x)就是 0 和 1 的关系)
chown命令可以更改 拥有者 chgrp命令可以该所属组 其他 :只要拥有者和所属组变了也就变了
chown zs test.cc
chown root:root test.cc (拥有者和所属组都变为root)
如果你只是普通用户,直接修改是不可行的(涉及信任列表),需要在命令的前面加上 sudo (以root的身份去运行该程序chown)
目录权限:
如果想要进入一个目录是不受这个目录的权限限制的。 只不过:
如果目录只没有 r 权限,允许进入,也可以创建文件,但是不允许查看文件列表
如果目录只没有 w 权限,允许进入,可以在该目录下查看该目录的文件列表,但是不允许创建文件
如果目录只没有rw权限,允许进入,但是不允许创建文件和查看文件列表(文件内容是否可以查看是根据这个文件的权限决定的)
按理来讲 如果一个目录没有r权限,该目录下无法查看文件列表,那么这些文件名就找不到,他的内容就无法查看(文件路径)
在Linux中,默认的是
普通文件的默认权限是从666开始的
目录文件的默认权限是从777开始的
(默认权限 != 最终权限)
实际上创建文件的最终权限是这样的:
可以看到普通文件是 664 目录文件是 775,这些都是因为权限掩码造成的,最终的权限是=默认权限去掉umask(权限掩码)中存在的权限
最终权限=默认权限&~(权限掩码)
粘滞位:
有时候,有些目录多个用户都可以访问的情况下,就存在可能会有误删的情况,所以为了处理这种情况可以给该目录 添加粘滞位
chmod +t dir
被设置粘滞位的目录,该目录下的文件只能由超级管理员、目录的所有者、文件的所有者删除