一、set_uid

set_uid其实是一种特殊权限,我们看一个文件:

  1. [root@iZ25lzba47vZ ~]# ls -l /usr/bin/passwd
  2. -rwsr-xr-x. root root Jun /usr/bin/passwd

它的所有者的x权限位被s代替了。那么这个s代表什么意思呢?它代表执行这条命令的普通用户,能暂时拥有这个命令所有者的身份。

举个例子来说,我们可以通过passwd命令来修改密码。我们再来看看密码存放的文件:

  1. [root@iZ25lzba47vZ ~]# ls -l /etc/shadow
  2. ---------- root root Mar /etc/shadow

我们发现这个文件的权限为000,那么普通用户是怎么改的它呢?就是这个s权限。普通用户在执行这条命令时,临时有了root的身份。

同样的,我们知道普通用户是不能进入到root用户的家目录的。那么,如果我们给ls命令set_uid,应该可以实现吧。

  1. [root@iZ25lzba47vZ ~]# ls -l /usr/bin/ls
  2. -rwxr-xr-x. root root Jun /usr/bin/ls
  3. [root@iZ25lzba47vZ ~]# chmod u+s /usr/bin/ls
  4. [root@iZ25lzba47vZ ~]# !ls
  5. ls -l /usr/bin/ls
  6. -rwsr-xr-x. root root Jun /usr/bin/ls
  7. [root@iZ25lzba47vZ ~]# su ruanwenwu
  8. [ruanwenwu@iZ25lzba47vZ root]$ ls /root
  9. .ipt Application Document.pdf npm-debug.log ruanwenwu syncwithgit.sh
  10. .cap a.php a.txt iptables.bak oneinstack shellscripts

二、set_gid

set_gid作用在文件时的意义和set_uid基本一样,只是普通用户在执行它时获得的是文件的所属组的身份。

set_gid作用于目录时,目录下新建的文件和目录的组名都会和该目录一致:

  1. [root@iZ25lzba47vZ ~]# chown :ruanwenwu
  2. [root@iZ25lzba47vZ ~]# ls -ld
  3. drw-rwsrw- ruanwenwu ruanwenwu Oct :
  4. [root@iZ25lzba47vZ ~]# touch /.txt
  5. [root@iZ25lzba47vZ ~]# ls -l
  6. total
  7. -rw-r--r-- root ruanwenwu Oct : .txt
  8. drwxr-xr-x ruanwenwu ruanwenwu Oct :
  9. drwxrwxr-- root root Oct :
  10. -rw-rw-r-- root root Oct : .txt
  11. [root@iZ25lzba47vZ ~]#

发现设置了set_gid之后,在1目录下新建的1.txt的所属组变成了ruanwenwu。

三、stick_bit

防删除位。它的作用就是:我的文件你不能删除。但是你可以修改。/tmp/目录就有这个防删除位,在其他用户的可执行权限位的地方。

  1. [root@iZ25lzba47vZ ~]# ls -ld /tmp
  2. drwxrwxrwt. www www Oct : /tmp
  3. [root@iZ25lzba47vZ ~]#

现在我们用ruanwenwu这个用户创建一个文件,然后切换到test用户,看能不能删掉。

  1. [ruanwenwu@iZ25lzba47vZ tmp]$ ls -l ruanwenwu.txt
  2. -rw-rw-r-- ruanwenwu ruanwenwu Oct : ruanwenwu.txt
  3. [ruanwenwu@iZ25lzba47vZ tmp]$ passwd test
  4. passwd: Only root can specify a user name.
  5. [ruanwenwu@iZ25lzba47vZ tmp]$ su root
  6. Password:
  7. [root@iZ25lzba47vZ tmp]# passwd test
  8. Changing password for user test.
  9. New password:
  10. BAD PASSWORD: The password is shorter than characters
  11. Retype new password:
  12. passwd: all authentication tokens updated successfully.
  13. [root@iZ25lzba47vZ tmp]# su test
  14. [test@iZ25lzba47vZ tmp]$ rm -rf ruanwenwu.txt
  15. rm: cannot remove ruanwenwu.txt’: Operation not permitted

