美文网首页
Linux用户和用户组概念及配置

Linux用户和用户组概念及配置

作者: 菜菜菜菜鸟 | 来源:发表于2020-01-01 01:11 被阅读0次

Linux是一个多用户多任务的操作系统,多用户指多个用户可以同时使用该操作系统完成相应的操作,多任务是指Linux可以同时执行几个任务,可以在还未执行完一个任务时又执行另一项任务,通过并行和并发来实现。

多用户就要面临着用户管理的问题,主要有用户密码、权限、组的管理,实际通过以下文件来进行控制,一些辅助命令也是对以下几个文件进行操作。

/etc/passwd

存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
......

采用冒号进行分割,分别是用户名、密码、用户id、组id、备注、家目录、默认shell,以下进行较为详细的解释说明:

用户名

用户名就不解释了,简单的来说就是Linux用户的一个绰号

密码

密码位置一般是X,只是一种标致,真正的密码保存在/etc/shadow文件中,但是如果该位置为空,系统会认为该用户不需要密码即可登录

用户ID

一般称为UID,Linux系统是通过UID来识别不同的用户和分配用户权限的,0表示超级用户,把普通用户的UID修改为0即可变为一个超级管理员,但实际是不允许这么操作

组id

一般称之为GID,一个用户可以属于多个组,这里显示的是用户的初始化时候的组,也就是第一个组,一般就是将和这个用户的用户名相同的组名作为这个用户的初始组。另外就是附加组的概念了,也就是后来陆陆续续加入的其他组,可以在/etc/group文件中查看。
另外初始组后续也是可以修改的。

备注

一般默认就是用户名,也可以设置成其他的信息,就是一个简要的说明,实际生产中也很少用到。

家目录

用户登录计算机后,首先进入的那个目录就是家目录,后续再任意位置执行cd ~即可到达家目录。

默认shell

shell是一个命令行解释器,简单的来说就是人与机器命令交互的窗口,相当于win下的视窗,常见的shell解释器有sh、bash这两种,其他的有ksh、csh等不是特别常见,现在的主流Linux默认shell是bash,一般个人使用尤其是在mac上会安装一下zsh,主要是因为oh-my-zsh这个傻瓜是的配置工具,提供了命令不全、美化、各种神插件提升工作效率。

/etc/shadow

由于设计上/etc/passwd所有用户都有读权限,因此密码保存在这上面所有用户都可以看到,是不安全的,后来就将密码相关的内容同单独拉出来一个文件进行保存,并且加了其他的一些参数更加有效的保障密码的安全。

cat /etc/shadow
root:$6$FJ.dgxnl$asdffrEo4ePq427V5pJq9VCAmfsQrzZkBw2ac7FlYPdepgBURTFPV7sfmH9d7vK3xkJ0Yz0bm6ReM5mkiciQC.:17984:0:99999:7:::
daemon:*:17212:0:99999:7:::
bin:*:17212:0:99999:7:::
sys:*:17212:0:99999:7:::

同样也是采用冒号分割,分别是用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

用户名

用户名就不用解释了,与passwd文件中的用户名对应

密码

现在密码一般采用SHA512 散列加密算法,加密等级更高,也更加安全
最后修改时间这个数字指的是从1970 年 1 月 1 日作为 1 不断累加得到的天数,可以通过以下命令查看是哪一天创建的

date -d "1970-01-01 17984 days"
2019年 03月 29日 星期五 00:00:00 CST

最小修改时间

最小修改时间间隔指的是小于间隔时间不得修改密码,设为0则可以随时修改,主要是为了避免频繁修改代码

密码有效期

密码有效期代表允许密码多少天内可以不修改

告警天数

密码警告天数,在设置了有效期之后提前多少天提醒用户修改密码
过期宽限时间,过期后多少天以内可以使用,为空或者为-1代表永不过期,过期后则不可以再登录

账号失效时间

账号失效时间,该账号只准使用多少天,超过这个天数则不可以再使用

chage命令

以上信息可以通过以下命令获取,实际还是读取的该文件,只不过进行了格式化输出:

# chage -l root
Last password change                                : 3月 29, 2019
Password expires                                    : never
Password inactive                                   : never
Account expires                                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

