一、用户管理
root@gj \~\]# watch -n 1 "tail -n 3 /etc/passwd /etc/group ; ls -l /home" //监控这两个文件的内容和/home目录下的文件和子目录的详细信息 关于用户建立的命令 useradd test //建立用户test userdel -r test //表示删除用户test useradd -M -s /sbin/nologin -d /mnt test -M:表示建立用户时不建立用户家目录 -s:表示用户登录时使用的shell,`sbin/nologin` 是一个特殊的 shell,使用它作为登录 shell 的用户无法直接登录系统,常被用于创建系统用户或者服务用户,比如用于运行特定服务进程的用户。 -d:指定用户的主目录 ## 二、权限问题 ## 1、T权限 > \[root@gj \~\]# mkdir /dd/pub > > \[root@gj \~\]# chmod 777 /dd/pub > > \[root@gj \~\]# useradd lee > > \[root@gj \~\]# useradd timinglee > > \[root@gj \~\]# su - lee > > \[lee@gj \~\]$ touch /dd/pub/leefile > > \[root@gj \~\]# su - timinglee > > \[timinglee@gj \~\]$ touch /dd/pub/timingleefile > > \[timinglee@gj \~\]$ rm -rf /dd/pub/leefile //这里可以删除不是自己创建的文件,这太不合理了 > > \[root@gj \~\]# chmod o+t /dd/pub/ > > //**`o+t`** :`o` 代表其他用户(`others`),即不属于文件所有者和所属组的用户;`+t` 是给指定对象添加 `t` 权限,也就是粘滞位(`sticky bit`) > > 测试 > > \[root@gj \~\]# su - lee > > \[lee@gj \~\]$ touch /dd/pub/leefile > > \[lee@gj \~\]$ rm -rf /dd/pub/leefile > > \[lee@gj \~\]$ rm -rf /dd/pub/timingleefile > > rm: cannot remove '/dd/pub/timingleefile': Operation not permitted //发现操作被拒绝,我们的目的达到 ### 2、 sgid/suid权限 没有给权限前 > \[root@gj \~\]# ls -l /bin/cat > > -rwxr-sr-x. 1 root root 36496 Aug 16 2024 /bin/cat  > root@gj \~\]# chmod g+s /bin/cat > `g` 代表所属组(`group`),`+s` 表示添加 Set GID 权限。Set GID 权限有两种不同的表现,对于目录和文件作用不同。当用于文件时,意味着执行这个文件时,进程的有效组 ID 会变成文件所属组的 ID。  > \[root@gj \~\]# chmod u+s /bin/cat > > `u` 代表文件的所有者(`user`),`+s` 表示添加 Set UID 权限。当一个可执行文件被设置了 Set UID 权限后,任何用户在执行该文件时,进程的有效用户 ID 会变成文件所有者的用户 ID,而不是执行该命令的用户的 ID。 > > 当任意用户执行 `/bin/cat` 命令时,该进程的有效用户 ID 会变为 `/bin/cat` 文件所有者的用户 ID。通常 `/bin/cat` 文件的所有者是 `root`,所以设置该权限后,任何用户执行 `cat` 命令时,进程都会以 `root` 用户的身份运行。你可以使用 `ls -l /bin/cat` 命令查看文件权限的变化,设置 Set UID 权限后,所有者权限的执行位会显示为 `s` 或 `S` 