亲宝软件园·资讯

展开

2018年7月28日第三节课笔记——权限、软硬链接及find

人气:0

 

内容摘要

  • 隐藏权限lsattr_chattr
  • 特殊权限set_uid
  • 特殊权限set_gid
  •  特殊权限stick_bit
  • 软链接
  • 硬链接
  • 查询命令find
  • 文件后缀
  • 第三次课堂笔记和扩展
  • 涉及命令:chattr(设置隐藏权限)、lsattr(查看隐藏权限)、chmod(文件目录的权限)、ln(创建软链接或硬链接)、which(通过环境变量PATH查询路径)、whereis(在准备好的库中查询文件)、locate(查询相关文件路径)、find(查询文件路径)、stat(显示文件的信息如创建时间)、sz(将linux下的文件传输到Windows下)、rz(将windows下的文件传输到linux下)、echo(输出文本信息)、date(日期和时间相关的信息)、setfacl(用于增加或者修改文件的扩展权限),getfacl(用于显示文件的扩展权限);

一、隐藏权限lsattr_chattr

chattr 设置隐藏权限

  • 命令chattr +i 1.txt设置目录或文件无法被更改和删除。(无法再目标目录下新建文件,但能更改已存在的文件)
  • 命令chattr +a 1.txt设置目录或文件只能追加内容,无法删除或更改已有内容和文件名称。(当目标为目录时,依然可以在目录下新建文件或目录并能更改文件内容。)

lsattr 查看隐藏权限

  • 命令lsattr -d 仅查看目标目录本身的隐藏权限。不加-d则显示目标目录下的目录和文件的隐藏权限。
  • 命令lsattr -R 查看目标目录及目录下的所有文件的隐藏权限。
  • 命令lsattr -a  查看目标目录及目录下的全部文件(包括隐藏文件)的隐藏权限。

二、特殊权限set_uid

set_uid的定义(权限背景色红色):set_uid使普通用户临时拥有该文件所有者(root)的权限,该权限只能给二进制文件,赋予普通文件没有意义(也能加,但是没有实际意义)。

  • 使用chmod为目标命令添加s(即set_uid)权限,让普通用户使用ls命令查看/root/目录时临时拥有root用户权限,使得普通用户能够查看/root/目录。(不赋予ls命令set_uid权限时,无法查看/root/目录)

  1. 权限栏显示大写S时,表示没有x权限,小写s则表示有X权限。(实际没有区别)

三、特殊权限set_gid

set_gid的定义(权限背景色黄色):set_gid可以作用在文件和目录,当作用在文件时可以使普通用户临时拥有该文件用户组的权限。当作用在目录时,你创建的子目录和子文件,它们的所属组和该目录的所属组保持一致(不设置set_gid权限时,在root所属组下依然为root所属组)。。。

  • 使用chmod为目标命令添加s(即set_gid)权限,让普通用户使用ls命令查看/root/目录时临时拥有所属组的权限,使得普通用户能够查看/root/目录。(效果类似set_uid只是从root用户权限变为root用户组的权限)

四、特殊权限stick_bit

stick_bit的定义(权限背景色绿色):stick_bit就是防删除位权限,防止其他用户删除文件(当该文件权限为777时可以更改但依然不能删除)。

  • 命令chmod  o+t  /tmp/user1  为目录添加stick_bit权限.

五、软连接

软链接的使用方式:

  • 软链接的使用方式:ln -s+目标文件或目录地址+软链接地址

  • 在同目录下的软链接,会显示相对路径(目标文件移动或删除后,会导致软链接报错。)目标文件1.txt被删除后,2.txt显示为红色报错。

六、硬链接

硬链接的使用方式

  • 硬链接的两个文件相互的为对方的硬链接。硬链接的inode号是相同的,并不会占用双份空间。硬链接不能对目录使用,并且无法跨分区做硬链接。
  • 硬链接的使用方式:ln+目标文件地址+硬链接文件地址    目标文件1.txt,硬链接文件2.txt,查看两个文件的inode号显示相同,如图:

  • 硬链接的文件可以理解为一张皮,只需要有一份相同inode的文件即可。
  • 只删除目标文件或硬链接文件其中一个,并不会导致文件报错。(于软链接最大的区别之一)

七、查询命令find

查找文件的几个常用命令:

  • 命令which  通过环境变量PATH查询路径
  • 命令whereis 事先在准备好的库中查询,定期更新后才能找到文件。(局限性交大)
  • 命令locate   需安装  yum install -y mlocate并使用updatedb(也会自动更新)手动生成db(文件目录)文件后才能查询相关文件路径(模糊查找)。

find命令的几个常用方法:

  • 使用stat可以查询文件的详细信息,如创建、修改、访问等信息。
  • 命令find+路径+-name+文件名称” 可以搜索所有的文件类型或目录
  • 命令find+路径+-type+类型+-name+文件名称” 可以搜索指定的类型。文件类型:d=目录、f=普通文件、l=软链接文件、b=设备块文件、c=字符串设备文件、s=socket文件。
  • 选项-o 在条件之间表示或者、-ctime写入或更改inode属性的时间、-mtime更改文件内容或创建文件的时间、-atime最近访问或执行的时间、(使用time搜索时,可跟+1-1分别表示1天以上和1天一下。)。如图:

  • 选项-inum通过inode号查询硬链接文件。如图:

  • 选项-mmin+-分钟搜索一定时间内的文件。如图:

  • 选项-size+文件大小(例:+10k、-10M)。如图:
  • 选项-exec后可以使用ls、mv等命令。{}(列出的某个文件)+\;   如图:

