权限的基本概述
什么是权限? 我们可以把他理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权利。
为什么要有权限? 因为在公司中,服务器可能就那么几台,但是运维可能有多个,我们多个运维要登录同一台服务器,那么不可能只有一个root用户,我们需要根据运维的等级,来分配用户权限。
权限与用户的关系? Linux中的文件或目录的权限和用户及用户组关联很大,Linux中每个文件或目录都有一组共9个基础权限位,每三个字符被分为一组,他们分别是属主权限位(占三个字符)、属组权限位(占三个字符)、其他用户权限位(占三个字符) 比如rwxr-xr-x
linux中正是这9个权限位来控制文件属主(User)、属组(Group)、其他用户(Other)基础权限。 每种身份,又对应了3种权限:r(readable)、w(writeable)、x(excutable)
权限管理
当我们使用ls -l查看一个文件的详细属性时,能看到每个文件都有一个9位基本权限位
比如:rwxr-xr-x其中每三位字符为一组,分别表示属主权限位,属组权限位,其他用户权限位。
-rw-r--r--. 1 root root 99 Mar 22 11:34 1.txt
r 读 4
w 写 2
x 执行 1
- 啥也不是 0
# 计算权限
ll | tr 'rwx-' '4210' | awk -F '' 'NR==2{print $2+$3+$4""$5+$6+$7""$8+$9+$10}'
644
# 优化计算权限
stat -c %a file(文件名/目录名)
[root@web02 ~]# stat -c %a 11.txt
644
字母 |
含义 |
对应权限 |
r(read) |
读取权限 |
4 |
w(write) |
写入权限 |
2 |
x(execute) |
执行权限 |
1 |
-(没有权限) |
没有权限 |
0 |
如果权限位不可读、不可写、不可执行,则用-来表示。
权限修改命令-chmod
chmod 修改权限
+:增加权限
-:删除权限
=:设置权限
# 语法:
chmod u=rwx file(文件名)
user属主 u+ - =r w x
group属组 g+ - =r w x
other其他用户 o+ - =r w x
a+ - =r w x (a是全部代替ugo)
# chmod 755 file(文件名)
权限对文件的影响
r 只能读取
w 任何编辑命令都可以写入
x 对普通用户没有用,必须配合r使用
rw 可读可写,正常使用vim,但不能执行
rx 可读可执行,但不能编辑
wx 可写可执行,但不能读
rwx 可读可写可执行
权限对目录的影响
# 目录在只有但权限时啥也做不了
r 能看见目录下的文件,但看不了目录下文件的详细信息
w 啥也干不了
x 啥也干不了
rx 可以查看目录下的文件
wx 读取不了目录里的文件,但是创建文件/创建目录/删除目录/删除文件不能用*代替
rwx 可读可写可执行,可以创建,删除,移动,复制文件/目录
修改文件属主、属组-chown
chown 修改文件属主和属组
# 修改文件属主
chown haha 文件名
# 修改文件属组
chown .haha 文件名(可以是:也可以是.)
# 修改属主和属组
chown haha:haha 文件名(可以是:也可以是.)
# -R 递归
chown -R haha:haha xxx
(xxx下的其他文件的属主和属组会随之变化)
特殊权限
# 基本权限
r写 w读 x执行 -没有
# 特殊权限1
## SetUID 文件以文件属主的身份去运行
#setuid 特殊权限授权#
s 4000
# 授权方法
chmod 4755 file
chmod u=s file
chmod u+s file
# 特性
如果原本没有x权限,授权为setuid会是大写S,否则为小写s
# 为什么普通用户可以修改密码
1) 使用了passwd命令
2)passwd命令文件在属主位上有个s权限 原本的x变成了s
3)s权限在属主位,又叫做setuid权限 setUID
4)# 作用 普通用户在使用有setuid权限的文件或者命令的时候,会以该文件的属主身份去运行!!!!!
# 特殊权限2
## setgid 将目录设置为SGID后,如果在该目录下创建文件,都将与该目录的所属组保持一致(可做目录共享)
s 2000
#授权方法
chmod g+s directory
chmod 2755 directory
# 特性
如果原本没有x权限 授权为setuid 会是大写S,否则为小写s
# 特殊权限3
## sbit
t 1000
# 作用
1 带有粘滞位的目录下的所有文件,谁都可以读,写
2.带有粘滞位的目录下的文件只有属主才能删除自己的文件,其他普通用户无法删除属主不是自己的文件
3.带有粘滞位的目录 只有root能删
#s授权方法
chmod o+t directory
chmod 1775 diretcory
# 特性
如果原本没有x权限 授权特殊sbit后为大写T,否则为小写t
练习sgid:
创建三个用户,分别是 zls , oldboy , yourname 这些用户都属于 oldboyedu 组的成员。这些用户的密码都是 123 1.要求以上用户和组可以在 /home/oldboyedu 目录里访问,创建,删除文件 2.其他用户一律不允许访问该目录 3.在该目录下新建的文件会自动属于 oldboyedu 组拥有
[root@localhost ~]# groupadd oldboyedu
[root@localhost ~]# useradd zeng
[root@localhost ~]# useradd oldgirl
[root@localhost ~]# useradd qh
[root@localhost ~]# usermod -G oldboyedu zeng或usermod zeng -g oldboyedu
[root@localhost ~]# usermod -G oldboyedu oldgirl
[root@localhost ~]# usermod -G oldboyedu qh
[root@localhost ~]# echo 123 | passwd --stdin zeng
Changing password for user zeng.
passwd:
all authentication tokens updated successfully.
[root@localhost ~]# echo 123 | passwd --stdin oldgirl
Changing password for user oldgirl.
passwd:
all authentication tokens updated successfully.
[root@localhost ~]# echo 123 | passwd --stdin qh
Changing password for user qh.
passwd:
all authentication tokens updated successfully.
chomd g=rwx /home/oldboyedu
chomd g+s /home/oldboyedu