linux文件权限(二)

简介:
linux中还有几个特殊的权限,比如SUID,SGID。
先说一下SUID.举个例子,你一个朋友买了辆汽车,他跟你约定好,你可以用他的车运东西,但是只能运你自己的东西,不能运他的东西。用权限应该怎么表示呢?不考虑你们两个对车的维修权以及改装权。你们两个同时拥有这辆车的使用权。
SUID是用来做什么的呢?以上面的例子说明,给车加上SUID权限,如果你用了这辆车,那么就可以运车主的东西。也就是说,你用车的时候车把你当成了车主,所以你能运车主的东西。当然,这个权限需要车主来决定。

举个例子:
用户a创建了test.c,test.txt,test.c生成的程序用来读test.txt
权限分别为:
-rwx---rwx   test.c a a
-r-x---r-x test.out(可执行文件)a a
-rw----r-- test.txt a a
当用户a执行test.out时,可以读test.txt
由于test.out对其他用户可读可执行,假设有一用户b,不与a一个组。
用户b创建了一个文件testb.txt,权限为
-rw----r-- testb.txt b b
那么用户b执行test.out时,若读入的文件为testb.txt,则明显可读,相当于用别人的车运自己的东西。
如果输入文件为test.txt,也可读,因为test.txt对其他用户有读权限。假如test.txt的权限为-rw-------,那就会拒绝访问,也就是只能用别人的车,不能运他的东西。
怎么才能让b用a的车而a的车却把b当成a呢?
以a用户登录chmod u+s test.out
a在告诉别人,你们尽管用我的车吧,他们会把你当成我。于是,即使test.txt对b无权限。当b执行test.out时,输入文件是 test.txt,不会出现拒绝访问,因为test.out把b当成了a,在检查权限时,按a对test.txt的权限检查,肯定可以访问。

说了这么多,这个SUID到底有什么用呢?
再举个例子:

切换到root
niuxinli@niuxinli-desktop:~$ sudo su
[sudo] password for niuxinli:
root建立文件夹11111
root@niuxinli-desktop:/home/niuxinli# mkdir 11111
改变权限,改为只有root对此文件夹有权限
root@niuxinli-desktop:/home/niuxinli# ls -l |grep 11111
drwxr-xr-x  2 root     root         4096 2009-10-10 19:49 11111
root@niuxinli-desktop:/home/niuxinli# chmod 700 11111
root@niuxinli-desktop:/home/niuxinli# ls -l |grep 11111
drwx------  2 root     root         4096 2009-10-10 19:49 11111
root@niuxinli-desktop:/home/niuxinli# cd 11111
root@niuxinli-desktop:/home/niuxinli/11111# vi 12
root@niuxinli-desktop:/home/niuxinli/11111# exit
exit

这时,我们想在niuxinli用户下看11111内的东西,访问被拒绝。
niuxinli@niuxinli-desktop:~$ ls -l 11111
ls: 无法打开目录11111: Permission denied
如果不修改权限,而且不知道root密码,怎么访问呢?
在这里,root是车主,11111是车主的货,我们只要让车当我们是root就行了。车是哪个呢?对了,就是ls
root@niuxinli-desktop:/home/niuxinli# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
root@niuxinli-desktop:/home/niuxinli# chmod u+s /bin/ls
root@niuxinli-desktop:/home/niuxinli# ls -l /bin/ls
-rwsr-xr-x 1 root root 96216 2008-06-27 08:31  /bin/ls
这时我们发现,/bin/ls的权限多了个s.再用niuxinli访问
niuxinli@niuxinli-desktop:~$ ls -l 11111
总用量 4
-rw-r--r-- 1 root root 9 2009-10-10 19:52 12
虽然niuxinli还是对11111无权限
niuxinli@niuxinli-desktop:~$ ls -l|grep 11111
drwx------  2 root     root         4096 2009-10-10 19:52 11111
呵呵,这是很危险的,你会发现具有suid权限的文件都变红了,表示警告,此文件危险,还是赶紧去掉s吧。
niuxinli@niuxinli-desktop:~$ ls -l|grep 11111
drwx------  2 root     root         4096 2009-10-10 19:52 11111

SUID的作用,就是让普通用户可以具有root的权限。但是上面的例子似乎还没说明他的重要性。
niuxinli@niuxinli-desktop:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 37084 2009-04-04 13:49  /usr/bin/passwd

niuxinli@niuxinli-desktop:~$ ls -l /bin/ping
-rwsr-xr-x 1 root root 30856 2007-12-11 01:33  /bin/ping

你会发现上面两个可执行文件全具有s权限,都是红色显示。因为普通用户改密码是不用root密码,但是passwd要修改passwd文件,里面保存这用户信息,而这个文件的所有者是root,所以用到了s权限,同样,ping程序要访问一系列root的文件,所以也具有s权限,当然,有s权限的还有很多。同样,SGID也不难理解,同一个性质的。

另外,脚本有了s权限也没用,因为脚本调用的其实是一个个程序。



本文转自nxlhero 51CTO博客,原文链接:http://blog.51cto.com/nxlhero/210915,如需转载请自行联系原作者

相关文章
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
22天前
|
Linux 数据安全/隐私保护 Windows
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
30 0
|
24天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
28天前
|
Shell Linux API
【Shell 命令集合 备份压缩 】Linux 解压缩文件 unzip命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解压缩文件 unzip命令 使用指南
49 0
|
17天前
|
人工智能 安全 Linux
【Linux】Linux之间如何互传文件(详细讲解)
【Linux】Linux之间如何互传文件(详细讲解)
|
28天前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
【Shell 命令集合 系统设置 】Linux 创建Kickstart文件mkkickstart命令 使用指南
31 0
|
28天前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
【Shell 命令集合 备份压缩 】Linux 解码uuencode编码的文件 uudecode 命令 使用指南
29 0
|
28天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
48 0
|
28天前
|
存储 Shell Linux
【Shell 命令集合 备份压缩 】Linux 恢复由dump命令创建的备份文件 restore命令 使用指南
【Shell 命令集合 备份压缩 】Linux 恢复由dump命令创建的备份文件 restore命令 使用指南
33 0
|
22天前
|
安全 Ubuntu Shell
Linux之用户权限和文件权限详解
Linux之用户权限和文件权限详解