Linux-用户以及用户组讲解

用户以及用户组讲解

简单的用户说明

Linux的操作系统是一个多用户管理的系统;

因此经常使用组的概念来管理用户;

Linux是用用户ID来识别的;

  • root:超级管理员–>ID为0
  • 系统用户:–>ID号为1-1000
  • 普通用户:—>ID号为1000以上
  • 每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名
  • 每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组;
  • 每个组拥有一个GroupID;
  • 每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
  • 每个可登陆用户拥有一个指定的Shell环境。

用户管理的相关文件

/etc/passwd 保存用户信息

/etc/shdaow 保存用户密码(以加密形式保存)

/etc/group 保存组信息

/etc/login.defs 用户属性限制,密码过期时间,密码最大长度等限制

/etc/default/useradd 显示或更改默认的useradd配置文件

useradd命令

作用:创建用户的命令

语法:useradd+选项+用户名

选项:

  • -b:指定新账户的家目录
  • -c:添加说明纸短
  • -d:指定主目录
  • -D:修改默认的配置
  • -e:指定过期的日志
  • -g:指定属组
  • -G:指定附加组
  • -M:不创建家用户
  • -r:创建系统账户
  • -s:指定用户的shell
  • -u:指定UID
#添加一个用户
[root@Test0 ~]# useradd liangjiawei

#添加zhangsan,并且为她分配到liangjiawei组
[root@Test0 ~]# useradd liangjiawei
[root@Test0 ~]# useradd zhangsan -G liangjiawei
[root@Test0 ~]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan)=1002(zhangsan),1001(liangjiawei)

usermod命令

作用:修改用户信息

语法:usermod+选项+用户名

选项:

  • -c:添加说明
  • -d:指定家目录位置
  • -e:指定过期日期
  • -g:修改gid
  • -G:添加附加组
  • -a:追加组
  • -l:修改登陆名
  • -L:锁定用户
  • -m:修改家目录位置
  • -u:修改UID
  • -U:解锁用户
#添加用户组
[root@Test0 ~]# usermod  -G liangjiawei01 liangjiawei

#锁定用户
[root@Test0 ~]# usermod  -L liangjiawei

#解锁用户
[root@Test0 ~]# usermod -U liangjiawei

Linux的组管理说明

组管理特点:

  • 每个组有一个组ID;
  • 组信息保存在/etc/group中;
  • 每个用户至少拥有一个主组,同时还可以拥有31个附属组。

groupadd命令

作用:创建用户组

语法:groupadd+选项+组名

选项:

  • -g:指定组ID
  • -r:指定系统组
#创建组
[root@Test0 ~]# groupadd nginx

groupdel命令

作用:删除用户组

语法:groupdel+用户组

#删除用户组
[root@Test0 ~]# groupdel  nginx

groupmod命令

作用:修改组名

语法:groupmod+选项+新组名+原组名

#修改组名
[root@Test0 ~]# groupadd  nginx
[root@Test0 ~]# groupmod -n liangjiawei01 nginx

权限讲解

Linux权限的分类:

  • r:读权限
  • w:写权限
  • x:执行权限

Linux中对文件的权限和对目录的权限的区别

权限 文件 目录
r可读 读取文件的内容 列出目录内容
w可写 可惜修改文件内容 可以创建、删除内容
x可执行 可以作为命令执行 可以访问目录内容

权限的三种角色

  • user:所有者
  • group:所属组
  • other:其他人
    • U代表User,G代表Group,O代表Other
    • 每个文件的权限基于UGO进行设置
    • 权限三位一组(rwx),同时需授权给三种角色,UGO
    • 每个文件拥有一个所属用户和所属组,对应UGO,不属于该文件所属用户或所属组使用O来表示
#使用命令来查看权限
[root@Test0 ~]# ll system_init.sh 
-rwxr-xr-x. 1 nobody nobody 1960 414 2022 system_init.sh

#输出内容单独拿出来说
-:表示文件
rwxr-xr-x:分贝对应三种角色的权限
	所有者:rwx
	所属组:r-x
	其他人:r-x
1:文件的连接数量
nobody:所有者
nobody:所属组
1960:文件的大小
后面是时间和文件名

chown命令

  • 作用:修改每个用户对文件的属主以及属组
  • 语法:chown 所有者:所属组 文件名
  • 选项:
    • -R:递归修改
#修改文件的属主和属组
[root@Test0 ~]# chown root: system_init.sh 
[root@Test0 ~]# ll system_init.sh 
-rwxr-xr-x. 1 root root 1960 414 2022 system_init.sh

chmod命令

作用:修改文件的权限

语法:chown+选项+权限加减+文件

