文章目录
- 一、Linux用户权限
- 1.1权限的概念
- 1.2 用户分类##
- 1.3切换用户
- 1.4sudo提权
- 二、Linux文件权限
- 2.1文件属性
- 2.2文件的类型
- 2.3 基本权限##
- 2.4权限划分
- 三、Linux文件权限的修改方法
- 3.1 chmod
- 3.1.1操作符
- 3.1.2数字模式
- 3.2chown
- 3.3chgrp
- 3.4目录文件权限的具体剖析
- 3.4.1目录的读权限
- 3.4.2目录的写权限
- 3.4.3目录的执行权限
- 四、umask
- 4.1umask值
- 4.2修改umask值
- 五、粘滞位
- 5.1设置粘滞位
- 5.2粘滞位的注意事项
一、Linux用户权限
1.1权限的概念
一件事情是否允许被你做,取决于你的身份是什么,比如你是学生你就不允许参与政府的管理,还取决于事务的属性是什么,比如一个面包,它不可能拿去当书读
1.权限认证的是身份
2.权限也和事务的"属性"有关
1.2 用户分类##
root:超级用户
超级用户的命令行提示符是’#’
[root@hcss-ecs-000a ~]#
普通用户:我们新建的用户,adduser
普通用户的命令行提示符是’$’
[wyx@hcss-ecs-000a ~]$
1.3切换用户
[wyx@hcss-ecs-000a lesson1]$ su - root
Password:
su 指令
功能:用于切换当前用户身份,可从普通用户切换到其他普通用户,也可从普通用户或 root 用户切换到 root 用户。
格式:
切换到其他用户(需要输入目标用户的密码):su [选项] [用户名]
直接切换到 root 用户(需要输入 root 密码):su 或 su -
选项说明:
- / -l(完全变身)
作用:彻底变成目标用户(就像TA亲自登录)
读取个人配置(如.bashrc)
进入它的专属家目录
使用它的所有环境设置
-c(临时打工)
作用:借用用户身份干件事,干完立刻恢复自己身份
适合单次任务(如重启服务)
命令要用引号包住
不改变当前工作目录和环境
1.4sudo提权
那么我们想要短暂的对一条命令提升权限怎么办
[wyx@hcss-ecs-000a lesson1]$ sudo whoami
sudo 指令
功能:允许经过授权的普通用户以 root 用户或其他指定用户的身份执行特定命令,而无需切换用户身份。一般用于临时获取高权限执行一些需要管理员权限才能执行的操作。
格式:sudo [选项] 命令
-u:指定以哪个用户的身份执行命令,默认是以 root 用户身份执行。例如 sudo -u testuser ls /home/testuser 表示以 testuser 用户身份执行 ls /home/testuser 命令。
-l:列出当前用户可以使用 sudo 执行的命令列表。
-s:以交互方式启动一个新的 shell,在新 shell 中可以执行多个命令,且拥有相应的权限。
二、Linux文件权限
2.1文件属性
当我们使用ls-l的时候可以查看文件的属性
接下来我们的解析都围绕下面代码的展开
[wyx@hcss-ecs-000a ~]$ ls -l
total 12
-rw-rw-r-- 1 wyx wyx 827 May 25 09:08 install.sh
drwxrwxr-x 2 wyx wyx 4096 May 25 18:51 lesson1
drwxrwxr-x 4 wyx wyx 4096 May 31 10:21 lesson2
2.2文件的类型
-:普通文件(文本,可执行程序,库)
d:目录文件
b:块设备文件(磁盘文件)
c:字符设备文件(键盘,显示器文件等)
p:管道文件
s:套接字文件
Linux系统中文件名后缀没有直接的意义。也不是不代表它不用
[wyx@hcss-ecs-000a lesson1]$ mv test.c test.txt
[wyx@hcss-ecs-000a lesson1]$ g++ test.txt
test.txt: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
g++是一款编译器,它就需要编译的时候带上后缀,不代表其他Linux系统上运行的其他软件不需要后缀
[wyx@hcss-ecs-000a lesson1]$ ./a.out
hello world
[wyx@hcss-ecs-000a lesson1]$ mv a.out a.tuy
[wyx@hcss-ecs-000a lesson1]$ ./a.tuy
hello world
但是Linux系统在编译程序的时候是不用关心后缀的
2.3 基本权限##
r:可读
w:可写
x:可执行
-:对应的权限位置,没有权限
2.4权限划分
Linux又将权限划分成三种角色
u:代表文件所有者(user)
g:代表文件所属组(group)
o:代表其他用户(others)
a:代表所有用户(all
root和普通用户都可以扮演这三种角色
那我们通过一个实例来阐述一下这个观念
比如我们有一个比赛,有两支队伍小明为组长和小王为组长的队伍
对于小明队来说,小王队属于其他人,不能查看自己项目的内容
但是今天小明队新加入一个队员,她想看一下队伍的项目具体内容进行到哪一步了,那么小明作为拥有者,就要对她开放权限,因为她是小明这个组长的成员也就是所属组
通过这个我们就能对文件的属性展开剖析了
为什么没有其他人呢
因为其他人的数量可能过多,我们可以拿这个身份匹配它是不是拥有者和所属组,不是这两个就是其他人
所以rw-就是一个角色拥有读写权限但是没有可执行权限
但是root不受权限的约束
三、Linux文件权限的修改方法
3.1 chmod
功能:用于改变文件或目录的访问权限。
格式:chmod [参数] 权限模式 文件名
3.1.1操作符
+:添加权限
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
--w-rw-r-- 1 wyx wyx 0 May 25 18:51 text.txt
[wyx@hcss-ecs-000a lesson1]$ chmod u+r text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw-rw-r-- 1 wyx wyx 0 May 25 18:51 text.txt
-:移除权限
[wyx@hcss-ecs-000a lesson1]$ chmod g-rw text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw----r-- 1 wyx wyx 0 May 25 18:51 text.txt
=:设置权限
[wyx@hcss-ecs-000a lesson1]$ chmod o=rwx text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw----rwx 1 wyx wyx 0 May 25 18:51 text.txt
合并操作
[wyx@hcss-ecs-000a lesson1]$ chmod u+x,g+rwx,o-rwx text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rwxrwx--- 1 wyx wyx 0 May 25 18:51 text.txt
或者是
[wyx@hcss-ecs-000a lesson1]$ chmod a+rwx text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rwxrwxrwx 1 wyx wyx 0 May 25 18:51 text.txt
3.1.2数字模式
rwx可以用二进制来表示
0表示没有这个权限
1表示有这个权限
像rw-用110就可以来表示
那么rw-rw-rw-用二进制转换十进制就表示666
[wyx@hcss-ecs-000a lesson1]$ chmod 666 text.txt
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw-rw-rw- 1 wyx wyx 0 May 25 18:51 text.txt
3.2chown
功能:chown 用于更改文件或目录的所有者和所属组
格式:chown [参数] [所有者][:所属组] 文件名
[root@hcss-ecs-000a lesson1]# chown root text.txt
[root@hcss-ecs-000a lesson1]# logout
[wyx@hcss-ecs-000a lesson1]$ cat text.txt
[wyx@hcss-ecs-000a lesson1]$ ls
text.txt
[wyx@hcss-ecs-000a lesson1]$ chmod 700 text.txt
chmod: changing permissions of ‘text.txt’: Operation not permitted
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw-rw-rw- 1 root wyx 0 May 25 18:51 text.txt
你更改这个文件的所属组前提是要征得别人的同意,我这里使用的是root所以不用
我不属于这个文件的拥有者了,我自然不能更改它的权限,但是我还是它的所属组,还是可以拥有读写执行权限的,前提是拥有者给你开放
我们还可以一次性修改文件的拥有者和所属组
[root@hcss-ecs-000a lesson1]# chown wyx:wyx text.txt
[root@hcss-ecs-000a lesson1]# ll
total 0
-rw-rw---- 1 wyx wyx 0 May 25 18:51 text.txt
3.3chgrp
功能:更改文件或目录的所属组,使不同组的用户可以根据新的组权限对文件或目录进行操作
格式:chgrp [参数] 组名 文件/目录
[root@hcss-ecs-000a lesson1]# chgrp root text.txt
[root@hcss-ecs-000a lesson1]# logout
[wyx@hcss-ecs-000a lesson1]$ cat text.txt
cat: text.txt: Permission denied
**注意:**三种身份认证的时候,你只能认证一种身份,就是你同时是拥有者和所属组,它只会看你拥有者的权限
3.4目录文件权限的具体剖析
3.4.1目录的读权限
[wyx@hcss-ecs-000a ~]$ chmod u-r lesson1
[wyx@hcss-ecs-000a ~]$ cd lesson1
[wyx@hcss-ecs-000a lesson1]$ ll
ls: cannot open directory .: Permission denied
我们可以发现读权限并不影响我们进入这个文件,影响的是我们查看目录文件下面文件列表的操作
3.4.2目录的写权限
[wyx@hcss-ecs-000a ~]$ chmod u-w lesson1
[wyx@hcss-ecs-000a ~]$ cd lesson1
[wyx@hcss-ecs-000a lesson1]$ ll
ls: cannot open directory .: Permission denied
[wyx@hcss-ecs-000a lesson1]$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
[wyx@hcss-ecs-000a lesson1]$ mv text.txt test.txt
mv: cannot move ‘text.txt’ to ‘test.txt’: Permission denied
[wyx@hcss-ecs-000a lesson1]$ rm text.txt
rm: cannot remove ‘text.txt’: Permission denied
所以目录的写权限决定了我们是否能在当前目录下进行创建,更改,删除
3.4.3目录的执行权限
根据上面两个我们就能推断出目录的执行权限决定了我们是否进入这个目录
[wyx@hcss-ecs-000a ~]$ chmod 666 lesson1
[wyx@hcss-ecs-000a ~]$ cd lesson1
-bash: cd: lesson1: Permission denied
[wyx@hcss-ecs-000a ~]$ ll
total 12
-rw-rw-r-- 1 wyx wyx 827 May 25 09:08 install.sh
drw-rw-rw- 3 wyx wyx 4096 May 31 22:12 lesson1
四、umask
umask表示创建文件时的默认权限
[wyx@hcss-ecs-000a lesson1]$ touch test1.txt
[wyx@hcss-ecs-000a lesson1]$ touch test2.txt
[wyx@hcss-ecs-000a lesson1]$ mkdir test3
[wyx@hcss-ecs-000a lesson1]$ ll
total 0
-rw-rw-r-- 1 wyx wyx 0 May 31 22:11 test1.txt
-rw-rw-r-- 1 wyx wyx 0 May 31 22:11 test2.txtdrwxrwxr-x 2 wyx wyx 4096 May 31 22:12 test3
我们可以发现我们创建普通文件的时候起始权限:664
创建目录文件的时候起始权限:775
这里我们给大家一个预备知识
1.默认给普通文件的起始权限其实是:666
2.默认给目录文件的起始权限其实是:777
那为什么又会变呢,是因为umask权限掩码
凡是在umask中出现的权限,不会在最终的文件权限中出现
4.1umask值
[wyx@hcss-ecs-000a lesson1]$ umask
0002
就是下面这个1对应的权限不会在最终的文件权限中出现
最终权限=起始权限&(~umask)
4.2修改umask值
我们还可以更改umask值
[wyx@hcss-ecs-000a lesson1]$ umask 0001
[wyx@hcss-ecs-000a lesson1]$ umask
0001
那我们就可以用umask来修改创建文件时的起始权限
五、粘滞位
给目录设置,一般是共享目录,大家可以在目录进行各自文件的增删改查,只允许文件拥有者或者root能删这个文件,其他人一概不允许
功能:限制目录内文件删除权限(仅文件所有者/root可删)
格式:chmod +t 目录名 或 chmod 1xxx 目录名(xxx为原权限数字)
1.普通用户自己的家目录权限是700,我在我的家目录创建的文件,别人都看不到
2.有时候,我们多个用户想进行文件数据的共享(我们所建立的共享文件,不能在任何一个的家目录下)
[root@hcss-ecs-000a /]# mkdir test
[root@hcss-ecs-000a /]# chmod 777 test
[root@hcss-ecs-000a /]# ls -al test
total 8
drwxrwxrwx 2 root root 4096 Jun 1 10:24 .
[wyx@hcss-ecs-000a ~]$ cd /
[wyx@hcss-ecs-000a /]$ cd test
[wyx@hcss-ecs-000a test]$ touch test.txt
[wzh@hcss-ecs-000a test]$ rm test.txt
rm: remove write-protected regular empty file ‘test.txt’? y
[wzh@hcss-ecs-000a test]$ ll
total 0
大家可以看到,我们创立的这个共享文件,一个人在这个目录里面创立文件,另一个人居然可以删掉它,我们试想着是否可以关闭这个目录的写权限,让它做到无法更改和删除呢
[root@hcss-ecs-000a /]# ls -al test
total 8
drwxr-xrwx 2 root root 4096 Jun 1 10:24 .
[wyx@hcss-ecs-000a test]$ rm test.txt
rm: cannot remove ‘test.txt’: Permission denied
[wzh@hcss-ecs-000a test]$ touch text.txt
touch: cannot touch ‘text.txt’: Permission denied
但是我们会发现连创建文件都不被允许了,这与我们的共享文件是背道而驰的
5.1设置粘滞位
[root@hcss-ecs-000a /]# chmod o+wt test
[root@hcss-ecs-000a /]# ls -al test
total 8
drwxrwxrwt 2 root root 4096 Jun 1 10:31 .
[wyx@hcss-ecs-000a test]$ touch text.txt
[wyx@hcss-ecs-000a test]$ echo "hello world">text.txt
[wyx@hcss-ecs-000a test]$ cat text.txt
hello world
[wzh@hcss-ecs-000a test]$ rm text.txt
rm: remove write-protected regular file ‘text.txt’? y
rm: cannot remove ‘text.txt’: Operation not permitted
这样我们就能够创立出共享文件中不能被其他人删除的文件了
5.2粘滞位的注意事项
仅用于目录,对文件无作用。
普通用户无权限设置,需root或有sudo权限用户操作。
设粘滞位后,用户仍需有目录的写和执行权限才能创建、修改文件。
虽限制删除,但root可删除任意文件。
粘滞位可能影响自动化脚本的文件删除操作,使用时需注意。