Linux的多用户概念是指多个用户同时可以使用这个系统。每个用户一般在/home下的都有自己的用户目录,root的家目录在/root。用户执行任务的时候一般在自己的家目录中执行,用户之间互相不影响。
查看当前登录用户
查看所有用户信息
cat /etc/passwd
查看所有用户组信息
cat /etc/group
查看用户的属组
查看当前用户的属组:groups
查看指定用户的属组:groups 用户名
添加新用户
useradd 用户名 (需获得超级权限)
-c 备注 加上备注文字,会存在/ect/passwd的备注栏位中。
-d 登入目录 指定用户登入时的起始目录。
-m 登入目录 当指定目录不存在时,自动创建目录
-e 过期日期 格式为YYYY-MM-DD
-f 缓冲天数 指定在密码过期后多少天即关闭该帐号。
-g 群组 指定用户所属的组。
-u uid 指定用户ID。(centos7普通用户要1000+)
-s 指定用户登录后使用的shell,默认为 /bin/bash,创建虚拟用户可以使用-s /sbin/nologin
-M 不创建主目录
设置密码
passwd 用户名
-d 删除密码
-x 指定口令最长存活期,天数
-i 口令过期多少天停用账户
注:用户密码保存在 /etc/shadow
创建用户组
groupadd 组名
删除用户
userdel 用户名
一般加 -r 代表将其主目录一同删除
注意:如果将要删除的用户,其同名用户组没有其他用户,那么这个同名用户组也会被删除。
删除用户组
groupdel 组名
su和sudo
su 切换用户 从root切换到普通用户不需要密码,从普通用户切换到root需要密码
su 用户名 切换用户后,当前路径不会改变,shell也不会改变
su - 用户名 或 su -l 用户名 切换用户后,会切换到该用户的登入路径,shell也会切换至其设定shell
su 用户名 -c "命令" 使用指定用户执行双引号内的命令(用户不会切换过去)
logout 返回原来的用户使用这个命令
sudo 在/etc/sudoers授权用户一部分权限,使用户可以在自己账户执行一些root命令。
找到这一行:root ALL=(ALL) ALL
在其下一行添加:用户名 ALL=(ALL) NOPASSWD:ALL
可以添加4中类型:
用户名 ALL=(ALL) ALL 赋予该用户所有root权限,执行sudo时需输入密码
%组名 ALL=(ALL) ALL 赋予该组内的用户所有root权限,执行sudo时需输入密码
用户名 ALL=(ALL) NOPASSWD: ALL 赋予该用户所有root权限,执行sudo时不用输入密码
%组名 ALL=(ALL) NOPASSWD: ALL 赋予该组内的用户所有root权限,执行sudo时不用输入密码
注:
ALL=(ALL:ALL) ALL
括号内第一个ALL代表用户能登录的主机,第二个代表这个主机所在群组,最后一个ALL代表能执行的命令。
使用ALL的话,就代表能登录所有主机,执行所有命令。
sudo日志记录
记录普通用户使用sudo时的操作命令,步骤:
第2步visudo,在最后添加3行:
测试:
文件权限
注:第一列为文件权限,第一位是文件类型,-代表文件,随后三位rw-是属主(user/owner)权限,再随后三位r--是属组(group)权限,最后三位r--是其他(other)权限。
进程对文件的访问权限应用模型:
如上图,当我们调用ls命令时,开启了一个进程
当进程的属主与文件的属主相同时,则应用属主权限。
否则,当进程的属主属于文件的属组时,应用属组权限。
否则,只能应用其他权限。
权限组合机制
三位权限 对应2进制 8进制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限管理命令
chmod命令(change mode)
-R 递归修改(recursive)同时修改目录下的子文件的权限,一般在授权表示法中使用。
注:用户仅能修改那些属于自己的文件的权限。
①mode表示法
赋权表示法:
属主权限u= 属组权限g= 其他权限o= 所有权限a=
可以只更改一个:chmod u=rx 1.txt
若两个权限一样:chmod ug=rx 1.txt
若三个都一样:chmod a=r 1.txt
授权表示法:
u+ u- g+ g- o+ o- a+ a-
也可以同时操作两个:chmod ug+x 1.txt
②8进制表示法
每三位对应前面的权限组合机制
③参考表示法
将文件2.txt的权限复制给1.txt。
从属关系管理命令
注:仅管理员可修改文件的属主和属组
chown (change owner)
-R 递归
注:也可以用冒号 chown pm:pm 1.txt
如果只写一个的话,更改的是属主:chown pm 1.txt
chgrp(change group)
只能更改属组 chgrp pm 1.txt
umask 文件权限的反向掩码、遮罩码
第1位是特殊权限,后3位是普通权限
创建的目录时的默认权限是777,创建文件的默认权限是666,为了使文件更加安全、不出错,
新建文件的权限=默认权限-反向掩码
即777-022=755
特殊权限SUID、SGID、SBIT
SUID:Set User ID
当属主权限的x位为s或S时,说明其为SUID权限。(s同时具有x权限,S没有x权限)大S这里不太懂
作用:使执行者获得该程序的属主的所有权限(仅在执行程序时)。
SUID仅对二进制程序有效;调用过程中执行者获得属主对该文件的权限;
执行者必须拥有可执行(x)权限;程序运行为进程时,进程的属主是文件的属主,而不是执行者。
SGID:Set Group ID
SGID与SUID类似,不过它对二进制程序和目录都有效。
当二进制程序设置SGID权限时,执行者获得文件属组的权限。
当为目录设置SGID权限时,如果执行者对该目录有写和执行的权限,这在该目录下新建的文件都是属于这个目录所属的组。
SBIT:Sticky Bit
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。
注:这个SBIT对文件不起作用。
SUID SGID SBIT权限设置
4代表SUID 2代表SGID 1代表SBIT 例:
chmod 4755 t 那么t的权限为 rwsr-xr-x
chmod 6755 t 那么t的权限为 rwsr-sr-x
chmod 4655 t 那么t的权限为 rwSr-xr-x
注:当目录有s权限时,目录下的新创建的内容会继承父目录的对应的属主或属组。