选项:

  • -R:递归修改文件的权限;
    • a:指的是所有
    • u:所有者
    • g:所属组
    • o:其他人
      • +:添加权限
      • -:减少权限
      • =:指定全向
        • r:只读权限
        • w:可写权限
        • x:可执行权限
#添加可执行权限
[root@Test0 ~]# chmod g+w system_init.sh 
[root@Test0 ~]# ll system_init.sh 
-rwxrwxr-x. 1 root root 1960 414 2022 system_init.sh

#删除其他人的可执行权限
[root@Test0 ~]# chmod o-x system_init.sh 
[root@Test0 ~]# ll system_init.sh 
-rwxrwxr--. 1 root root 1960 414 2022 system_init.sh

权限的数字方式讲解

Linux里面也规定数字的方式来记录权限

  • r:4
  • w:2
  • x:1
    • rwx:7
    • r-x:5
    • rx-:6
Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示;
Linux权限用二进制显示如下:
rwx=111
r-x=101
rw-=110
r--=100
依次类推,转化为十进制,对应十进制结果显示如下:
rwx=111=4+2+1=7
r-x=101=4+0+1=5
rw-=110=4+4+0=6
r--=100=4+0+0=4
得出结论,用r=4,w=2,x=1来表示权限。

实验得出结果

#对文件的权限修改-->rwx
[root@Test0 ~]# chmod 777 system_init.sh 
[root@Test0 ~]# ll system_init.sh 
-rwxrwxrwx. 1 root root 1960 414 2022 system_init.sh

权限掩码

权限掩码:

  • 作用:限定目默认权限和文件的默认权限
  • 每个Linux的默认掩码值Umask–>022
  • 算法如下:
    • 对应目录权限为:777-022=755
    • 对应文件权限为:666-022=644
    • 执行umask命令可以查看当前默认的掩码,umask -S 023可以设置默认的权限掩码
#查看默认的掩码值
[root@Test0 ~]# umask 
0022
[root@Test0 ~]# umask  -S
u=rwx,g=rx,o=rx

suid讲解

对文件的影响:

  • 以文件的所有者身份执行;而非执行文件的用户;
  • 对目录一般没有影响

设置suid的方法:

  • chmod u+s liangjiawei.net
  • chmod 4755 文件名
[root@Test0 sh]# ll /usr/bin/sudo
---s--x--x 1 root root 151424 126 00:36 /usr/bin/sudo
[root@Test0 sh]# ll /usr/bin/passwd 
-rwsr-xr-x 1 root root 27856 41 2020 /usr/bin/passwd

sgid讲解

  • 对于文件而言:已所属组的身份执行文件
  • 在该目录中创建任意新文件的所属组与该目录的所属组相同

设置sgid权限的方法:

  • chmod g+s 文件名
  • chmod 2755 文件名
#如果设置了sgid权限的话创建的目录都会带有所属组的权限
[root@Test0 sh]# mkdir aa
[root@Test0 sh]# chmod g+s aa
[root@Test0 sh]# cd aa/
[root@Test0 aa]# touch aa.txt
[root@Test0 aa]# ll aa.txt 
-rw-r--r-- 1 root root 0 313 00:37 aa.txt
[root@Test0 aa]# chmod 777 ../aa/

[zhangsan@Test0 aa]$ touch bb.txt
[zhangsan@Test0 aa]$ ll bb.txt 
-rw-rw--- 1 zhangsan root 0 313 00:38 bb.txt

sticky讲解

  • 对于文件没有影响
  • 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件

设置sticky权限的方法

  • chmod o+t 文件名
  • chmod 1755 文件名
#典型的目录就是/tmp目录
[root@Test0 aa]# mkdir /tmp/
[root@Test0 aa]# chmod o+t /tmp/
[root@Test0 aa]# chmod 1777 /tmp/
[root@Test0 aa]# su - zhangsan
上一次登录:一 313 00:40:27 CST 2023pts/0 上
[zhangsan@Test0 ~]$ cd /tmp/
[zhangsan@Test0 tmp]$ touch zhangsan
[zhangsan@Test0 tmp]$ ll zhangsan
-rw-rw-r-- 1 zhangsan zhangsan 0 313 00:41 zhangsan

#lisi无法删除zhangsan的东西
[root@Test0 aa]# su - lisi
[lisi@Test0 ~]$ cd /tmp/
[lisi@Test0 tmp]$ rm -rf zhagnsan
[lisi@Test0 tmp]$ ll
总用量 0
-rw-rw-r-- 1 zhangsan zhangsan 0 313 00:41 zhangsan

你可能感兴趣的:(Linux-随笔,linux,服务器,运维)