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 软硬连接
原文地址:http://ainfyx.blog.51cto.com/724466/1977854