Linux学习04---用户与用户组管理

Linux学习04---用户与用户组管理,第1张

Linux学习04---用户与用户组管理

文章目录
    • 用户配置文件
      • 用户信息文件 /etc/passwd
      • 影子文件/etc/shadow
      • 组信息文件/etc/group和组密码文件/etc/gshadow
          • /etc/group
          • /etc/gshadow
    • 用户管理的相关文件
          • 用户的家目录
          • 用户的邮箱
          • 用户模板目录
    • 用户管理命令
          • useradd
          • passwd
          • usermod
          • chage
          • userdel
          • id
          • su
      • 用户组管理命令
          • groupadd
          • groupmod
          • groupdel
          • gpasswd

用户配置文件 用户信息文件 /etc/passwd

越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器 *** 作规范。Linux主要是通过用户配置文件来查找和修改用户信息。

查看配置文件的信息用man 5 [文件名],数字5代表查看文件信息。

打开passwd,

  • 第一字段:用户名称;

  • 第二字段:密码标志:一般为“X”,因为所有用户都可以读取passwd,如果不隐藏密码内容的话,会导致用户信息不安全,所有用标志取代密码明文,将密码存放到另外的文件当中,在/etc/shadow中,并且用户的密码是通过加密的,保证安全,其他用户无法打开shadow文件,只有root用户可以打开它。标识的作用是表示这个用户有密码,密码存放在shadow文件内,登录时会自动去读取,如果在passpw里面修改删除掉这个“x”会让系统认为该用户没有密码,也不会去shadow文件内查找,然后直接登录系统,这样会导致不安全,但是无密码登录只能在本机登录,无法远程。

  • 第三字段:UID(用户ID){0:root管理员;1-499(系统用户,伪用户);500-65535(普通用户)};系统内核调用用户这个对象都是通过调用对应的uid号码,这个号码相对于该用户的身份z号码,唯一标识,但是对于人来说,记id号很困难,所有取用户名方便记忆。查看passwd文件时会看见很多没见过的用户名,他们是系统伪用户,是系统运行时调用的用户对象,所以不可以修改其信息,不然系统会崩溃。最重要的一点认识是,系统只人uid号,不管你叫什么,它只认id号,id为0的就为管理员,与它叫不叫root没关系。

  • 第4字段:初始组GID(用户初始组ID)组id一般与用户id相同,因为系统默认一般新建用户都会创建一个相同名称的初始组,组id也与用户id相同,这样便于管理。

    初始组:就是指用户一登录就立即拥有这个用户组相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组;可以加入多个附加组,不建议改初始组,可以添加附加组。

    附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

  • 第5字段:用户说明。

  • 第6字段:家目录。用户登录的位置,是固定的。

    普通用户:/home/用户名/

    超级用户:/root/

  • 第7字段:登录之后的shell。shell是Linux命令解释器

    在/etc/passwd当中,除了标准shell是/bin/bash之外,还可以写如/sbin/nologin。nologin是无法登录的意思,如果用户的shell是nologin则相当于禁用用户,禁止登录。

