LInux学习笔记(1)

最近没事复习学习一下linux命令,有一些内容转载自 如何使用特殊权限:setuid、setgid 和 sticky 位

键盘操作

  • 光标移动

    • Ctrl + A 移动到行首
    • Ctrl + E 移动行尾
    • ctrl + L 清屏
    • ctrl + D 删除字符
  • 剪切和粘贴

    • ctrl + k 剪切光标到行尾的文本
    • Ctrl + U 剪切光标到行首的文本
    • Ctrl + Y 粘贴剪切的文本
  • history命令

命令的历史记录会保留在用户主目录下的 .bash_histroy文件中

!88 利用历史纪录扩展,可以使用88行的历史记录
Ctrl + R 开启逆向递增的搜索,当找到要执行的记录,按enter执行,按ctrl +j 复制到命令行 ,再次ctrl + R 会开启下一次搜索

硬连接和软连接

ln命令可以用来创建硬连接和软连接
ln file link 硬连接
ln -s item link 软连接

硬连接是UNIX用来创建连接的方式,符号连接相比更加先进

硬连接的特点
- 文件有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建(及不能引用自身文件系统以外的文件);
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。


若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名

如何判断两个文件是否是一个文件?通过inode号 ,即 ls -i 查看是否相同

ls -l 第二列 就是一个文件的硬连接数量



软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。
软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。


因此软链接特点:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接

硬连接和软连接示意图

一些特殊权限

通常,在类 Unix 操作系统上,文件和目录的所有权是基于文件创建者的默认 uid(user-id)和 gid(group-id)的。启动一个进程时也是同样的情况:它以启动它的用户的 uid 和 gid 运行,并具有相应的权限。这种行为可以通过使用特殊的权限进行改变。

setuid

当使用 setuid (设置用户 ID)位时,之前描述的行为会有所变化,所以当一个可执行文件启动时,它不会以启动它的用户的权限运行,而是以该文件所有者的权限运行。所以,如果在一个可执行文件上设置了 setuid 位,并且该文件由 root 拥有,当一个普通用户启动它时,它将以 root 权限运行。显然,如果 setuid 位使用不当的话,会带来潜在的安全风险。

使用 setuid 权限的可执行文件的例子是 passwd,我们可以使用该程序更改登录密码。我们可以通过使用 ls 命令来验证:

ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27768 Feb 11 2017 /bin/passwd

setuid 位是用 s 来表示的,代替了可执行位的 x。小写的 s 意味着可执行位已经被设置,否则你会看到一个大写的 S。大写的 S 发生于当设置了 setuid 或 setgid 位、但没有设置可执行位 x 时。它用于提醒用户这个矛盾的设置:如果可执行位未设置,则 setuid 和 setgid 位均不起作用。setuid 位对目录没有影响。

setgid

与 setuid 位不同,setgid (设置组 ID)位对文件和目录都有影响。在第一个例子中,具有 setgid 位设置的文件在执行时,不是以启动它的用户所属组的权限运行,而是以拥有该文件的组运行。换句话说,进程的 gid 与文件的 gid 相同。

当在一个目录上使用时,setgid 位与一般的行为不同,它使得在所述目录内创建的文件,不属于创建者所属的组,而是属于父目录所属的组。这个功能通常用于文件共享(目录所属组中的所有用户都可以修改文件)。就像 setuid 一样,setgid 位很容易识别(我们用 test 目录举例):

ls -ld test
drwxrwsr-x. 2 egdoc egdoc 4096 Nov 1 17:25 test

这次 s 出现在组权限的可执行位上。

sticky

sticky (粘连)位的工作方式有所不同:它对文件没有影响,但当它在目录上使用时,所述目录中的所有文件只能由其所有者删除或移动 一个典型的例子是 /tmp 目录,通常系统中的所有用户都对这个目录有写权限。所以,设置 sticky 位使用户不能删除其他用户的文件:

$ ls -ld /tmp
drwxrwxrwt. 14 root root 300 Nov 1 16:48 /tmp

在上面的例子中,目录所有者、组和其他用户对该目录具有完全的权限(读、写和执行)。
sticky 位在可执行位上用 t 来标识。同样,小写的 t 表示可执行权限 x也被设置了,否则你会看到一个大写字母 T

如何设置特殊权限位

就像普通的权限一样,特殊权限位可以用 chmod 命令设置,使用数字或者 ugo/rwx 格式。在前一种情况下,setuid、setgid 和 sticky 位分别由数值 4、2 和 1 表示。例如,如果我们要在目录上设置 setgid 位,我们可以运行:

$ chmod 2775 test
通过这个命令,我们在目录上设置了 setgid 位(由四个数字中的第一个数字标识),并给它的所有者和该目录所属组的所有用户赋予全部权限,对其他用户赋予读和执行的权限(目录上的执行位意味着用户可以 cd 进入该目录或使用 ls 列出其内容)。

另一种设置特殊权限位的方法是使用 ugo/rwx 语法:
$ chmod g+s test  这是设置setgid

要将 setuid 位应用于一个文件,我们可以运行:
$ chmod u+s file

要设置 sticky 位,可运行:
$ chmod o+t test

更改身份

su命令

  • su命令用来以另一个身份启动shell
su [-[l]] [user]
如果包含-l选项,那么得到shell会话将用于指定用户的登录shell界面。
意味着该用户的运行环境将被加载,工作目录也是改为该指定用户的主目录


如果没有指定user,默认为超级用户, -l 可以被写作为 -,那么以超级用户身份启动shell
su -

使用结束后,可以执行exit退出该shell环境

sudo命令

sudo命令类似于su命令,但有一些不同在于

  • 使用sudo命令不需要输入超级用户的密码,只需要输入自己的密码
  • 管理者可以通过配置,允许普通用户以别的身份执行命令(通常root),通常被限制为只能执行特定几条命令
  • sudo命令不需要启动全新的shell环境,而且也不需要加载另一个用户的运行环境
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值