解析:find查询文件地址,/root/目标目录,,-type f 文件类型为普通文件,-mmin -150小于150分钟,-exec mv {} {}.bak \;搜索后的文件更改后缀为.bak。

八、文件后缀

  • 在linux下也是有后缀名的,但并不能代表这个文件的类型。
  • 在linux下大家约定俗成的让相同类型的文件,使用相同的后缀名。
  • 一般来讲在linux下,后缀名为1.sh代表一个shell脚本、2.gz代表一个压缩包、3.conf代表一个配置文件。
  • 默认的系统语言:echo $LANG  

九、linux和windows的文件互传

必须在xshell或securecrt下才能传输,首先安装yum install -y lrzsz后才能传输。

  • 命令sz 命令可以将linux下的文件传输到Windows下。
  • 命令rz 命令可以将Windows下的文件传输到linux下。
  • 命令date 时间信息。
  • 命令echo 输出指定文本信息。

课堂笔记和扩展:

  • inode 是用来表示文件唯一性的。(类似SFZ,多个文件同时拥有一个inode号意味着他们可以被视为是同一份文件)
  • 命令which 搜索命令路径时,就是在PATH下的路径查询。
  • 在日常使用一些复杂路径或命令时可以使用类似的方式简化操作:alias abc="systemctl restart network"  (为命令设置别名)    ln /root/123/abc /bin/abc (为文件设置软链接,可以通过直接访问软链接文件来达到减少输入的目的)
  • cp命令不会创建目录。 cp命令复制时也可以更改文件或目录的名字。

十、facl 文件系统访问控制列表

利用文件扩展属性保存额外的访问控制权限,你可以增加权限给其他用户或组别,而不单只是简单 的"other"或者是拥有者不存在的组别。基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。

  • 查看分配完的acl: getfacl 1.txt 

  • 设置指定用户的权限:setfacl -m u:zhaoyujie:rwx 1.txt        (u即表示用户的意思)

  • 设置指定用户组的权限:setfacl -m g:zhaoyujie:rwx 1.txt    (g即表示group用户组的意思)

  • 取消设定的alc权限:setfalc -x u:zhaoyujie 1.txt      或    setfalc -x g:zhaoyujie 1.txt
  • 设置alc权限的文件,在使用ls查看时,会在权限末尾添加一个+号。如图:

十一、将用户限制在指定的家目录下:

  • 使用 mkdir 命令开始创建 chroot 监狱:mkdir -p /home/test

  •  对于交互式会话,这需要至少一个 shell,通常为 sh 和基本的 /dev 节点,例如 null、zero、stdin、stdout、stderr 和 tty 设备:ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

  • 现在,使用 mknod 命令创建 /dev 下的文件。在下面的命令中,-m 标志用来指定文件权限位,c 意思是字符文件,两个数字分别是文件指向的主要号和次要号。

  1. mkdir -p /home/test/dev/
  2. cd /home/test/dev/
  3. mknod -m 666 null c 1 3
  4. mknod -m 666 tty c 5 0
  5. mknod -m 666 zero c 1 5
  6. mknod -m 666 random c 1 8

  •  在此之后,在 chroot 监狱中设置合适的权限。注意 chroot 监狱和它的子目录以及子文件必须被 root 用户所有,并且对普通用户或用户组不可写:

  1. chown root:root /home/test/
  2. chmod 755 /home/test
  3. ls -ld /home/test
  • 为 SSH chroot 监狱设置交互式 shell,创建 bin 目录并复制 /bin/bash 到 bin 中:
  1. mkdir /home/test/bin
  2. cp  /bin/bash /home/test/bin/
  • 现在,识别 bash 所需的共享库,如下所示复制它们到 lib64 中:
  1. ldd /bin/bash
  2. mkdir -p /home/test/lib64
  3. cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

  • 现在,使用 useradd 命令[3]创建 SSH 用户,并设置安全密码:
  1.  useradd tecmint
  2.  passwd tecmint
  •  创建 chroot 监狱通用配置目录 /home/test/etc 并复制已更新的账号文件(/etc/passwd 和 /etc/group)到这个目录中:
  1. mkdir /home/test/etc
  2. cp -vf /etc/{passwd,group} /home/test/etc/

  • 配置 SSH 来使用 chroot 监狱, 现在打开 sshd_config 文件。

  1. vi /etc/ssh/sshd_config
  2. 定义要使用 chroot 监狱的用户Match User tecmint# 指定 chroot 监狱ChrootDirectory /home/test

  • 保存文件并退出,重启 sshd 服务:systemctl restart sshd

  • 从前面的步骤中,我们可以看到用户被锁定在了 root 目录,我们可以为 SSH 用户创建一个主目录(以及为所有将来的用户这么做):

    1. mkdir -p /home/test/home/tecmint

    2.chown -R tecmint:tecmint /home/test/home/tecmint

    3.chmod -R 700 /home/test/home/tecmint

  • 接下来,在 bin 目录中安装几个用户命令,如 ls、date、mkdir:

  1. cp -v /bin/ls /home/test/bin/
  2. cp -v /bin/date /home/test/bin/
  3. cp -v /bin/mkdir /home/test/bin/

  • 接下来,检查上面命令的共享库并将它们移到 chroot 监狱的库目录中:

  1. ldd /bin/ls
  2. cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

加载全部内容

相关教程
猜你喜欢
用户评论