码迷,mamicode.com
首页 > 系统相关 > 详细

linux set uid set gid stick bit   软硬连接

时间:2017-10-31 23:48:00      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:linux   setgid   setuid   

  1. 首先来看一个,特殊的权限 set uid

root@nfyx:/home/nfyx/test/umask# which passwd
/usr/bin/passwd
root@nfyx:/home/nfyx/test/umask# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 5月  17 07:37 /usr/bin/passwd*
root@nfyx:/home/nfyx/test/umask#

这里的s权限, 是什么情况?

那么,这里要学习的就是set_uid

产生原因,普通用户对一些特殊可执行文件的执行。

比如: 自己可以修改自己的密码,而不能修改其它用户的密码,但root用户又可以修改任何用户的密码。

这就可以理解为权限的特殊性。

前提一般都是加在二进制文件上的(理解为可执行文件),加在其它的文件或目录,是没什么意义的!

案例:

平时ls命令,只能看自己所创的文件或目录,而无法查看root目录下的文件:

nfyx@nfyx:~/test/umask$ ls /root/
ls: 无法打开目录‘/root/‘: 权限不够
nfyx@nfyx:~/test/umask$
 

明显权限不够:

nfyx@nfyx:~/test/umask$ su
密码:
root@nfyx:/home/nfyx/test/umask# chmod u+s /bin/ls
root@nfyx:/home/nfyx/test/umask# ll /bin/ls
-rwsr-xr-x 1 root root 126584 3月   3  2017 /bin/ls*
root@nfyx:/home/nfyx/test/umask# su nfyx
nfyx@nfyx:~/test/umask$ ls /root/
Desktop
nfyx@nfyx:~/test/umask$
这里很明显可以,看到root 目录下的文件了。

这里的chmod u+s /bin/ls

是把/bin/lis 的user加一个supper 权限,即加一个超级用户的权限。

要取消,就用

chmod u-s /bin/ls

root@nfyx:/home/nfyx/test/umask# chmod u-s /bin/ls
root@nfyx:/home/nfyx/test/umask# ll /bin/ls
-rwxr-xr-x 1 root root 126584 3月   3  2017 /bin/ls*
root@nfyx:/home/nfyx/test/umask#

这里,就把 /bin/ls  里面的s权限给取消了!

(还可以用  chmod  u=rws  /bin/ls 命令)

2 .  set gid 权限。

chmod g+s   /bin/ls

chmod g-s   /bin/ls

默认情况下,和set uid 所起的作用是一样的。

特殊用法,就是在目录改变用户组之后,下面再新建的,文件或目录都会和改变的用户组一样。

案例:

root@nfyx:/home/nfyx/test/setuid# chmod g+s setgid/
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/
drwxr-sr-x 2 root root 4096 10月 31 14:24 setgid/
root@nfyx:/home/nfyx/test/setuid# chown :nfyx setgid/
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/
drwxr-sr-x 2 root nfyx 4096 10月 31 14:24 setgid/
root@nfyx:/home/nfyx/test/setuid# mkdir setgid/aa
root@nfyx:/home/nfyx/test/setuid# ls -ld setgid/aa/
drwxr-sr-x 2 root nfyx 4096 10月 31 14:26 setgid/aa/
root@nfyx:/home/nfyx/test/setuid# touch setgid/aa.txt
root@nfyx:/home/nfyx/test/setuid# ls -l setgid/aa.txt
-rw-r--r-- 1 root nfyx    0 10月 31 14:26 aa.txt
root@nfyx:/home/nfyx/test/setuid#

也是就说,一旦group设置了gid  那么,在改变目录用户组之后,在目录下,所创建的所有新文件和目录

都和已经改变的用户组一样!

若把gid  去掉,那么,所建的目录或文件,就属于,创建者所在的组!

如:

root@nfyx:/home/nfyx/test/setuid# chmod g-s setgid/
root@nfyx:/home/nfyx/test/setuid# ll -d setgid/
drwxr-xr-x 3 root nfyx 4096 10月 31 14:26 setgid//
root@nfyx:/home/nfyx/test/setuid# mkdir setgid/bb
root@nfyx:/home/nfyx/test/setuid# touch setgid/bb.txt
root@nfyx:/home/nfyx/test/setuid# ll setgid/
总用量 16
drwxr-xr-x 4 root nfyx 4096 10月 31 14:36 ./
drwxr-xr-x 3 root root 4096 10月 31 14:24 ../
drwxr-sr-x 2 root nfyx 4096 10月 31 14:26 aa/
-rw-r--r-- 1 root nfyx    0 10月 31 14:26 aa.txt
drwxr-xr-x 2 root root 4096 10月 31 14:36 bb/
-rw-r--r-- 1 root root    0 10月 31 14:36 bb.txt
root@nfyx:/home/nfyx/test/setuid#


