02 权限(用户组以及文件的权限)(特殊权限位)

时间:2021-10-26 15:24:32

权限基础知识普及:

权限的分类:

    r(read) 读                 w(write) 写                  x(execute)  执行

r  读  权限 
针对目录,有r权限,就代表能对此目录有列表的功能   (就是ls列出来的功能)
针对文件,有r权限,就代表能对此文件有阅读的功能   (就是指cat一类的命令)
w  写  权限
针对目录,有w权限,就代表在此目录下创建(删除)文件或者子目录(touch,mkdir等)
针对文件,有w权限,就代表能在此文件写入内容或者修改(>  ,>>, vi 再写等)
x 执行 权限 
针对目录,有x权限,就代表能进入此目录   (cd) 
针对文件,有x权限,就代表能执行它  (命令,可执行文件等)


文件的权限:-rw-r--r--这个以数字表示为644(严谨的说,不能叫它六百四十四,要叫它*四)
每三位里r代表4,w代表2,x代表1;由三个数组成一个三位数,就是你的权限

目录的权限:drwxr-xr-x   755


问:什么情况下才能删除一个文件或目录?
答:跟这个文件或目录本身的权限无关,跟你对它们的上一级目录是否有写权限有关。

你对一个目录有写权限,你就可以删除这个目录里任何文件

----------------------------------------------------------------------------------------------------------------------

一、用户组权限:

linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

用  ls ‐ahl 命令可以看到文件的所有者

也可以使用chown 用户名 文件名来修改文件的所有者

 文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

 ls ‐ahl  命令可以看到文件的所有组

也可以使用chgrp 组名 文件名来修改文件所在的组

 其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组


二、文件权限:

1、Linux的文件权限一共是10个字符的长度,一般分成四段:

用 ls-l 的命令查看文件如下:

-rwxrw-r--  -1 root root 1213 Feb 2 09:39 abc

(1)第一段就是第一位(首字符),表示文件类型:


-  表示普通文件;d 表示目录;p 表示管道文件;l 表示链接文件;b 表示块文件


后面9位每三位分成一段

