最简单的加入用户useradd 用户名这样的命令不好,因为会新建一个组为这个用户。
这里提到一个问题,为什么普通用户没有/etc/shadow的写权限却能修改自己的密码呢。
因为 /user/bin/passwd命令有一个s权限。
权限码4setUID(针对所有者):当一个可执行文件或者程序被赋予了s权限的时候,它被执行的时候将是以该文件所有者的身份执行的,也就是说不管谁调用这个命令,他都是以root身份来执行,所以她可以更改shadow的密码。linux大部分的命令都是root为所有者,所以passwd是瞬间被root附体后执行完再回到当前用户的一种做法。
实验:普通用户创建一个文件,现在这个文件的所有者是这个用户
当你切换管理员后更改了touch命令的setUID后,使用
chmod 4755或者u+s
之后再切换回普通用户创建文件的时候拥有者将会是root
可执行文件才可以用setUID
权限码2setGID 当可执行文件执行的时候是以该文件所属组身份执行。
可以同时设置GID与UID 用6755
装新系统的时候查找哪些命令被设置成了s权限可以用
find / –perm –4000 –o –perm –2000
其中的-o代表或
然后定期用shell脚本查看哪些命令被设置成s权限与最初的做一个比对就可以知道哪些是新添加的s权限
黏着位 t=1 在一个目录下所有人都可以创建文件但是删除的时候不能删除别人创建的文件只能删除自己创建的文件这就是黏着位的用处。
chmod o+t|o-t|1777
针对的是权限为777的目录,重要的说三遍是777目录是777目录,别的也没什么意义。
用户配置文件/etc/group
组名:密码位:GID:组内用户列表
密码位是用户newgroup的时候使用,将自己放进另外一个组,前提你知道这个组的组密码。但是一般商业版的linux都屏蔽了这个功能。
添加组group add 例: groupadd –g 888 webadmin
删除groupdel
修改用户组信息groupmod –n acache webadmin
cat /etc/default/useradd查看缺省用户添加的时候配置的信息
useradd
-u:指定UID
-g:指定用户所属组
-d:宿主目录
-G:指定用户所属多个组
-sshell服务
-c:描述信息 有空格加双引号
-e:指定用户失效时间
passwd 用户名 为之设置密码
usermod –G 组名 用户名
gpassed
-a:加用户
-d:组内删除人
-A:设置用户组管理员
-r:删除用组密码
-R:禁止该用户切换到为该组
more /etc/gsadow 这里保存了用户组密码的密文
一样同用户一样 grpconv
grpunconv
newgrop 组名 将自己加入该组输入密码就好
group 用户名 查看着用户在哪个组
id 查看用户的uid gid等详细信息