该命令除了查看配置参数意外还可以进行配置,相应的参数如下:

  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY
  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -h, --help                    display this help message and exit
  -I, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --list                    show account aging information
  -m, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -M, --maxdays MAX_DAYS        set maximim number of days before password
                                change to MAX_DAYS
  -R, --root CHROOT_DIR         directory to chroot into
  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

其实这个命令只是做了一层校验,防止将配置文件修改错误,跟vipw这个命令类似。

vipw & vigr命令

这两个命令最主要就是会给文件加锁!以免在编辑文件时!其他用户也在同时使用文件!而造成其他用户修改的不成功!以下为官方简介:

The vipw and vigr commands edits the files /etc/passwd and
/etc/group, respectively. With the -s flag, they will edit the shadow
versions of those files, /etc/shadow and /etc/gshadow, respectively.
The programs will set the appropriate locks to prevent file
corruption. When looking for an editor, the programs will first try
the environment variable VISUAL, then the environment variableEDITOR, and finally the default editor, vi(1).

对应修改的文件如下:

vipw     修改/etc/passwd文件
vipw –s  修改/etc/shadow文件
vigr     修改/etc/groups文件
vigr –s  修改/etc/

忘记密码

普通用户忘记密码可以通过root用户来设置,root用户要是忘记密码进入单用户模式,执行passwd root修改密码即可,不过不同的发行版本可能有一定差异。

/etc/group

用户组的所有信息都存放在/etc/group文件中,用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,用户与用户组是多对对的关系

cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
.....

该文件有四个字段:组名:密码:组ID:组内用户列表

组名

该小组的名称,理论上不能重复,可以由字母和数字构成

密码

这里跟passwd文件中类似,实际存储在/etc/gshadow文件中,实际工作中需要调整组信息一般用root代替,这里是为了设置组管理员的,一般使用不到。

组ID

一般称为GID,跟UID一样,实际Linux中文件也是通过id也标识的,名字只是为了方便用户记忆和识别。

组用户

该群组包含的所有用户,使用,分割

/etc/gshadow

/etc/gshadow和/etc/group是互补的两个文件,跟上面的用户管理文件类似,

cat /etc/gshadow
root:*::
daemon:*::
bin:*::
sys:*::

分别是用户组、密码、管理者、组成员(附加用户),比较简单就不详细介绍了。

相关命令

用户账号的管理工作主要涉及到用户账号的添加、修改和删除,以及所属组的管理,本质上可以抽象为增删改查。

用户

用户管理主要是新建用户、用户后续的信息修改等。

新建用户

useradd创建一个新用户,常见参数如下:

-u UID:指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID

-g GID/GROUPNAME:指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在

-G GROUPS:指定额外组

-c COMMENT:指定用户的注释信息

-d PATH:指定用户的家目录

一般我们穿件用户都会穿件相应的用户组和家目录,所以最长使用以下命令:

useradd -s /bin/bash -m user_name

删除用户

如果一个用户的账号不再使用,可以从系统中删除,使用userdel命令,不加-r参数只是删除用户,但还保留用户家目录,加上之后则完全删除。

userdel -r sam

修改用户

更改用户的有关属性,如用户号、主目录、用户组、登录Shell等,使用usermod命令。

修改用户名
usermod -l old_name  new_name 
修改家目录

需要root用户执行

usermod -d /home/old_name -m ole_name
```bash
##### 修改组名
```bash
groupmod -n old_g_name  new_g_name
修改密码

后面跟上用户名可以修改其他用户的密码,前提是有权限。

passwd
Enter new UNIX password:

其他命令可以自行查看手册。

用户组的管理涉及用户组的添加、删除和修改,跟上面的用户管理一样,本质也都是对对应文件的修改。

创建组

一般是直接创建组或者指定GID创建组,

groupadd g_name
groupadd -g $gid g_name

删除组

groupdel group_name 

修改组

那就是修改组id或者组名了,后面只有一个组名则只是修GID,否则是同时修改

groupmod –g $gid -n group_new_name group_old_name

相关文章

网友评论

      本文标题:Linux用户和用户组概念及配置

      本文链接:https://www.haomeiwen.com/subject/nfkwoctx.html