• 相关文章:
    ⭐️ linux/centos - 用户管理


文章目录

  • 前言
  • 使用chown命令改变文件/目录的所属用户
  • 使用chgrp改变文件/目录的所属组
  • 使用chmod命令修改文件/目录的权限
  • umask
  • # 后三位
  • # 特殊权限位
  • 查看和修改文件属性命令lsattr,chattr


前言

Linux的权限是基于UGO模型进行控制
U代表User(用户)
G代表Group(组)
O代表Other(其他)

CentOS修改了超级管理员名称如何恢复 centos进入超级管理员的命令_修改文件

[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 递归更改

模式为如下格式

  1. u、g、o、分别代表用户、组和其他
  2. a可以代指ugo
  3. +、-代表加入或删除对应权限
  4. 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部分