- 相关文章:
⭐️ linux/centos - 用户管理
文章目录
- 前言
- 使用chown命令改变文件/目录的所属用户
- 使用chgrp改变文件/目录的所属组
- 使用chmod命令修改文件/目录的权限
- umask
- # 后三位
- # 特殊权限位
- 查看和修改文件属性命令lsattr,chattr
前言
Linux的权限是基于UGO模型进行控制
U代表User(用户)
G代表Group(组)
O代表Other(其他)
[root@ctos3 ~]# ls -ld test
drwxr-xr-- 2 root root 6 Mar 9 01:37 test
它们分别是文件属主(Owner)的读、写、执行,用户组(Group)的读、写、执行以及(Other)其它用户的读、写、执行
其中
- r(read)读权限, 可以读取文件内容,可以列出目录内容 用数字表示为4
- w(write)写权限, 可以修改文件内容,可以在目录中创建删除文件 用数字表示为2
- x(excute)执行权限,可以作为命令执行,可以访问目录内容 用数字表示为1
- 没有权限, 用数字表示为0
使用chown命令改变文件/目录的所属用户
chown 用户 文件名/目录名
选项
-
-R
递归更改
例子
[root@ctos3 ~]# ls -l test.txt
-rw-r--r-- 1 root root 0 Mar 9 01:36 test.txt
[root@ctos3 ~]# chown demo test.txt #更改
[root@ctos3 ~]# ls -l test.txt
-rw-r--r-- 1 demo root 0 Mar 9 01:36 test.txt
使用chgrp改变文件/目录的所属组
chgrp 用户 文件/目录名
-
-R
递归更改
例子
[root@ctos3 ~]# chgrp demo /test/
[root@ctos3 ~]# ls -ld /test/
drwxr-xr-x 3 demo demo 16 Mar 9 01:55 /test/
#注意点:一般都是用chown修改用户和组的了 格式chown -R 用户.组 + 文件
使用chmod命令修改文件/目录的权限
chmod 模式 文件/目录
-
-R
递归更改
模式为如下格式
- u、g、o、分别代表用户、组和其他
- a可以代指ugo
- +、-代表加入或删除对应权限
- r、w、x代表三种权限
例子
chmod u+rw test.txt #在user用户那里添加rw权限
chmod g-x test.txt #在group组那里去掉x权限
chmod go+r test.txt #在组和其他用户添加r权限
chmod u=rx test.txt #将用户权限设置为rx权限
chmod命令也支持以数字方式修改
-r=4 (2的2次方)
-w=2(2的1次方)
-x=1 (2的0次方)
使用数字表示权限时,每组权限分别对应数字之和:
rw=4+2=6
rwx=4+2+1=7
r-x=4+1=5
例子
chmod 664 test.txt == rw-rw-r
chmod 775 test.txt == rwxrwxr-x
umask
文件的默认权限为 -rw-rw-rw-(666),创建目录的默认权限 drwxrwxrwx(777),而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。
默认权限=777-umask
文件默认为666可以理解为:文件默认不能执行
可以使用命令 umask 来查看umask值
lawsssscat@lawsssscat-virtual-machine:~/Downloads$ umask
0002
# 后三位
可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会。后三位002则与普通权限(rwx)有关,计算方法如下:
文件权限=666-002=664
文件夹权限=777-002=775
计算结果与下面实验一致
lawsssscat@lawsssscat-virtual-machine:~/Downloads$ touch aa
lawsssscat@lawsssscat-virtual-machine:~/Downloads$ mkdir bb
lawsssscat@lawsssscat-virtual-machine:~/Downloads$ ll
total 0
drwxr-xr-x 3 lawsssscat lawsssscat 26 3月 3 17:32 ./
drwxr-xr-x 17 lawsssscat lawsssscat 331 3月 3 15:30 ../
-rw-rw-r-- 1 lawsssscat lawsssscat 0 3月 3 17:32 aa
drwxrwxr-x 2 lawsssscat lawsssscat 6 3月 3 17:32 bb/
用户类型 | 默认umask | 含义 |
普通用户 | 0002 | 不希望other用户写(w) |
root用户 | 0022 | 不希望非own用户写(w) |
可以通过命令 umask 值 的方式来更改umask值
hadoop@sench-pc:~$ umask 027
hadoop@sench-pc:~$ umask
0027
这种方式并不能永久改变umask值,只是改变了当前会话的umask值,打开一个新的terminal输入umask命令,可以看到umask值仍是默认的002。要想永久改变umask值,则可以修改文件/etc/bashrc
,在文件中添加一行 umask 027 。
# 特殊权限位
引言
先看下面例子,Tom执行passwd来进行修改密码,但注意到passwd的权限为:[hadoop@localhost ~]$ ls -l `which passwd` -rwsr-xr-x 1 root root 68208 7月 15 2021 /usr/bin/passwd
Tom不是root用户,也不属于root组,只能以other(r-x)来运行passwd。Tom可以发起一个进程,这个进程是passwd,想修改自己的密码。
Tom执行完passwd修改密码,其实就是保存至/etc/shadow
中,下面我们看看/etc/shadow
文件的权限情况。lawsssscat@lawsssscat-virtual-machine:~/Downloads$ ls -l /etc/shadow -rw-r----- 1 root shadow 1571 3月 3 08:16 /etc/shadow
根据上面的
/etc/shadow
的权限可见,除了root用户外谁都不可以修改/etc/shadow
!也就是说,根据进程安全模型,普通用户根本无法修改密码!但事实上,是可以修改的。原因就在于那个特殊权限s。这里的特殊权限s为
suid
,表示运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。也就是说普通用户去执行passwd修改密码,其实是发起了一个进程,这个进程的属主是root用户,那么很显然就可以修改shadow这个影子文件了。
特殊权限有如下3种:
- suid
运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。 - sgid
运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者的基本组。 - sticky(粘滞) 目前只对目录有效
用户只能删除目录下自己own的文件/目录
与普通权限一样,特殊权限也可以使用数字方式表示
- SUID=4
- SGID-2
- Sticky=1
设置方法:
suid:chmod 4755 file 或者chmod u+s file
sgid:chmod 2755 file 或者 chmod g+s file
sticky:chmod 1777 file 或者 chmod o+t file
查看和修改文件属性命令lsattr,chattr
使用lsattr命令显示文件属性,使用chattr命令修改文件属性
例子
root@ctos3 ~]# mkdir attribute
[root@ctos3 ~]# cd attribute/
[root@ctos3 attribute]# echo "file attribution" > attribution.txt
[root@ctos3 attribute]# lsattr
---------------- ./attribution.txt
#根据上面操作。使用lsattr查看没有赋予任何属性,下面就使用chattr来为文件添加属性
[root@ctos3 attribute]# chattr +i attribution.txt
[root@ctos3 attribute]# lsattr
----i----------- ./attribution.txt
#提示:添加i属性到文件之后,即使是root用户也不能修改、删除文件,可以加a权限,但是添加了也不能删除文件,知道将这两个权限删除,才能删除修改文件
[root@ctos3 attribute]# chmod 655 attribution.txt
chmod: changing permissions of ‘attribution.txt’: Operation not permitted
[root@ctos3 attribute]# rm attribution.txt
rm: remove regular file ‘attribution.txt’? y
rm: cannot remove ‘attribution.txt’: Operation not permitted
参考:
- umask部分