发现不能删除,现在我们删除掉/tmp/的stick_bit,然后再来试一次:

  1. [test@iZ25lzba47vZ tmp]$ chmod o-t /tmp
  2. chmod: changing permissions of ‘/tmp’: Operation not permitted
  3. [test@iZ25lzba47vZ tmp]$ su root
  4. Password:
  5. [root@iZ25lzba47vZ tmp]# chmod o-t /tmp/
  6. [root@iZ25lzba47vZ tmp]# ls -ld /tmp
  7. drwxrwxrwx. www www Oct : /tmp
  8. [root@iZ25lzba47vZ tmp]# su test
  9. [test@iZ25lzba47vZ tmp]$ rm -rf ruanwenwu.txt
  10. [test@iZ25lzba47vZ tmp]$ ls
  11. Aegis-<Guid(5A2C30A2-A87D-490A--6765EDAD7CBA)>
  12. iZ25lzba47vZ.root.history-timestamp
  13. iZ25lzba47vZ.ruanwenwu.history-timestamp
  14. iZ25lzba47vZ.test.history-timestamp
  15. mysql.sock
  16. systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm

发现去掉防删除位之后,test用户可以删除ruanwenwu的文件了。

四、软连接

软链接相当于windows里的快捷方式。他的生成方式:

  1. [root@iZ25lzba47vZ tmp]# ln -s /tmp/a.txt /ccc.txt
  2. [root@iZ25lzba47vZ tmp]# ls -l /ccc.txt
  3. lrwxrwxrwx root root Oct : /ccc.txt -> /tmp/a.txt

软连接的特点是,占用空间小。在生成软连接时,尽量使用绝对路径,这样在移动软连接时,链接就不会失效。

五、硬链接

硬链接和原来的文件占用同一个inode地址:

  1. [root@iZ25lzba47vZ tmp]# ln a.txt c.txt
  2. [root@iZ25lzba47vZ tmp]# ls -l ./
  3. total
  4. srwxr-xr-x root root Oct : Aegis-<Guid(5A2C30A2-A87D-490A--6765EDAD7CBA)>
  5. -rw-rw-r-- test test Oct : a.txt
  6. lrwxrwxrwx test test Oct : b.txt -> a.txt
  7. -rw-rw-r-- test test Oct : c.txt
  8. -rw-r--r-- root root Oct : iZ25lzba47vZ.root.history-timestamp
  9. -rw-rw-r-- ruanwenwu ruanwenwu Oct : iZ25lzba47vZ.ruanwenwu.history-timestamp
  10. -rw-rw-r-- test test Oct : iZ25lzba47vZ.test.history-timestamp
  11. srwxrwxrwx mysql mysql Oct : mysql.sock
  12. -rw------- www www Oct : sess_vi5k84ucsecldno3kg6edqdh72
  13. drwx------ www www May systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm
  14. [root@iZ25lzba47vZ tmp]# ls -i ./
  15. Aegis-<Guid(5A2C30A2-A87D-490A--6765EDAD7CBA)>
  16. a.txt
  17. b.txt
  18. c.txt
  19. iZ25lzba47vZ.root.history-timestamp
  20. iZ25lzba47vZ.ruanwenwu.history-timestamp
  21. iZ25lzba47vZ.test.history-timestamp
  22. mysql.sock
  23. sess_vi5k84ucsecldno3kg6edqdh72
  24. systemd-private-39567547dfdf4a37b00906a534c87627-ntpd.service-QxSGFm
  25. [root@iZ25lzba47vZ tmp]# ls -i a.txt c.txt
  26. a.txt c.txt

如果我们删除其中一个文件,另外一个文件会受影响吗?

  1. [root@iZ25lzba47vZ tmp]# rm -rf a.txt
  2. [root@iZ25lzba47vZ tmp]# ls -l c.txt
  3. -rw-rw-r-- test test Oct : c.txt

发现,并没有影响到另外一个文件。

目录是不能做硬链接的,因为目录有自己的inode体系。

硬链接不能跨分区,因为每个分区都有自己的inode体系。