[root@XYLJ ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...
jiaojian:x:1000:1000:jiaojian:/home/jiaojian:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin


[root@XYLJ ~]# vim /etc/shadow
root:pLaOlEQRzvsIuEs$gGJP.fqQJmw12R0/bQMktDsm5SkDF4eCVcWaF.QbEmeXclT4Kb6d7ykpDn0s5SehOtlBTVWO4NTrrYONKC28h/::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
lp:*:17632:0:99999:7:::
...
jiaojian:LZe.XL9jeeQ4oCSeMnPXkxOd9iqMAKCXpJlOnbmW/3LC1gp.MSGSXDdDCMYhli8QccuFSr1iO6nvXgfzyt0BkUxMKmtMvhL1dpI1::0:99999:7:::
apache:!!:18939::::::
                                     
影子文件/etc/shadow

shadow的权限是0,只有root超级用户可以打开,九个字段,查看系统有哪些用户(人为创建的用户)可以打开该文件,查看用户的密码是否是编码形式的就可以知道哪些是人为创建哪些是系统创建(一般不可登录不可修改,密码为*或者!)。

  • 第1字段:用户名。

  • 第2字段:加密密码,如果密码为*或者!!表示没有密码,不能登录。在用户的加密密码前加一个!,相当于禁用这个用户的密码,让他永远也解码不了。

  • 第3字段:密码最后一次修改日期,以1970年1月1号为标准时间,每过一天加一,表示该用户创建的时间相对于标准时间的差。

  • 第4字段:两次密码的修改间隔时间,比如是10,表示相对于3字段,10天内无法改密码(和第3字段相比)

  • 第5字段:密码有效期(于第3字段相比)

  • 第6字段:密码到期前的警告时间,警告用户修改密码,比如7表示密码到期前7天的警告期,这七天内,可以不修改密码,但是会警告用户,提提醒他改密码。

  • 第7字段:密码过期后的宽限天数,(和第5字段比),如果写的是0或者不写,到期后不改密码那么立马封掉用户,如果写的-1,表示永不过期,如果写的5,那么就是密码到期后五天后还不改密码,那么会封掉账号。

  • 第8字段:账户的失效时间,用时间戳的方式。

  • 第9字段:保留字段,没用。

时间戳换算
* 把时间戳换算为日期:
[root@XYLJ ~]# date -d "1970-01-01 16066 days"
2013年 12月 27日 星期五 00:00:00 CST
*把日期换算为时间戳
[root@XYLJ ~]# echo $(($(date --date="2021/11/15" +%s)/86400+1))
18946
[root@XYLJ ~]# 

重点保护这个文件。

组信息文件/etc/group和组密码文件/etc/gshadow /etc/group
[root@XYLJ ~]# vim /etc/group

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
...
  • 第1字段:组名,每添加一个用户,都会创建一个跟用户名相同的初始组。

  • 第2字段:组的密码标志,与用户密码标志一样在gshadaw内。

  • 第3字段:组GID,组的id。

  • 第4字段:组中附加用户

/etc/gshadow
[root@XYLJ ~]# vim /etc/gshadow

root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
...

  • 第1字段:组名

  • 第2字段:组密码(一般没用,且不建议使用,小组组长拥有组密码,小组组长可以执行root的权限添加或者删除组成员,一般都是root用户可以删除添加组成员,这里不太安全,组长使用了root的权限,所以不推荐这样使用)

  • 第3字段:组管理员用户

  • 第4字段:组中附加用户

用户管理的相关文件 用户的家目录

普通用户:/home/用户名/,所有者和所属组都是此用户,权限700

超级用户:/root/,所有者和所属组都是root,权限550

将普通用户修改为超级用户,是在password里将用户uid改为0,才是真正的将其设置为超级用户,将用户的组改为0,只是将他加入root组(0),他本身不是超级用户。

用户的邮箱

/var/spool/mail/用户名/

用户模板目录

/etc/skel/

这个目录意思为,在用户创建新用户时,会在其家目录下按照模板创建一些文件或者目录,比如用户目录下的隐藏文件之类的,都是以/etc/skel/目录为模板创建新用户目录,这样我们可以编辑此模板目录来达到管理新用户文件夹内容的目的。

用户管理命令 useradd

用户添加命令

useradd [选项] [参数,新建用户名]

  • -u UID:手工指定用户uid。
  • -d 家目录:手工指定用户的家目录。
  • -c 用户说明:手工指定用户说明
  • -g 组名:手工指定用户的初始组
  • -G 组名:指定用户的附加组
  • -s shell:手工指定用户的登录shell。默认为/bin/bash

如下:添加一个名字叫super的用户,并且加入root组。

[root@XYLJ ~]# useradd -G root super (需要加入多个附加组,用逗号隔开)
[root@XYLJ ~]# passwd super
更改用户 super 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@XYLJ ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
jiaojian:x:1000:1000:jiaojian:/home/jiaojian:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
super:x:1001:1001::/home/super:/bin/bash

[root@XYLJ ~]# vim /etc/shadow
root:pLaOlEQRzvsIuEs$gGJP.fqQJmw12R0/bQMktDsm5SkDF4eCVcWaF.QbEmeXclT4Kb6d7ykpDn0s5SehOtlBTVWO4NTrrYONKC28h/::0:99999:7:::
...
jiaojian:LZe.XL9jeeQ4oCSeMnPXkxOd9iqMAKCXpJlOnbmW/3LC1gp.MSGSXDdDCMYhli8QccuFSr1iO6nvXgfzyt0BkUxMKmtMvhL1dpI1::0:99999:7:::
apache:!!:18939::::::
super:cgVxfCZ$m.BVsoZMIuDK2nrlccAFDwGI6dSVN10G.NjIXG2974a2jyg1lMHYpdTtQHuXrkjc7se2288trw1aU6wmgDQvR1:18947:0:99999:7:::

[root@XYLJ ~]# vim /etc/group
root:x:0:super  <--已加入root组。
...

useradd这条命令添加用户后,有这几个文件是被更改了:

  • /etc/passwd

  • /etc/shadow

  • /etc/group

  • /etc/gshadoe

  • /home/ (创建了一个用户文件夹,作为用户登录位置)

  • /var/spoll/mail/ (创建了一个新的用户文件夹管理用户的maill)

用户默认值文件夹:

[root@XYLJ mail]# vim /etc/default/useradd 

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

passwd

修改用户密码指令

passwd [选项] [用户]

root用户是可以修改任何用户的密码,普通用户只能修改自己的密码,并且root是通过passwd [用户名]的形式来改变用户的密码,而普通用户修改自己密码直接passwd即可。

  • -S 查询用户密码的密码状态,root用户可用。
  • -l 暂时锁定用户,仅root用户可用。就是在用户shadow文件里面密码编码前加两个!,导致解码错误,从而锁定用户。
  • -u 解锁用户。仅root用户可用
  • –stdin 可用通过管道符输出的数据作为用户的密码。用于批量添加用户,的初始密码,所以很多系统都会给用户一个默认密码,第一次登入后需要用户更改密码,因为这样默认添加的密码是明文密码,没有加密,所以需要第一次登录更改。
usermod

usermod [选项] [参数,新建用户名]

修改用户信息命令,其选项与useradd一样,只是这里是修改。

  • -u UID:手工指定用户uid。
  • -d 家目录:手工指定用户的家目录。
  • -c 用户说明:手工指定用户说明
  • -g 组名:手工指定用户的初始组
  • -G 组名:指定用户的附加组
  • -s shell:手工指定用户的登录shell。默认为/bin/bash
  • -L :锁定用户
  • -U :解锁用户
chage

修改用户密码状态

chage [选项] [用户名]

  • -l 列出用户的详细密码状态。

  • -d 日期:修改密码最后一次更改日期(shadow 3字段)

  • -m 天数:两次密码修改间隔(4字段)

  • -M 天数:密码有效期(5字段)

  • -W 天数:密码过期前警告天数(6字段)

  • I 天数:密码过后宽限天数(7字段)

  • E 日期:账号失效时间(8字段).

这个命令用到最多的是**chage -d 0 [用户名]**这样改的话,该用户上一次修改密码日期为标准日期1970.1.1,这样用户登录时系统会让他必须修改密码,这样是为了保证系统的安全性,要求新用户必须修改密码。

userdel

删除用户命令

userdel [选项] [参数,用户名]

  • -r ,删除用户的同时将其家目录也删除。一般都会使用-r。
id

查看用户的id号和组id命令

id [用户名]

su

切换用户身份

su [选项] [用户名]

  • -: 选项只使用“-”表示连带着用户的环境变量一起切换
  • -c 命令:仅执行一次命令,而不切换用户身份

env命令:查看环境变量命令

[jiaojian@XYLJ ~]$ su root
密码:
[root@XYLJ jiaojian]# env
XDG_SESSION_ID=57
HOSTNAME=XYLJ
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=172.20.117.1 61987 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/3
USER=jiaojian
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/jiaojian/.local/bin:/home/jiaojian/bin
MAIL=/var/spool/mail/jiaojian
PWD=/home/jiaojian     <---环境变量没变。
LANG=zh_CN.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
HOME=/root
SHLVL=2
LOGNAME=jiaojian
SSH_CONNECTION=172.20.117.1 61987 172.20.117.132 22
XDG_DATA_DIRS=/home/jiaojian/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=localhost:11.0
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/root/.xauthqUnMyz
_=/usr/bin/env

简单的使用su 用户这种方式切换用户是不完全的,环境变量没有切换,切换了他的身没有切换他的心,选项“-”为完全切换。

[jiaojian@XYLJ ~]$ su - root
密码:
上一次登录:二 11月 16 17:10:03 CST 2021pts/3 上
[root@XYLJ ~]# env
XDG_SESSION_ID=57
HOSTNAME=XYLJ
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=localhost:11.0
XAUTHORITY=/root/.xauthvdz6bP
_=/bin/env

不切换用户执行一条命令用-c 选项:

[jiaojian@XYLJ root]$ su - root -c "useradd tanshuai"
密码:
[jiaojian@XYLJ root]$ id tanshuai
uid=1002(tanshuai) gid=1002(tanshuai) 组=1002(tanshuai)
[jiaojian@XYLJ root]$ 

用户组管理命令 groupadd

groupadd [选项] [组名]

  • -g GID:指定组GID
groupmod

groupmod [选项] [组名]

  • -g GID:修改组ID
  • -n 新组名:修改组名

这里最好不要改组名,因为改后会需要改后续很多东西,如果非必要,直接删除组再新建组会跟容易些。

groupdel

groupdel [组名]

删除组需要注意,如果组里面有初始用户,那么无法删除,因为初始用户没有地方放,如果组内只有附加用户,那么可用删除。

gpasswd

添加附加用户。

gpasswd [选项] [组名]

  • -a 用户名:把用户加入组
  • -d 用户名:把用户从组中删除

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5503588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存