导航:首页 > 编程系统 > linux下用户管理

linux下用户管理

发布时间:2023-09-01 17:13:49

1. linux命令之用户组管理

Linux中每个用户都要属于一个或多个组,有了用户组,就可以将用户添加到组中,这样就方便管理员对用户的集中管理。 Linux系统中用户组分为root组、系统组、普通用户组三类。当一个用户属于多个组时,这些组中只能有一个作为该用户的主属组,其他组就被称为此用户的次属组。 组基本信息在文件/etc/group中;组密码信息在文件/etc/gshadow中。通过命令:cat /etc/group、cat /etc/gshadow可查看文件内容。

各用户组中,以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:

组名:密码:GID:该用户组中的用户列表

而在gshadow文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符,分为 4 个字段,每个字段的含义如下:

组名:加密密码:组管理员:组附加用户列表

root用户可以直接修改/etc/group文件达到管理组的目的,也可以使用以下命令:groupadd、groupdel、groupmod -n、gpasswd -a、gpasswd -d、newgrp。

下面使用案例分别讲解这些命令:

添加用户组的命令是 groupadd,命令格式如下:

groupadd  [ -g gid  [ -o ] ]  [ -r ]  [ -f ]  group

参数说明:

        -g:指定新建工作组的 id;

        -r:创建系统工作组,系统工作组的组ID小于 500;

        -K:覆盖配置文件 "/ect/login.defs";

        -o:允许添加组 ID 号不唯一的工作组。

        -f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。

示例:创建一个新的组,并添加组 ID。

[root@VM-4-4-centos ~]# groupadd  -g  888  newgroup

此时在/etc/group文件中产生了一个id为888的项目:

删除用户组时,可用groupdel(group delete)指令来完成。倘若该组中仍包括某些用户,则必须先删除这些用户后,方能删除组。 注意:删除的组不能为主属组! 命令格式:

groupdel  [组名]         

示例:删除用户组 newgroup

[root@VM-4-4-centos ~]# groupdel  newgroup

此时再查看/etc/group文件时可以看到用户组newgroup已经不存在,删除成功!

要更改用户组识别码或名称可使用 groupmod 来完成。命令格式:

groupmod  [ -g  <群组识别码>  < -o > ] [ -n  <新群组名称 > ] [原群组名称]

参数说明 :

        -g <群组识别码> 设置欲使用的群组识别码。

        -o 重复使用群组识别码。

        -n <新群组名称> 设置欲使用的群组名称。

示例:创建用户组newgroup并修改其名称为modifiedgroup

[root@VM-4-4-centos ~]# groupadd  newgroup

[root@VM-4-4-centos ~]# groupmod  -n  modifiedgroup  newgroup

查看/etc/group文件,只存在名称为modifiedgroup的用户组,修改成功!

gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。命令格式:

gpasswd  [可选项]  组名

可选项参数 :

        -a:添加用户到组;

        -d:从组删除用户;

        -A:指定管理员;

        -M:指定组成员和-A的用途差不多;

        -r:删除密码;

        -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

示例1:将用户yangwei添加到组modifiedgroup中

[root@VM-4-4-centos ~]# gpasswd  -a  yangwei  modifiedgroup

此时查看/etc/group文件发现组 modifiedgroup中出现用户yangwei

示例2:将用户yangwei从组modifiedgroup中给删除

[root@VM-4-4-centos ~]# gpasswd  -d  yangwei  modifiedgroup

再次查看/etc/group文件发现用户yangwei已经不存在。

当需要在不同的群组下工作的时候我们需要进行切换群组操作,这个操作由newgrp指令来完成。命令格式如下:

newgrp [群组名称]

注意!当前用户必须都是两个群组的成员,否则切换群组时需要输入切换组的组密码,这时候当前用户作为临时成员在切换组下工作,所创建的文件全都属于切换组。

示例1:用户yangwei不属于群组modifiedgroup,请将当前工作组切换为modifiedgroup。