linux学习(九)set_uid、set_gid、stick_bit、软链接、硬链接的更多相关文章

  1. Linux总结(十二)set_uid set_gid stic_bit 软链接 硬链接

    一 set_uid 之前我们修改普通用户的登陆密码,都是以管理员身份在操作,比如我们在lv账户下,我们使用sudo passwd lv 重置lv账户密码,此时我们直接拿到root权限忽略掉了文件权限的 ...

  2. linux下创建和删除软、硬链接

    linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...

  3. windows中的软链接硬链接等

    学校嘛,有些时候还是得逆逆上网客户端啥的,并且学校的不少工作,这Windows的需求还是挺强的,之前Win10的体验并不是太好,不过时隔这么久,打算从7升级到10了,恰好系统也该换了. 首先是命令行的 ...

  4. Linux学习(一):软链接和硬链接

    今天起,决定开始自学Linux命令及Shell脚本,并用Linux学习(命令行,Shell及其他知识点)这一系列记录下自己的心路历程,内容不分先后,只记录自己觉得有必要的,简单的就不记了! 第一个知识 ...

  5. linux文件系统软链接硬链接

    引子 目前,UNIX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统).ext3.ext4.ZFS和Reiserfs等等. 不论哪一种文件系统,总是需要存储数据.硬盘的最小存储单位是扇 ...

  6. Linux 软链接 硬链接 ln命令(繁杂版)

    注意:创建软连接的时候,要用绝对路径!!! 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln - ...

  7. Linux 软链接 硬链接 ln命令(简约说明版)

    注意:路径使用绝对路径!! 解决方法: 当我们需要在不同的目录下用到同一个文件时,会用到以下命令. 命令:ln 作用:为某一个文件在另外一个位置建立一个同步的链接 语法:ln [option] 源文件 ...

  8. Linux软链接硬链接的区别

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  9. linux 软链接 硬链接

    查看文件sun.txt   加上参数i 是显示节点 inode [root@bogon test]# ls -li sun.txt 10006225 -rw-r--r--. 1 root root 0 ...

  10. Linux下创建和删除软、硬链接 可临时处理空间不足

    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. ...

随机推荐

  1. JVM菜鸟进阶高手之路三

    转载请注明原创出处,谢谢! 笨神大大分享: 小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法. -XX:MaxTenuringThreshold,这个参 ...

  2. C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended

    c3p0的出现,是为了大大提高应用程序和数据库之间访问效率的. 它的特性: 编码的简单易用 连接的复用 连接的管理 今天在配置C3p0的时候出现了这个warn   原因是因为要验证SSL Wed Se ...

  3. Java开发中遇到的问题

    head丢失 html的dtd不对 Integer数据类型 使用==比较 这个肯定错(事后才知道) sql语句处理分组的时候,在本地服务使用没问题,在服务器上出现sql异常 group by语句规范, ...

  4. sql语句增删改查与子查询

    修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...

  5. web.xml中servlet-mapping的配置

    <servlet-mapping>元素在Servlet和URL样式之间定义一个映射.它包含了两个子元素<servlet- name>和<url-pattern>,& ...

  6. 电脑IP地址被占用如何释放?

    回车后,关机,等待5分钟左右再开机,就释放掉了.

  7. KM算法的应用

    HDU2255 模板     难度x HDU2282 思维     难度XXx HDU3722 模板     难度X HDU3395 模版 HDU1533 最小值模型 难度x HDU2853 HDU3 ...

  8. Vue阻止冒泡

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. ssm搭建报错

    在搭建ssm框架时候踩得坑:1.对于拦截器url-parttern的设置:第一次设置的是/** 本以为这个是表示拦截所有,没想到这是错误的写法,正确的写法是/    启动项目不会报错,但是会出现404 ...

  10. ovs2.7 在系统重启后,再次使用时提示数据库无法连接的问题。

    问题现象如下,ovs开始安装后,对ovs的操作是正常的,但是,现在系统重启后,OVS的操作第一条命令就失败,如下: 问题解决方法: 参考  http://blog.csdn.net/xyq54/art ...