linux服务器上有严格的权限管理,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要。
1.基本权限
我们使用ll
命令,可以查看到当前目录下的文件权限情况
从左至右依次是文件类型、权限、链接数、所属用户、所属用户组、文件大小(字节)、最后修改时间、文件名
第一列的第一个字符就表示文件类型,其中linux的文件类型一共有7中,分别是
- - :普通文件
- d :目录(文件夹)
- l : 软链接(类似Windows的快捷方式)
- b :块设备文件(例如硬盘、光驱等)
- p :管道文件
- c :字符设备文件(例如猫等串口设备)
- s :套接口文件/数据接口文件
紧接着往后9个字符代表文件的权限,它们分为三组,分别是所属用户(u)、所属组(g)、其他用户(o)权限
对应关系是:
- r(4) :可读
- w(2):可写
- x(1):可执行
修改文件权限 chmod
chmod [选项] 模式 文件名
- 选项
- -R 递归
- 模式
- [ugoa][+-=][rwx]
- [mode=421]
举个例子:
chmod u+x test //表示给test文件所属用户增加可执行权限
chmod g+w,o+w test //表示给test文件所属组和其他用户增加可写权限
chmod u=rwx,g=rw test //表示给test文件所属用户赋予rwx权限,给所属组赋予rw权限
chmod a=rwx test //表示给所有人赋予rwx权限
上面的写法有些繁琐,一般场景下,我们会使用权限的数字来表示:
我们要给文件test赋予 rwxr-xr-x 权限可以像下面这样
chmod 755 test // 等同于 chmod u=rwx,g=rx,o=rx test
常用权限
- 777(每个用户都是最高权限)
- 644(所属用户读写、所属组读、其他用户读,这是linux创建文件的默认权限)
- 755(所属用户读写执行、所属组读执行、其他用户读执行,)
比如467、477之类的权限一般是不会配置的,没有用
权限的作用
权限对文件的作用
- r:读取文件内容(cat more head tail)
- w:编辑、新增、修改文件内容(vi echo),但是不包含删除文件
- x:可执行
对文件来讲:最高权限是x,所以对文件应少赋执行权限
权限对目录的作用
- r:可以查询目录下的文件名(ls)
- w:具有修改目录结构的权限。如新建文件和目录,删除此目录下的文件和目录,重命名此目录下的文件和目录,剪切等(touch rm mv cp)
- x:可以进入目录(cd)
对目录来讲:最高权限是w,所以对目录应少赋写权限,对目录赋予权限应注意,只能赋予0 5 7,其他都没有意义
其他的权限命令
- chown 用户名 文件/目录名
chown user1 test // 将文件/目录test的所有者修改为user1
- chgrp 组名 文件/目录名
chgrp user1 test // 将文件/目录test的所属组修改为user1
- chown 用户名:组名 文件/目录名
chgrp user1:group1 test // 将文件/目录test的所属用户和所属组同时修改为user1和group1
2.默认权限
查看默认权限
我们可以使用 umask
命令查看linux的默认权限,输出 0022
第1位的0表示文件的特殊权限,后面3位表示文件的默认权限
文件的默认权限
默认文件权限的意思就是我们在linux中创建文件时,文件默认赋予的权限
- 文件默认创建后没有执行权限,必须手动赋予执行权限(为什么? 出于安全考虑,假如用户给服务器上传木马病毒文件,假如建立后就有执行权限,那么后果可想而知)
- 文件默认权限最大是666
- 默认权限需要换算成字母相减
- 文件建立后的默认权限为666减去umask的值
- 比如文件默认权限并不是由666-022=644得来的,而是由666(rw-rw-rw-)减去022(----w--w-)得来644(rw-r--r--)
- 再比如我们设置默认权限为033,我们通过减法得666-033=633,着很明显是不对的,应该是 666(rw-rw-rw-)减去033(----wx-wx)还是644(rw-r--r--)
目录的默认权限
- 目录的默认权限最大是777
- 默认权限同样是需要换算成字母再相减
- 建立目录后的默认权限为777-umask
临时修改umask
重启之后就会还原
umask 0002
永久修改umask
重启之后也不会改变
vim /etc/profile
if里面是针对普通用户的,else里面是针对root用户的,做出对应的修改保存即可