示例2:将用户yangwei添加到组modifiedgroup中,并切换工作组为modifiedgroup。

总结:Linux用户组管理需要掌握最基本的几个命令及其选项参数: groupadd 、groupdel 、groupmod 、gpasswd 、newgrp !

2. Linux系统下用户以及权限管理

一、操作系统中的用户管理 相关配置文件解读

Linux用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:

/etc/passwd 保存操作系统中的所有用户信息

root : x : 0 : 0 : root : /root : /bin/bash

name:password:UID:GID:GECOS:directory:shell

用户名 :密码占位符 :uid :基本组的gid :用户信息记录字段:用户的家目录:用户登录系统后使用的命令解析器

————————————————

字段1:用户名

字段2:密码占位符

字段3:用户的UID 0 表示超级用户 , 500-60000 普通用户 , 1-499 程序用户

字段4:基本组的GID 先有组才有用户

字段5:用户信息记录字段

字段6:用户的家目录

字段7:用户登录系统后使用的命令解释器

————————————————

UID:0表示超级用户, 程序用户 (1-499),普通用户 (500以上60000以下),根据uid将用户分为以上三类用户。

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

[root@xing /]# cat /etc/shadow

root : $6$Jw5XsDvvNBH5Xoq. : 19180 : 0 : 99999 : 7 : : :

用户名:密码(加密后的字符串):最近一次的修改时间【距离1970年1月1日的距离】:密码的最短有效期:密码的最长有效期:密码过期前7天警告:密码的不活跃期:用户的失效时间: 保留字段

————————————————

字段1:用户名

*字段2:用户的密码加密后的字符串(sha)

字段3:距离1970/1/1密码最近一次修改的时间

字段4:密码的最短有效期

*字段5:密码的最长有效期(建议时间 90)

字段6:密码过期前7天警告

字段7:密码的不活跃期

字段8:用户的失效时间

字段9:保留字段

这个字段目前没有使用,等待新功能的加入。

————————————————

/etc/group 保存组信息

————————————————

root:x:0:

bin:x:1:bin,daemon

组名:组的密码占位符:gid:附加组成员

————————————————

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

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

二、文件及目录权限

文件与权限: 即文件或者目录属于哪个用户,属于哪个组,不同的用户能对该文件进行何种操作。

————————————————

注:

查看文件权限: ls -l 文件

查看目录权限 : ls -ld 目录

————————————————

[root@xing Desktop]# ls -l /root/Desktop/

total 70584

lrwxrwxrwx. 1 root root 18 Jul 14 14:32 123.txt -> /root/Desktop/ming