3.stick bit

 先看一个 文件权限,如:

root@nfyx:/home/nfyx/test/setuid# ll -d /tmp/
drwxrwxrwt 14 root root 16384 10月 31 14:17 /tmp//

这里的权限有些不太一样,

这里的t 就是附加的防删除权限

因为,在/tmp目录下,有很多临时文件,大多权限都是777,为了防止其它用户,对其进行删除,

就多了一个粘贴位,即防删除权限,

一旦,文件或目录的权限是rwxrwxrwt,那么其它的用户,可读可写修改,但是,就是不能将其进行删除。

案例:

nfyx@nfyx:/$ ll -d /tmp/
drwxrwxrwt 14 root root 16384 10月 31 16:45 /tmp//
nfyx@nfyx:/$ rm -dR  /tmp/
rm: 无法删除‘/tmp/.Test-unix‘: 不允许的操作
rm: 无法删除‘/tmp/.ICE-unix‘: 不允许的操作
rm: 无法删除‘/tmp/.font-unix‘: 不允许的操作

按理说他有rwx权限,每一个用户都要以删的, 但是由于有一个粘贴位t,所以就无法删除它里面的文件.

3  软连接 硬连接

a 软连接

命令:ln  -s  souce  destians  (即 ln -s  源文件  目录文件)

nfyx@nfyx:~/test/link$ ls
nfyx@nfyx:~/test/link$ mkdir link
nfyx@nfyx:~/test/link$ ls
link
nfyx@nfyx:~/test/link$ ln -s link/  softlink
nfyx@nfyx:~/test/link$ ll
drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link/
nfyx@nfyx:~/test/link$
这样子,就做好了一个软连接(这相当于windows 的快捷方式 )

提示:尽量使用绝对路径做软连接。

b 硬连接

   命令: ln soure destians (与软连接不同的是,他们同用一个INODE号)

如:

nfyx@nfyx:~/test/link$ touch aa.txt
nfyx@nfyx:~/test/link$ ln aa.txt  bb.txt
nfyx@nfyx:~/test/link$ ll -i
总用量 12
1839330 drwxrwxr-x  3 nfyx nfyx 4096 10月 31 17:23 ./
1838567 drwxrwxr-x 11 nfyx nfyx 4096 10月 31 17:03 ../
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 aa.txt
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 bb.txt
1845100 drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
1839835 lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link//
nfyx@nfyx:~/test/link$ ln -s aa.txt  cc.txt
nfyx@nfyx:~/test/link$ ll -i
总用量 12
1839330 drwxrwxr-x  3 nfyx nfyx 4096 10月 31 17:23 ./
1838567 drwxrwxr-x 11 nfyx nfyx 4096 10月 31 17:03 ../
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 aa.txt
1849098 -rw-rw-r--  2 nfyx nfyx    0 10月 31 17:22 bb.txt
1849788 lrwxrwxrwx  1 nfyx nfyx    6 10月 31 17:23 cc.txt -> aa.txt
1845100 drwxrwxr-x  2 nfyx nfyx 4096 10月 31 17:04 link/
1839835 lrwxrwxrwx  1 nfyx nfyx    5 10月 31 17:04 softlink -> link/

也就是这两个文件用了同一个Inode号。

但是:(目录不允许做硬连接)

nfyx@nfyx:~/test/link$ ln link/ linkdir
ln: link/: 不允许将硬链接指向目录
nfyx@nfyx:~/test/link$

再次就是,硬连接,不能跨分区!因为,每个分区都有自己独立的Inode号(这样子,就会冲突了)

硬连接里面的,文件内容是相同的,

改一个文件的内容,其它硬连接文件的内容也会跟着改变。

硬连可以有很多个连接指向同一个文件,但是只要,还有一个连接指向,那么他的内容都仍然还在。

除非所有的文件都删除,那么,那个Inode号,才会被删除,这时,文件数据内容才会被删除。



附加:(find 命令)

find  -name  、-type   、-ctime  、 -mtime.

 find  /etc/  -name "*.conf" (通过名字,模糊查找)

find -type d   "111"  (d找目录)

find -type f   "cc.txt"  (f找文件)

find -type  f -mtime -1  -name "*.conf"  (小于1天的 +1 表示大于一天的)


find /etc/ -type f -mmin -60 -exec ls -lh {} \;  (找etc 下 的 文件 小于60分钟的,并 挨个显示出来)

find -inum  ###   (通过inode 号来查找相关的文件)

希望,大家能够理解!

2017.10.31

本文出自 “牛粪也香” 博客,请务必保留此出处http://ainfyx.blog.51cto.com/724466/1977854

linux set uid set gid stick bit   软硬连接

标签:linux   setgid   setuid   

原文地址:http://ainfyx.blog.51cto.com/724466/1977854

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!