linux用户管理、su和sudo、文件权限、SUID/SGID/SBIT

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权限时,目录下的新创建的内容会继承父目录的对应的属主或属组。

原文地址:https://www.cnblogs.com/1016391912pm/p/12880069.html