Linux基础--权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础--权限管理相关的知识,希望对你有一定的参考价值。

1. 权限模型

  • linux中一切皆文件,权限即读(r)、写(w)、执行(x)这些文件的权限;

  • 而同时权限又与用户密不可分,权限即某个文件的属主(owner),属组(group),以及不在组内的其他用户(other)分别对此文件的具有的操作权限。

  • 另外,用户在linux中一切活动都是由进程来完成的,进程是用户的代理人,一般来说进程由哪个用户执行,该进程就拥有哪个用户的权限。


所以,在linux中的权限模型生效机制是,判断进程发起者是它想要访问的文件的属主、属组还是其他用户,是哪一类用户则以这类用户对此文件的权限来判断是否具有相应的操作权限,有权限则生效,没权限则拒绝。(使用"su -c"来运行的进程,拥有变换身份后的用户的权限。)


2. 普通权限r/w/x

这个比较容易理解,这里不做介绍,可以参照此[链接]


3. 特殊权限suid/sgid/sticky bit


3.1 suid/sgid


众所周知,/etc/passwd文件存放的是所有用户的账号和基本信息,而用户口令则加密存放在/etc/shadow中。

像这样的文件不可能给普通用户写权限,而/etc/shadow更是什么权限都没给,但是每个用户都可以使用/bin/passwd命令来更改自己的密码,这就是通过suid实现的,-rwsr-xr-x中的s。

[[email protected] ~]$ ls -l /bin/passwd /etc/passwd /etc/shadow
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd
-rw-r--r--  1 root root  1763 Mar  8 07:32 /etc/passwd
----------  1 root root  1144 Mar  8 10:16 /etc/shadow


suid 即让其他用户不必变换至属主身份便可以在运行某进程时拥有该进程程序文件属主的权限。

[[email protected] tmp]$ ls -l test test.sh
-rw------- 1 twoyang twoyang 12 Mar 12 11:06 test
-rwsr-xr-x 1 twoyang twoyang 32 Mar 12 11:10 test.sh
[[email protected] tmp]$ cat test
cat: test: Permission denied
[[email protected] tmp]$ cat test.sh 
#!/bin/bash
echo test
[[email protected] tmp]$ ./test.sh 
test
[[email protected] tmp]$


sgid同理,不过是针对组来讲的。即让其他用户不必变换至属组身份便可以在运行某进程时拥有该进程程序文件属组的权限。


3.2 sticky bit


/tmp目录是所有用户共有的临时文件夹,所有用户都拥有读写权限。当一个文件夹中的文件所有人都可以读写,就会存在文件被别人误删的问题。但在可以看到在/tmp中却并不存在这样的问题,这就是通过sticky bit实现的,drwxrwxrwt中的t。

[[email protected] ~]# ls -dl /tmp/
drwxrwxrwt. 13 root root 4096 Mar 12 11:19 /tmp/
[[email protected] ~]# su - mageedu
[[email protected] tmp]$ ls -l
total 1
-rwxrwxrwx   1 twoyang twoyang   12 Mar 12 11:06 test
[[email protected] tmp]$ rm -f test
rm: cannot remove ‘test’: Operation not permitted


sticky bit 即除了目录的属主和root用户有权限删除此目录下的文件,其它用户不能删除属主不是自己的文件。但是修改是可以的,只要文件属主给了此文件其它用户可以修改的权限。


3.3 设置特殊权限suid/sgid/sticky bit


增加特殊权限:

suid:chmod u+s xxx
sgid: chmod g+s xxx
sticky bit : chmod o+t xxx

删除特殊权限

suid:chmod u-s xxx
sgid: chmod g-s xxx
sticky bit : chmod o-t xxx


suid/sgid/sticky bit组成一组权限位,类似r/w/x,所以也可以这样增加特殊权限。

suid:chmod 4755 xxx
sgid: chmod 2755 xxx
sticky bit : chmod 1777 xxx


这时候,常常会联想到umask设置为四位,比如0022,认为第一位也是跟特殊权限相关,其实不是,第一位的0只是表示后面三位是八进制数。

[[email protected] ~]# umask 1022
-bash: umask: 1022: octal number out of range

可见,1002被解析成了10, 0, 2三个数字,而10不是8进制数值,因此出现了上述所示的错误:octal number out of range。


最后,在一些文件设置了特殊权限后,字母不是小写的s或者t,而是大写的S和T,那代表此文件的特殊权限没有生效,是因为你尚未给它对应用户的x权限。

[[email protected] tmp]$ ls -dl testdir/ test.sh 
drwxr--r-T 2 twoyang twoyang 6 Mar 12 23:08 testdir/
-rwSr--r-- 1 twoyang twoyang 0 Mar 12 23:09 test.sh
[[email protected] tmp]$ chmod u+x test.sh 
[[email protected] tmp]$ chmod o+x testdir/
[[email protected] tmp]$ ls -dl testdir/ test.sh 
drwxr--r-t 2 twoyang twoyang 6 Mar 12 23:08 testdir/
-rwsr--r-- 1 twoyang twoyang 0 Mar 12 23:09 test.sh


本文出自 “knfprex3a29” 博客,请务必保留此出处http://knfprex3a29.blog.51cto.com/9761463/1750475

以上是关于Linux基础--权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux权限管理总结--基础权限

linux基础操作----权限管理

linux基础:用户与组,权限管理

Linux 基础与应用教程 003(权限管理命令简单基础)

linux基础命令之权限管理命令

Linux基础篇(12)小白如何学习Linux?权限管理之文件权限