[Linux] Linux用户管理

概述

Linux下有三类用户:

  • 1.超级用户:root具有操作系统的一切权限,uid为0;
  • 2.普通用户:具有操作系统有限的权限,uid 在500-6000之间;
  • 3.伪用户:为了方便系统管理,满足相应的系统进程文件属主的要求,不能登录,uid在1-499之间;如ftp用户、apache用户。

Linux用户相关文件:

  • 1./etc/passwd:保存用户账号相关信息
    在/etc/passwd下,只定义账号不定义口令,在该文件中一行定义一个用户,冒号将每行分七个部分:
    账号名称、密码、用户标识码(id)、用户组id、用户相关信息、用户home目录、用户环境;

  • 2./etc/shadow:保存密码相关信息
    在/etc/shadow下,只有root可以读,用冒号将其分成9段:
    用户名、口令(加密口令,如果第一个字符为!则不能登录)、最后一次修改时间、最大时间间隔、最小时间间隔(99999表示永不过期)、警告时间、不活动时间、失效时间

  • 3./etc/group:保存用户组信息,共有四个部分:分别表示用户组名称、用户组密码、GID、用户组支持的用户。

用户账号管理:

1.创建用户

创建一个用户,一般需要做以下的工作:

  • 1.在/etc/passwd中添加一条记录
  • 2.创建用户的主文件夹
  • 3.在主文件夹中配置默认的配置文件
  • 4.设置初始密码

这些工作可使用useradd来完成,该命令及其参数如下:

useradd [-u uid] [-g 初始用户组] [-mMr] [-d 主文件夹] username

参数说明:
-u UID :指定用户的uid
-g groupname:指定用户初始用户组
-m:强制创建用户主文件夹
-M:强制不创建用户主文件夹
-r:创建一个伪用户账号,uid被限制在1-500之间

如,要创建一个用户名为Tom的用户:

root@ubuntu:/# useradd Tom

查看三个用户相关文件:

root@ubuntu:/# cat /etc/passwd | grep Tom
Tom:x:1004:1004::/home/Tom:
root@ubuntu:/# 
root@ubuntu:/# cat /etc/shadow | grep Tom
Tom:!:17730:0:99999:7:::
root@ubuntu:/# cat /etc/group | grep Tom
Tom:x:1004:

如果不加任何参数,则useradd命令将会使用默认值,查看/home文件夹,你会发现它并没有创建用户主文件夹,这个默认配置有关,其默认值配置在/etc/login.defs中,如以下这些默认值:

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
GID_MIN                  1000
GID_MAX                 60000

因此,如果要在创建用户时默认创建文件夹,则在/etc/login.defs文件中添加配置信息:

CREATE_HOME    yes

如果使用useradd -m|M创建用户,则无论CREATE_HOME是否配置,将会强制进行主文件夹的创建或不创建。

另外,使用useradd -D可以查看创建用户的预设值:

jyq@ubuntu:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

2.设置密码

当创建好用户后,是否就可以登录了呢?由于没有设置密码,因此此时还不能进行登录,查看/etc/shadow可看到,创建的用户第二栏为一个感叹号,说明此时密码是被封锁的,因此,还需要对新建用户设置密码。

passwd [options] [LOGIN]

常用options:

-l: 使得LOGIN用户密码失效,锁定用户
-S: 查看当前用户密码状态
-u: 解锁该用户

jyq@ubuntu:~$ sudo passwd jyq
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
jyq@ubuntu:~$ 

查看/etc/shadow:

jyq:$6$hMJPDwyq$uSaG3tK.HuC7G0h7gIAPN/xmSujFTlZ6aj.KkcoZ2sDHktDV4b1Dqp0P7jwa3jJMcQoQpSJ0uf0YTk56Ydcwf/:17735:0:99999:7:::

此时,就可以使用用户名jyq登录使用了。

锁定用户登录密码

如果要禁止某个用户登录,则可以通过passwd -l锁定该用户:

jyq@ubuntu:~$ sudo passwd -l jyq
passwd: password expiry information changed.

此时查看/etc/shadow文件,则会在密码栏加入了感叹号:

jyq:!$6$hMJPDwyq$uSaG3tK.HuC7G0h7gIAPN/xmSujFTlZ6aj.KkcoZ2sDHktDV4b1Dqp0P7jwa3jJMcQoQpSJ0uf0YTk56Ydcwf/:17735:0:99999:7:::

此时再使用该用户登录,则登录失败。

解除密码锁定

要解除锁定,则使用passwd -u命令:

jyq@ubuntu:~$ sudo passwd -u jyq
passwd: password expiry information changed.
jyq@ubuntu:~$ 