第二段表示文件拥有者(所有者)即属主的权限(rwx

第三段表示文件拥有者所在组即属组的权限(rw-

第四段表示其他用户的权限(r--

(2)-1表示文件的链接数

(3)root 表示文件的拥有者即属主

(4)root 表示文件拥有组即属组

(5)1213 表示文件大小(字节

(6) Feb 2 09:39 表示最后修改日期

(7)abc表示文件名

2、修改文件权限的命令  chmod

chmod 改变文件或目录的权限

只有文件的拥有者和root用户才能改变文件的权限


chmod 755 abc:赋予abc权限rwxr-xr-x

chmod u=rwxg=rxo=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

chmod u-xg+w abc:给abc去除用户执行的权限,增加组写的权限

chmod a+r abc:给所有用户添加读的权限

(1)利用符号类型改变文件权限

用g 、u、 o来分别表示组,用户,其他用户

a表示all 

                      u            +(加入)          r

chmod          g             -(除去)          w        文件或目录

                      o            =(设置)          x
                      a

 

   X(大写) 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加X


属性。


【x的大小写主要是看其他用户对此文件是否需要可执行权限】


例:假设我们要设置一个文件exo属性为-rwxr-xr-x,应该怎么做?

分析:u(user):具有可读可写可执行的权限

g(group)和o(other):具有可读可执行的权限

因此:

改变所有者(chown)和用户组(chgrp)命令

# chown  u=rxw ,go=rx  exo

# ls -al exo

-rwxr-xr-x 1 root root ..........

(2) 权限用数字来表示  (r,w,x都可以用数字来表示)

r4                   w    2             x  1

rwx7  rw_6  r_x5   r__  _wx3   _w_  __x1    ___0


(3)chown -R

-R  递归修改子目录中的文件,即目标目录下的所有文件及其子文件,和其下的所有文件

例:

# chown user1 file1   ---->将file1修改为用户user1所有

chown -R user1 dir2 ----->将目录dir2及其子目录下的所有文件都修改为用户user1所有


权限题目相关命令参考:

- groupadd 组名,在linux中添加组

- vi /etc/group,查看linux中所有组信息,可以看可以编辑

- cat /etc/group,查看linux中所有组信息,只可以看不可以编辑

- useradd ‐g 组名 用户名,创建用户的同时指定将该用户分配到哪个组下

- vi /etc/passwd,查看linux中所有用户信息,可以看可以编辑

- cat /etc/passwd,查看linux中所有用户信息,只可以看不可以编辑

-------------------------------------------------------------------------------------------------------------------

三、特殊权限位setuid、setguid、stick bit:

1、特殊权限位s(setuid、setgid)
例:查看/usr/bin/passwd 与/etc/passwd文件的权限
[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd
-rw-r--r-- 1 root root 1549 08-19 13:54 /etc/passwd
-rwsr-xr-x 1 root root 22984 2007-01-07 /usr/bin/passwd

/etc/passwd文件存放的各个用户的账号与密码信息,/usr/bin/passwd是执行修改和查看此文件的程序,但从权限上看
,/etc/passwd仅有root权限的写(w)权,可实际上每个用户都可以通过/usr/bin/passwd命令去修改这个文件,于是这
里就涉及了linux里的特殊权限setuid,正如-rwsr-xr-x中的s

setuid就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权

限,setgid同理指“

作为普通用户是没有权限修改/etc/passwd文件的,但给/usr/bin/passwd以setuid权限后,普通用户就可以通过执行

passwd命令,临时的拥有root权限,去修改/etc/passwd文件了


总结:

一个可执行文件拥有s位时,当其他用户来执行这个可执行文件的话,使用的权限是此可执行文件的属主或者

属组的权限 只针对前三位和中间三位

例:

[root@li ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 Feb 17  2012 /usr/bin/passwd

[root@li ~]# ll /etc/shadow

----------. 1 root root 1434 Jul 17 09:27 /etc/shadow

普通用户修改密码使用passwd能改自己的密码,但是密码是存放在/etc/shadow里,

也就是说普通用户对/etc/shadow没有写的权限,但passwd可执行文件的前三位有s位,

所以普通在调用passswd时是用的root的权限 


2、特殊权限位-粘贴位t(stick bit)

例:查看/tmp的权限:

[root@MyLinux ~]# ls -dl /tmp
drwxrwxrwt 6 root root 4096 08-22 11:37 /tmp

 

tmp目录是所有用户共有的临时文件夹,所有用户都拥有读写权限,这就必然出现一个问题,A用户在/tmp里创建


了文件a.file,此时B用户看了不爽,在/tmp里把它给删了(因为拥有读写权限),那肯定是不行的。实际上是不会发生


这种情况,因为有特殊权限stick bit(粘贴位)权限,正如drwxrwxrwt中的最后一个t


stick bit (粘贴位)就是:除非目录的属主和root用户有权限删除它,除此之

外其它用户不能删除和修改这个目录


也就是说,在/tmp目录中,只有文件的拥有者和root才能对其进行修改和删除,其他用户则不行,避免了上面所说

的问题产生。用途一般是把一个文件夹的的权限都打开,然后来共享文件,象/tmp目录一样。


***************************************************************************


02 权限(用户组以及文件的权限)(特殊权限位)特权位s和粘贴位t的记忆点:


     特权位s主要是让普通用户临时执行属主或者属组的权限,或者root的权限

     

     粘贴位t主要是在同一个目录下除了属主和root用户外,其他任何人都不能删除和修


改该目录下的所有文件


***************************************************************************

3、如何设置以上权限位:

  setuid:chmod u+s xxx

 setgid:  chmod g+s xxx

 stick bit : chmod o+t xxx

suid的二进制串为:100,换算十进制为:4

guid的二进制串为:010,换算:2

stick bit 二进制串:001,换算:1

于是也可以这样设:setuid:chmod 4755 xxx

setgid:chmod 2755 xxx

stick bit:chmod 1755 xxx


特别的:


在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那代表此文件的特殊权限没有生效,

是因为你尚未给它对应用户的x权限


用数字表示时: 前三位上加s    4

           中间三位加s    2
                               

          后三位加t        1