Linux学习笔记之权限管理
u:所有者
g:组
o:others
r:读
w:写
x:执行
chmod [选项] 模式 问文件名
选项:
-R //递归(对文件夹操作时)
模式:
[ugoa][+-=][rwx]
[mode=421] //r=4,w=2,x=1, rwx = 7,rw- = 6 , r-x = 5, -wx = 3,r-- =4,-w- =2, --x=1
修改权限的方式:
- chmod u+x cangls.av //给所有者赋予执行权限
- chmod g+w,o+w cangls.av //给所属组赋予写的权限,给其他人赋予写的权限
- chmod a=rwx cangls.av //给所有人都赋予读写执行的权限
- chmod 755 cangls.av //aa的权限为rwxr-xr-x
权限对文件的作用
r:读取文件内容(cat more head tail)
w:编辑、新增、修改文件内容(vi echo)
但是不包含删除文件,因为文件其实是上一级文件夹的内容,需要对上一级文件夹有w权限,才能够删除文件
x:可执行
权限对目录的作用
r:可以查询目录下文件名(ls)
w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)
x:可以进入目录
对于文件最高权限是x ,对于文件夹最高权限是 w。
对于目录而言,有效的权限是0 5(rx) 7(rwx),其他都没有意义
修改所有者 chown 用户名 文件名
修改所属组 chgrp 用户组 文件名
修改所有者和用户组 chown 用户名:用户组 文件名
文件的默认权限
文件默认不能建立为执行文件,必须手动赋予执行权限
所以文件默认权限最大为666
默认权限需要换算成字母再相减
建立文件之后的默认权限,为666减去umask值
查看默认权限的命令
umask //查看默认权限
0022
第一位:文件特殊权限
022:文件默认权限
求真实权限
例如:
文件默认最大权限666,umask值022
-rw-rw-rw- 减去 -----w-w-等于 -rw-r--r--
Linux权限管理之特殊权限
1.ACL权限的用途:用户种类过多而权限分配有困难而产生的权限附加命令
2.dumpe2fs -h /dev/sda5 //dumpe2fs命令是指定分区详细文件系统信息的命令
选项:
-h //仅显示超级块中信息,而不显示磁盘块组的详细信息
3.临时开启分区ACL权限
mount -o remount,acl / //重新挂载根分区,并挂载假日acl权限
4.永久开启分区acl权限
vi /etc/fstab
UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx / ext4 defaults,acl 1 1
mount -o remount / //重新挂载文件系统或重启动系统,使修改生效
5.getfacl 文件名 //查看acl权限
6.setfacl 选项 文件名 //设定ACL权限
选项:
-m //设定ACL权限
-x //删除指定的ACL权限
-b //删除所有的ACL权限
-d //设定默认ACL权限
-k //删除默认ACL权限
-R //递归设定ACL权限
7.给用户设定ACL权限
useradd xsx
groupadd stu
mkdir /av
chmod tong:stu /av
chmod 770 /av
useradd lw
setfacl -m u:lw:rx /av
赋权之后使用ls -l可以看到文件权限后有“+”
8.给用户组设定ACL权限
groupadd tgroup2 //添加一个用户组
setfacl -m g:rgroup2:rwx /av
9.最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限“想与”才能得到用户的真正权限
修改最大有效权限:
setfacl -m m:rx 文件名 //设定mask权限为r-x。使用“m:权限”格式
10.删除ACL权限
setfacl -x u:用户名 文件名 //删除指定用户的ACL权限
setfacl -x g:组名 文件名 //删除指定用户组的ACL权限
11.尽量少用ACL权限,因为可能会权限溢出(就是权限分配过多)
- 默认ACL权限:把这个目录下以后创建的所有文件都赋予某种权限
setfacl -m d:u:user1 目录名
- 递归权限:在赋予目录权限的同时将权限赋予此文件夹下面的子文件权限
setfacl -m u:user1 -R 目录名
12.sudo权限
1.切换用户命令
[root@localhost ~]# su - 用户名
2.赋予普通用户超级管理员的权限
以root身份登陆visudo后,添加一行
visudo //实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份)授权命令(绝对路径)
3.为用户组添加权限
%wheel ALL=(ALL) ALL
%组名 被管理主机的地址=(可使用的身份)授权命令(绝对路径)
4.查看可执行的命令
[user1@localhost ~]# sudo -l
5.普通用户执行超级命令的时候必须要加sudo命令的绝对路径
例子1:赋予user1关机的权限
[root@localhost ~]# useradd user1
[root@localhost ~]# visudo user1 ALL=(ALL) /sbin/shutdown
[root@localhost ~]# su - user1
[user1@localhost ~]# sudo /sbin/shutdown -r now
例子2:授权普通用户可以添加其他用户
[root@localhost ~]# visudo
user1 ALL=/usr/sbin/useradd
user1 ALL=/usr/bin/password
//禁止普通用户设定root用户的密码
user1 ALL=/usr/bin/password [A-Za-z]*,!/usr/bin/password "",!/usr/bin/password root