此时查看/etc/shadow文件,发现感叹号消失:

jyq:$6$hMJPDwyq$uSaG3tK.HuC7G0h7gIAPN/xmSujFTlZ6aj.KkcoZ2sDHktDV4b1Dqp0P7jwa3jJMcQoQpSJ0uf0YTk56Ydcwf/:17735:0:99999:7:::

3.删除用户

删除用户使用userdel命令,具体参数如下:

userdel [options] LOGIN

options:
-f:  强制删除该用户对应文件
-r:  删除主文件夹目录和邮件目录
-Z:  移除和该用户映射的SElinux用户

如:

$ sudo userdel -fr jyq

此时查看/etc/shadow文件,对应用户则删除。

4.修改用户

经常需要对创建的账户进行修改,修改账户使用usermod命令:

 usermod [options] LOGIN
 
 options:
 -c:  修改账号描述信息,即/etc/passwd第五列内容
 -d:  修改主文件夹目录
 -g GROUP:  修改用户初始用户组
 -G GROUP:  修改用户次要用户组
 -a:和-G一起使用,表示添加次要用户组
 -l new LOGIN:  修改用户名称
 -L:  锁定用户
 -U:  解除锁定

用户之间的切换

用户之间进行切换,常用的有两个命令:susudo.

su的使用

su可以进行任何用户之间的切换,使用参数如下:

su [-lmpc] [username]

options:
-:   单独使用,表示将以login-shell的方式登录用户
-l:  同-
-m/p:  表示使用当前的环境变量,不会读取新用户的环境变量
-c:  后加一个命令,表示仅仅执行一次命令

使用su来进行切换用户时,都需要用户密码;如果不指定用户名,则默认切换为root用户,如susu -就表示切换到root用户,但需要root密码:

jyq@ubuntu:~$ su
Password: 
root@ubuntu:/home/jyq#
# 查看PATH变量,依旧使用原来用户的配置
root@ubuntu:/home/jyq# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
# exit将会退出su的环境
root@ubuntu:/home/jyq# exit
exit
# 使用-或者-l,则表示使用loging-shell的方式登录,因此会重新读取环境变量
jyq@ubuntu:~$ su -
Password: 
root@ubuntu:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
root@ubuntu:~# 

再来看一个和非root用户切换的示例:

# 由jyq切换为jack
jyq@ubuntu:~$ su -l jack
Password: 
jack@ubuntu:~$ exit
logout
jyq@ubuntu:~$ 

su的优缺点可以总结如下:

  • 优点:可以在任意用户之间进行切换。
  • 缺点:需要切换用户的密码。

从上面可以看出,由于每次切换都需要密码,如果多人都需要切换root用户进行操作,那么每个人都需要知道root用户的密码,安全性就下降了不少。

sudo的使用

sudo允许授权用户以超级用户的权限来执行命令。该命令可以说是非常常用了,在上述的示例中都有用到了它,这里就来说下它的具体含义。
相对于su命令在切换用户时,需要知道用户的密码,sudo命令则只需要输入当前用户密码就可以了。默认情况下,仅仅root用户可以执行sudo,因此,这个命令一般用来对普通用户没有权限的命令以root身份进行执行,使用方式如下:

sudo [-u username]

sudo -u username这种方式不常用,因此这里就不做总结。sudo经常用来操作root,如:

jyq@ubuntu:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied
jyq@ubuntu:~$ 

当以普通用户查看/etc/shadow文件时,无法查看,会提示Permission Denied,那么就可以通过sudo命令以root身份查看:

jyq@ubuntu:~$ sudo cat -n /etc/shadow | sed -n 1,5p
[sudo] password for jyq: 
     1	root:$6$7fR3XIQ/$2UTREEJManpDqwi6q47YOgwPIhcQ392Espq6Er/vpYVuT.mLHOdgJ.bWr.QrGDI0EjuG/YVliT508pQmEbt3O0:17730:0:99999:7:::
     2	daemon:*:17212:0:99999:7:::
     3	bin:*:17212:0:99999:7:::
     4	sys:*:17212:0:99999:7:::
     5	sync:*:17212:0:99999:7:::
jyq@ubuntu:~$ 

当通过useradd -m xxx新添加一个用户后,使用该帐号登录后使用sudo时,有可能会出现:

xxx is not in the sudoers file. This incident will be reported

此时需要配置/etc/sudoers文件:

$ sudo vim /etc/sudoers
# 使用者账号  登陆者的来源主机名=(可切换的身份)  可下达的命令,ALL为默认值
xxx   ALL=(ALL) ALL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值