在Linux下有两种用户:
其中普通用户的权限是受管控的
其实在Windows下,也有用户的分类
这里的管理员其实就相当于Linux的root用户,拥有最高的权限
在root用户下我们可以创建普通用户:
adduser [用户名]
删除用户:
userdel -r [用户名]
确定当前用户:
whoami
切换用户:
su - [用户名](不写用户名默认切换到root用户)
如果是从root用户切换到普通用户不需要密码,
其他:从root–>普通用户、普通用户平行切换,都需要输入目标用户的密码
我们可以使用ls -l或ll指令显示当前目录下的文件及其属性
其中最左侧的一位是文件的类型
Linux中不是以文件后缀作文件区分的
注意:只是说Linux的文件系统不以文件后缀区分,并不代表Linux下的软件也不区分后缀
如gcc编译器在编译的时候,是会识别文件的后缀的
-:普通文件:
文本、源代码、可执行文件、第三方动静态库
touch创建的文件就是普通文件
d:目录文件
makdir创建的文件夹
l:链接文件
ln -s创建的软链接文件属性就是l
这里的link就相当于windows的快捷方式
p:管道文件
mkfifo创建的是管道文件
后面进程间通信的一篇会用到管道文件
b:块设备文件:磁盘
c:字符设备文件
在/dev路径下也可以看到很多c属性的文件
这是一些终端:
要定义一个文件的权限,无非就是:什么人对文件有什么权限
什么人可以访问
Linux系统中,人分三类
如下的第三块和第四块就分别是文件的所属用户和所属组
允许的访问方式
文件的权限属性分:
属性的第1位是文件类型,
后面的2-10位就是权限,三个为一组,共三组,分别代表拥有者、所属组和其他用户的权限
wrx的顺序是确定的,如果对应位置是 “ - ” 代表此用户不具备此权限,是对应的字母就表示具备此权限
如上:rwx r-x r-x,就表示所属用户可读可写可执行,所属组和其他用户不可写
注意:如上的权限约束仅针对普通用户之间
root用户是不受任何约束的,
甚至如果一个文件的所属用户是root,去掉所属用户的所有权限之后,在root用户下依然可以读写此文件
对某个人添加或去掉某个权限
| 用户 | 操作 | 权限 |
|---|---|---|
| u:拥有组 | -:去掉 | r:读 |
| g:所属组 | +:添加 | w:写 |
| o:其他用户 | x:可执行 | |
| a:以上三者 |
chmod [用户][操作][权限] [文件名]
可一次去掉或添加多个权限,如:chmod u-rwx test.txt
也可通过“ , ”同时进行多组操作,如:chmod u-rwx,g+w,o-x test.txt
也可对所有的用户作同样的修改,如:chmod a+r test.txt
注意:”[用户][操作][权限] “的整个字符串中不能有空格
权限属性的九位,每一位无非两种状态:有权限/没有权限
我们就可以把rwx r-x r-x看作是111 101 101,
如果每三位可以用一个八进制数表示,九位权限属性就可以用三个八进制数表示
rwx r-x r-x --> 111 101 101 --> 755
第二种更改权限的方法就是直接输入代表目标权限的三个八进制数:
chmod [三个八进制数] [文件名]
我们可以使用chown修改用户的所属用户和所属组
但是,
一方面把我的文件给被人一定要征得别人的同意,
再者,文件的创建者和拥有者不一定是同一个
所以执行此命令的时候一定要将权限升级为root或者切换为root用户
修改所属用户:
sudo chown [对应用户] [文件名]
修改所属用户组:
sudo chgrp [对应用户组] [文件名]
同时修改所属用户和所属用户组:
sudo chown [对应用户]:[对应用户组] [文件名]
如果我们要进入一个目录,需要目录的x权限
如果目录只有w、x权限,没有r权限——允许进入和创建文件,无法查看文件列表
(注意:如果我们记住了文件名,即使目录没有读的权限,依然是可以访问此目录下的可读写的文件的,这是因为,虽然无法通过目录找到文件名对应的那个文件,但是由于Linux的缓存机制,就不会到目录中找了,也就不会被目录的不可读所限制了)
如果目录只有r、x权限,没有w权限——允许查看文件列表,无法创建、删除文件
如果只有x权限——不允许创建或查看文件列表
(注意:文件的内容是否可以修改或查看,仅由文件自己的权限决定)
rwx rwx rwxrw- rw- rw-!= 最终权限但是我们新建的目录和文件的权限却是这样:
可以看到实际的情况别是775,664
其他用户的写权限都被去掉了
这是因为有权限掩码的存在:
掩码的002就代表从默认权限去掉其他用户的2对应的权限w
实际创建的文件权限就是
mask & ~umask
我们也可以umask [四位权限数]设置umask
Linux下可以存在一些目录,拥有者和所属组是root,其他人允许以other的身份在该目录下,创建或删除文件
其实也很好创建,只需要把目录的其他用户的读写权限打开即可
所有用户在当前这个目录下都可以创建文件,读写自己的文件,删除文件
在这个共享目录下,张三用户可以创建文件并把其他用户的读写权限去掉,此时李四用户可以进入这个目录看到张三写了这个文件,不能读写它,但是防不住李四去删除它。
如果张三想在共享目录下形成临时文件,但是不允许除张三和root之外的人删除张三创建的文件,就需要让root用户给这个共享目录添加粘滞位
操作:
chmod +t [文件名]
可以看到,目录的其他用户的可执行权限位就变为了t,表示该目录有粘滞位
在根目录下的tmp目录就是这样的目录