-rw-r--r--. (文件属性) 1 (链接个数: 表示指向它的链接文件的个数 root (所属者) root (所属组) 0(文件大小:单位byte) Jul 14 14:14(最后一次修改时间) 2.txt(文件名)

drwx------.(文件属性) 7 (目录中的子目录数: 此处看到的值要减2才等于该目录下的子目录的实际个数。 root (所属者) root (所属组) 4096 (文件大小:单位byte)Jul 13 16:56(最后一次修改时间) vmware-tools-distrib(目录名)

[root@xing Desktop]# ls -ld /root/Desktop/

drwxr-xr-x. 3 root root 4096 Jul 14 14:44 /root/Desktop/

————————————————

文件属性解释:

- rw- r-- r-- .

d rwx r-x r-x .

字段1:文件类型 【- 普通文件 d目录 l符号链接 b块设备】

字段2:文件所有者对该文件的权限

字段3:文件所属组的权限

字段4:其他用户的权限(既不是文件所有者也不是文件所属组的用户)

字段5:表示文件受 selinux 的程序管理

8进制赋权法: r 【100】4; w【010】2; x【001】1

————————————————

三、用户以及权限管理命令汇总:

————————————————

用户增删改命令

useradd

userdel

usermod

————————————————

用户组增删改命令

groupadd

groupdel

groupmod

————————————————

passwd

change

————————————————

文件权限修改: chmod命令

chmod 对象 算数运算符 权限 文件

[root@xing tmp]# ls -ld ming

drwxr-xr-x. 2 root root 4096 Jul 16 10:27 ming

[root@xing tmp]# chmod o-x ming

[root@xing tmp]# ls -ld ming

drwxr-xr--. 2 root root 4096 Jul 16 10:27 ming

————————————————

文件所属者修改:

chown 用户 文件

[root@xing tmp]# chown ming ming

[root@xing tmp]# ls -ld ming

drwxr-xr--. 2 ming root 4096 Jul 16 10:27 ming

————————————————

文件所属组修改:

chgrp 组 文件

[root@xing tmp]# chgrp ming ming

[root@xing tmp]# ls -ld ming

drwxr-xr--. 2 ming ming 4096 Jul 16 10:27 ming

————————————————

8进制赋权法

[root@xing ~]# chmod 644 /tmp/ming

[root@xing ~]# ls -ld /tmp/ming

drw-r--r--. 2 ming ming 4096 Jul 16 10:27 /tmp/ming

————————————————

linux下命令“ll”是“ls -l"的别名。

————————————————

粘滞位:赋权后的文件 只有建立者可以删除

chmod o+t 文件

[root@xing ~]# chmod o+t /tmp/ming

[root@xing ~]# ll -d /tmp/ming

drw-r--r-T . 2 ming ming 4096 Jul 16 10:27 /tmp/ming

————————————————

sgid : 赋权后的目录,新建立的文件或者子目录的所属组继承父目录的所属组

chmod g+s 目录

[root@xing ming]# chmod g+s /tmp/ming

[root@xing tmp]# ll

drw-r-Sr-T. 2 ming ming 4096 Jul 16 11:29 ming

[root@xing ming]# touch 20.txt

[root@xing ming]# ll

-rw-r--r--. 1 root ming 0 Jul 16 11:33 20.txt

[root@xing ming]# mkdir 60

[root@xing ming]# ll

drwxr-sr-x. 2 root ming 4096 Jul 16 11:34 60

————————————————

suid :允许谁运行该文件具有该文件所属者的权限

chmod u+s 文件

[root@xing Desktop]# ll /usr/bin/vim

-rwxr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim

[root@xing Desktop]# chmod u+s /usr/bin/vim

[root@xing Desktop]# ll /usr/bin/vim

-rwsr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim

备注:linux 红底白字代表警告!

————————————————

[root@xing Desktop]# echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

suid:4 sgid:2 粘滞位:1

[root@xing Desktop]# find /usr/bin -perm 4 755

/usr/bin/at

/usr/bin/chage

/usr/bin/pkexec

/usr/bin/Xorg

/usr/bin/crontab

/usr/bin/newgrp

/usr/bin/vim

/usr/bin/gpasswd

/usr/bin/passwd

/usr/bin/ksu

————————————————

1、不再允许添加新用户的请求

chattr命令 :用于改变文件属性

chattr +i 文件

lsttr命令 :查看文件属性

lsattr 文件

[root@xing Desktop]# lsattr /etc/passwd /etc/shadow

-------------e- /etc/passwd

-------------e- /etc/shadow

[root@xing Desktop]# chattr +i /etc/passwd /etc/shadow

[root@xing Desktop]# lsattr /etc/passwd /etc/shadow

----i--------e- /etc/passwd

----i--------e- /etc/shadow

[root@xing Desktop]# useradd kk

useradd: cannot open /etc/passwd

2、umask

root用户的umask默认值是0022,一般用户默认是0002

目录的最高权限 0777-0022=0755

文件的最高权限 0666-0022=644

一般服务器配置umask的值配置为027最好;需要去修改两处文件中的umask值。

/etc/profile

/etc/bashrc

3、修改默认的密码最长有效期:修改以下配置文件

/etc/login.defs

3. Linux系统-文件系统&用户组管理-问题解答

1)ls

ls  -l  /home/     #显示home目录下文件或文件夹的包括访问权限、所属用户、所属主组、文件大小等信息, ls  -l  也是别名ll的命令与选项部分。

ls  -a    /root    #显示root目录下包括隐藏文件在内的所有文件

ls  -d    /etc/*    #显示etc目录下所有子目录(不包括文件)

ls  -S   /root     #按文件从大到小排列显示root目录下各文件

ls  -Sr   /root   #按文件从小到大排列显示root目录下各文件

ls  -U   /root   #按文件创建时间从新到旧排列显示root目录下各文件

ls   -X   /root   #按文件后缀排序显示root目录下各文件

ls  -R   /root    #递归显示root目录下所有文件

ls  -t   /root     #按修改数据内容的时间(mtime)从新到旧排列显示root目录下各文件

2)touch

touch    /data/file1      #在data目录下创建file1文件,如果目录下已经有同名文件,则不会覆盖同名文件

touch   -t   201910200830.50   /etc/hosts        #修改/etc/hosts文件的atime以及mtime的时间戳为2019年10月20日8点30分50秒

touch  -c  /data/f2     #刷新data目录下f2文件的atime、mtime、ctime,如果f2文件不存在,则不会创建f2

3)cp

cp  etc/hosts   /home/     #复制/etc/hosts文件到 /home目录下,如果home目录下没有hosts文件,则自动创建同名文件;如果有,则会直接覆盖。

cp  -i   etc/hosts   /home/   #复制/etc/hosts文件到 /home目录下,如果home目录下没有hosts文件,则自动创建同名文件;如果有,则会询问用户是否覆盖。

cp  -r  /etc/ntp   /root     #复制/etc/ntp目录下所有子目录以及文件到root目录下

cp  -a    /home/*  /data/    #复制/home/目录下所有子目录以及文件到data目录下,所有文件的类型、软链接、文件所属关系、时间戳等信息都一并复制(但是home目录下的隐藏文件不会被复制到data目录下)

cp  -av   /home/*  /data/   #在实现cp  -a    /home/*  /data/   复制的基础上,在终端上显示复制过程

cp  -u   /etc/*   /data/       #将etc目录下的文件复制到data目录下,如果etc目录的文件比data目录下的同名文件新,则覆盖data目录下的同名文件,如果etc目录下的文件比data目录里的与之同名文件旧,则不覆盖。

cp   --backup=numbered    etc/hosts   /home/hosts      #将etc目录下hosts文件复制到home目录下的hosts,在复制之前,会先对home目录的hosts文件进行备份,避免被覆盖后,原文件内容丢失。

4)mv

mv   /etc/hosts    /data/         #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则直接覆盖    

mv  -i    /etc/hosts    /data/    #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则询问是否覆盖 

mv  f1   f2       #将当前目录下的f1文件修改名字为f2

mv   -t    /data/    /etc/hosts     #将etc目录下hosts文件转移到data目录下,如果data目录有同名文件,则直接覆盖 。功能实现上与mv   /etc/hosts    /data/    相同,但是移出路径参数与移入路径参数的位置发生了互换

mv    downloads/    D      #将当前目录下的downloads目录的名字改成D

5)rm

rm   /data/f1     #删除data目录下的f1文件

rm  -r   /data/*    #递归删除data目录下的所有文件

rm  -rf    /data/*   #强制递归删除data目录下的所有文件

6)file

file   /etc/hosts     #查看etc目录下hosts文件的文件类型,如文本文件、压缩文件、可执行程序等

7)stat

 stat   /data/f1      #查看/data/f1文件的三个时间,内容数据修改时间mtime,读取时间atime,元数据修改时间ctime

8)pwd

#在当前目录下输入pwd回车,查看当前所在目录路径

pwd  -P    #显示当前目录或文件夹的真实路径

9)cd

cd  /data    #进入data目录   

cd  ~root    #进入root的家目录

cd  -       #回到刚才离开的目录

10)mkdir

mkdir  /data/dir        #在data目录下创建dir目录 

mkdir  -p   /data/dir1/dir2/dir3/dir4           #在data目录下创建子目录dir1/dir2/dir3/dir4,若dir1、dir2、dir3都不存在,则递归创建

11)rmdir

rmdir     /data/dir        #删除data目录下的dir目录,如果dir里面有文件,则dir不能被删除

rmdir  -p    /data/dir1/dir2/dir3/dir4          #若dir1、dir2、dir3、dir4都是空目录,则递归删除data目录下的dir1、dir2、dir3、dir4目录

12)ln

ln    /data/f1    /data/f2        #在data目录下创建文件f1的硬链接f2

ln  -s     f1   f1.link            #在当前目录下创建文件f1的软链接f1.link

#当软链接路径与原文件路径不同时,如软链接位置是:/root/f1.link  ,而原文件路径是:/data/f1   。 则在创建软链接时需要相对于软链接的路径,对原文件路径补完相对路径,具体如下:

ln  -s  ../data/f1   /root/f1.link

答:

1)创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b

mkdir   /tmp/a{1,2}

touch   /tmp/a1/{a,b}

2)在/tmp目录下创建目录:x_y, x_z, q_y, q_z

mkdir     /tmp/{x,q}_{y,z}

答:文件的元数据信息包括:

文件类型: 指文件所属的类型,包括目录、文本文件、压缩文件、可执行程序等。系统实际上查看文件的头部信息,magic number。

节点编号: 每个文件、文件夹在同一个磁盘分区内,都有一个唯一的节点编号inode,用于识别磁盘分区内的文件。节点编号的数量在一个磁盘分区内是有限的,如果节点编号耗尽,无论磁盘空间是否真的占满,都会显示磁盘空间已满。

硬链接数: 是指指向该文件节点编号inode的文件名称数量。

所属用户UID: 创建该文件的用户的uid

所属主组GID: 创建该文件的用户的主组gid

文件大小: 表示该文件的磁盘空间占用大小

mtime时间戳: 指文件的内容数据发生修改时的时间点

atime时间戳: 指文件被访问时的时间点

ctime时间戳: 指文件的元数据发生变化时的时间点

访问权限: 指不同用户对文件的访问、修改、执行等操作的权限

指向磁盘数据块的直接指针: 直接指向磁盘数据块的指针,一个文件最多有12个直接指针,每个直接指针指向一个4k大小的数据块

指向磁盘数据块的间接指针: 间接指向磁盘数据块的指针,一个间接指针会先指向一个4k大小数据块作为次阶指针表,该数据块又分成1024个4字节大小的区间,一个区间存储一个次阶的指针,次阶指针指向一个4k的磁盘数据块存储真正的文件数据,若依然不能满足空间要求,则可继续嵌套次阶指针表,直到满足文件存储要求为止。

查看元数据信息方式:

1)ls  -l   /data     #可查看data目录下非隐藏文件的访问权限、所属用户UID、所属用户主组GID、mtime时间戳、文件大小、硬链接数。

2)stat    /root/bin     #可查看root目录下bin目录的atime时间戳、mtime时间戳、ctime时间戳

3)ls   -lc     /root/    #查看root目录下非隐藏文件的ctime时间戳

4)ls   -lu     /root/    #查看root目录下非隐藏文件的atime时间戳

5)ls  -i    /root      #查看root目录下所有非隐藏文件的节点编号

6)file   /root/.bashrc      #查看root目录下.bashrc文件的文件类型

修改文件的时间戳信息:

touch   -t   201910200830.50   /etc/hosts       #将etc目录下hosts文件的atime和mtime时间戳修改成2019年10月2日8时30分50秒

touch   -a   /etc/hosts    #更新etc目录下hosts文件的atime和ctime为当前时间

touch   -m   /etc/hosts      #更新etc目录下hosts文件的mtime和ctime为当前时间

答:  touch  /tmp/tfile-`date  +"%F-%H-%M-%S"`

答:

mkdir    /tmp/mytest1     #先创建mytest1目录

cp    -a     /etc/p*[^0-9]      /tmp/mytest1/

或:

cp     -a      /etc/p*[^[:digit:]]      /tmp/mytest1/

答:

useradd   -u 5001  -md  /tmp/tom   -s  /bin/zsh     -G  jack    tom

1)useradd

useradd   jack     #创建用户jack,用户策略采用系统默认配置

useradd   -u 1008  jack       #创建用户jack,指定用户的UID为1008

useradd   -d   /data/jack    jack     #创建用户jack,指定用户家目录路径为/data/jack

useradd   -g  1111  jack     #创建用户jack,指定用户主组是GID=1111的组,但GID=1111的组需要事先存在,否则无法创建

useradd   -G  tom  jack      #创建用户jack,指定用户jack加入附加组tom,但tom组需要事先存在,否则无法创建

useradd  -s  /bin/zsh  jack      #创建用户jack,制定用户jack的shell类型是zsh

useradd  -r    jack        #创建系统用户jack,系统用户默认不创建家目录

useradd  -r  -md   /data/jack    jack     #配合-d选项,创建系统用户jack,指定该系统用户创建家目录/data/jack,并在家目录中载入默认配置文件

useradd  -N    jack     #创建用户jack,不创建jack同名主组,将jack主组默认为users

useradd  -M    jack    #创建用户jack,强制用户jack不创建家目录

2)usermod

usermod  -G  wang   jack     #将jack用户的附加组更改为wang,原有附加组删除

usermod  -aG  wang   jack    #在不退出原有附加组情况下,jack用户增加附加组wang

usermod   -l   jacky   jack      #修改用户名称为jacky

usermod  -e  20181212  jack    #将用户jack的账号过期日期修改为2018年12月12日

usermod  -s   /bin/csh    jack     #修改用户jack的shell类型为csh,与命令:   chsh   -s   /bin/csh   jack    相等 

usermod  -c    'abcdefg'    jack    #编辑用户jack的注释为abcdefg

3)userdel

userdel   jack      #删除用户jack

userdel   -r    jack     #删除用户jack,包括用户的家目录、邮箱

4)groupadd

groupadd   -g   1010  leo    #创建组leo,指定GID为1010

groupadd   -r    leo       #创建系统组leo

5)groupmod

groupmod  -n   lee  leo    #修改组leo名字为lee

groupmod  -g   1111   leo   #修改组leo的GID为1111

6)groupdel

groupdel     wang           #删除wang组,但是wang组必须不是任何用户的主组,否则不可以删除

7)su

su    jack   #当前用户非登录切换到jack账号,不读取jack账号配置文件

su  -   jack   #当前用户登录切换到jack账号,读取jack账号配置文件

8)groupmems

groupmems    -l   -g    root       #查看所有属于root组的用户

9)id

id       #查看当前用户的UID名称 、 主组名称GID 、 附属组名称GID

id  root     #查看root用户的UID名称、  主组名称GID  、附属组名称GID

id  -u  root    #查看root用户的UID名称  

id  -g   root   #查看root用户的主组名称GID  

id  -G  root   #查看root用户的主组名称GID 、 附属组名称GID

id  -nG  root   #只查看root用户的主组名称 、 附属组名称

10)chfn

chfn   jack     #编辑修改用户jack的注释  ,与命令:usermod  -c    'abcdefg'    jack   类似

11)chsh

chsh   -s   /bin/csh   jack     #修改用户jack的shell类型为csh

12)chage

chage     jack         # 交互式修改用户jack的密码策略,包括修改:密码创建时间、最小密码修改期、密码有效期、过期通知、过期宽限期、账户有效时间

chage   -l     jack     #查看用户jack的密码策略

chage    -d    0    jack     #让用户jack密码期限立即过期,重新登录需要更换密码

13)passwd  

passwd     #修改当前用户的账号密码

passwd    jack    #修改jack账号密码   (仅限root账号)

passwd  -e   jack   #强制jack用户下次登录修改密码 (仅限root账号)

echo    hello   |  passwd  --stdin   jack     #利用管道标准输入,快速将jack用户密码修改成hello,无需输入两次新密码,不检验密码的复杂度

14)newgrp

newgrp     root       #将当前用户的主组切换成root,原主组切换成附属组,如果当前用户的附属组没有root组,切换时需要输入root组密码;如果当前用户的附属组包含root组,则无需输入组密码,直接切换

15)gpasswd   

gpasswd    jack     #创建jack组密码

gpasswd   -a  wang   jack    #将wang用户添加至jack组里

16)groups

groups   jack      #查看用户jack所属的组列表

4. linux中多用户以及权限的理解

linux操作系统是多用户管理系统,管理起来非常麻烦,所以用组的概念来管理用户就变的简单多了, 一个用户可以属于多个组,一个组可以有多个用户,用户和组是多对多的关系。

linux的多用户多分组管理系统都是针对 文件 来说的, 每个文件都有所属的用户和所属的分组。

linux系统是根据用户UID来识别用户的,并不是根据用户名。linux用户分为以下3种

每行数据为一个用户,可以看到红色部分为root超级用户,蓝色部分为系统用户,绿色部分为普通用户。

我们可以看到该文件属于root用户和root组。然后root用户权限是rw-,root组内成员的权限是r--,而其他用户的权限是r--。由于其他用户的权限都是r--,所以任何用户都是可以读的。

在/etc/group文件中存储着系统的所有组,查看文件内容,如下图

大致分为4段

我们可以看到图中mail分组的第4段有值为postfix,也就是postfix用户应该有俩个分组,一个初始组和一个附属组,我们执行以下命令验证

用户密码文件shadow和组密码文件gshadow的权限都是000,所有其他用户是不能查看的,只有root用户才可以查看,root用户也是不能修改该文件的。

使用 whoami 命令查看。

postfix用户有俩个所属组postfix和mail。由此可见, uid是指用户id(用户名称),gid是指初始组id(初始组名称),groups是指包括初始组在内的所有组id(所有组名称)

我们知道了/etc/group文件的第四段为 组内成员 ,所有我们可以通过 grep 来匹配相关组。比如查询mail组内的所有成员,命令如下, 可以看到mail组内有mail,postfix和tom3个用户。

上面是一种方法,我们也可以直接使用命令来查看。

添加用户只能root用户来添加,普通用户没有权限,添加用户有俩种方式

在centos系统下,这俩种方式没有区别, 都会在/home下自动创建与用户名同名的用户目录,且都是需要使用 passwd userName 命令来设置用户密码的,只有设置完密码后才可以正常登录。

在unbantu系统下,这俩种方式是有区别的,使用 useradd userName命令 不会在/home下自动创建与用户名同名的用户目录,且不会自动选择shell版本,后续也是需要使用 passwd username来设置密码的 。 而使用 adser userName 命令的话 是会在/home目录下自动创建与用户名同名的用户目录,也会自动选择shell版本,且会自动提示输入用户密码,对用户比较友好,后续不需要在使用passwd来设置密码。

删除用户,并不会删除用户相关的文件

删除用户且一起删除家目录

格式如下:

参数如下:
-g 指定组(只有root可以使用)
-a 指定用户加入组
-d 从组中删除该用户
-p 从组中清楚所有成员
-l 显示组成员列表

linux中每个文件都是有权限的。 每个文件都有自己的所属用户和所属组,且拥有所属用户权限,所属组权限和其他权限3种。
权限一般分为读,写,执行3种,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。

目录有x权限才可以cd进入该目录。目录有r权限才能在该目录中使用ll或者ls查看目录。一个目录中的文件能否被删除或者创建取决于该目录是否有w权限。

执行ll命令后显示如下,我们解读一下

从左到右发现一共有7段

然后执行如下命令

test文件的权限改为

常用的参数为 -R ,常用于修改目录权限,该参数表示为该目录以及目录下的所有子文件都修改为相同的权限。

然后执行如下命令

再次查看test文件

常用的参数为 -R ,常用于修改目录,该参数表示为该目录以及目录下的所有子文件都修改为相同的用户及用户组。

想切换到root用户,直接使用su命令即可

5. Linux用户权限管理命令

Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统是识别的是用户的UID、GID,而非用户用户名),一个UID是唯一(系统中唯一如同身份证一样)用来标识系统的用户账号(用户名)。

文件的用户与用户组分为超级管理员,普通用户和系统用户。
1)超级管理员的UID=0,GID=0,也可以这么说系统只要是识别出某个用户的UIDGID都为0时,那么这个用户系统就认为是超级管理员。
2)普通用户(管理员添加的),默认它的UIDGID是从500-65535,权限很小,只能操作自己的家目录中文件及子目录(注:nobody它的UIDGID是65534)。
3)系统用户,也称虚拟用户,也就是安装系统时就默认存在的且不可登陆系统,它们的UIDGID是1-499。
我们可以通过cat /etc/passwd命令来查看所有的用户信息,例如下图,第三列是UID,第四列是GID:

创建用户
useradd user1 创建用户user1
useradd -e 12/30/2021 user2 创建用户user2,有效期到2021-12-30
设置用户密码
passwd user1 设置密码,有设置密码的用户不能用
这里设置密码时可能会碰到密码保护机制问题,这里需要注释掉保护机制的问题
这个时候需要在编辑/etc/pam.d/system-auth文件,将其中的password requisite
和password sufficient两行注释掉,如下图:

创建用户组
groupadd –g 888 users 创建一个组users,其GID为888
groupadd users 不用g参数,使用默认的组ID

命令 gpasswd为组添加用户
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组

命令groupmod修改组
groupmod –n user2 user1 修改组名user1为user2

groupdel删除组
groupdel users 删除组users

真正从安全性角度上来考虑的话,是要控制用户一定执行命令的权限,也就是哪些用户可以执行哪些命令,不可以执行哪些命令,因此也就有了sudo这个应用,对于sudo提权,也就是修改/etc/sudoers的配置文件。

6. Linux用户组管理

在创建用户时不会创建附属组,附属组只能通过命令创建

使用命令groupadd创建一个附属组谨简,也可以在命令中添加参数 -g 指定组id,组id设置的时候应该大于1000,不能重复,重复有可能导致系统无法启动

groupadd这个命令并不能将用户添加进用户组中去,我们如何把用户添加进用户组中呢?

使用命令gpasswd加参数-a向一个用户组中添加用户,如果不加-a的话默认是修改或者设置组密码,使用到组密码的场景很少,至少我没有碰见过。

使用命令gpasswd和参数-d把一个用户从一个蠢晌迹用户组中移除

删除组可以使用groupdel删除组

用户有自己的配置文件,组也有自己的配置文件,组的配置文件主要保存了组名称,组密码、组ID和组成员,这个配置文件统一保存带并在/etc/group文件中并以: 作为分隔符

阅读全文

与linux下用户管理相关的资料

热点内容
格式工厂iphone铃声 浏览:171
linux设置字符编码 浏览:15
帝王世纪升级哪个兵种 浏览:409
c编程开发软件是什么 浏览:334
二的大写怎么写app 浏览:612
乐视数据删除了怎么找回来 浏览:651
ug编程初始化怎么办 浏览:295
nginxajax配置文件 浏览:467
小程序获取二进制图片 浏览:206
为什么有的数控车编程有百分号 浏览:425
m文件有什么用 浏览:359
宜昌做投标文件多少钱 浏览:166
uc浏览器小说下载那个文件夹 浏览:908
qq和手机 浏览:238
ps备份文件教程 浏览:306
数据库原理嵌套查询 浏览:679
为什么文件只解压了一部分 浏览:728
c语言课程教学视频java源码下载 浏览:444
老毛桃2014u盘启动盘制作教程 浏览:53
盗取qq密码视频教程 浏览:948

友情链接