Linux基础系列(四)系统用户和组管理

简介:

Linux系统是一个多用户、多任务的操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,并授予相应的权限给到这个账号后才能进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。


每个用户账号都拥有一个惟一的用户名和密码。用户只有在提供了正确的用户名和密码之后,才能够进入系统和自己的主目录。(这就类似于我们向银行申请个人账号,银行会为你创建一个个人账号和密码,并只授予你部分业务有相应的权限,如存钱、转帐,银行可以通过后台跟踪你的账号信息,用户享有相应的安全性保护)。


用户和组的UID的定义说明

Linux用户:

管理员:UID为“0”;

普通用户: UID 为“1-65535

Linux组:

系统组:CentOS 6的UID为“1-499”,CentOS 7的UID为“1-999

普通组:CentOS 6的UID为“500+”,CentOS 7的UID为1000+


简单的理解为用户名和它对应的UID、用户组和组UID他们都是唯一,比如我们要查看一下Root用户的用户属于,可以通过直接查询用户名、或者是UID,如下:

1
2
3
4
[root@localhost ~] # id root
uid=0(root) gid=0(root)  groups =0(root)
[root@localhost ~] # id 0
uid=0(root) gid=0(root)  groups =0(root)

Linux用户和组相关的配置文件

/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);

1
2
[root@localhost ~] # cat /etc/passwd
root:x:0:0:root: /root : /bin/bash

意义:用户名:密码:UID:GID:附加组:主目录:默认shell

/etc/group:组及其属性信息;

1
2
[root@localhost ~] # cat /etc/group
gentoo:x:2201:mandriva

意义:组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)

/etc/shadow:用户密码及其相关属性;

1
2
[root@localhost ~] # cat /etc/shadow
root:$1$6usIQoRH$544LSxLOucbxu6ONNAHea.:16787:0:99999:7:::

意义:用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段

/etc/gshadow:组密码及其相关属性;


用户和组相关的管理命令


用户创建命令:useradd

1
2
语法格式:
useradd  [options] LOGIN  #useradd 选项 用户名

选项包含如下:

1
2
3
4
5
6
7
-u UID: 用户号(身份标识),[UID_MIN,UID_MAX],定义在 /etc/login .defs
-g GID:指明用户所属基本组,可为组名,也可以GID;
-c  "COMMENT" :用户的注释信息;
-d: 以指定的路径为家目录(主目录),如果此目录不存在,则同时使用-m选项,可以创建目录;
-s SHELL: 指明用户的默认登录shell程序,可用列表在 /etc/shells 文件中;
-G GROUP1: 为用户指明附加组;组必须事先存在;
-r: 创建系统用户:

组创建命令:groupadd

1
2
语法格式:
groupadd [OPTION]... group_name  #groupadd 选项 用户组

选项包含如下:

1
2
-g GID: 指明GID号;[GID_MIN,GID_MAX]
-r: 创建系统用户:(CentOS 6 : ID<500;  CentOS 7 : ID<10)

例如:

1、增添一个新组名为group1

1
#groudadd group1

2、增添一个新组名为group2,用户的UID120

1
#groupadd –g 120 group2

组删除命令:groupdel

groupdel [OPTION]... group_name  #group 选项 组名

1
例如:[root@localhost ~] # groupdel Linux

例如:创建用户Jim,登录shell/bin/csh,附加组为Admin,注释信息为"Gentoo Distribution",家目录为/usr/jim

1
2
[root@localhost ~] # groupadd Admin
[root@localhost ~] # useradd -s /bin/csh -GAdmin -c "Gentoo Distribution" -d /usr/jim -m jim

删除用户命令 userdel

1
命令语法:userdel [OPTION]... login   #userdel 选项 用户名

-r:删除用户家目录;

1
例如:[root@localhost ~] # userdel -r jim #删除用户jim以及家目录

切换用户或以其他用户身份执行命令:su

1
语法格式: su  [options...] [-] [user [args...]]

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~] # su jimjimlv  #切换至用户jimjimlv
[jimjimlv@localhost root]$  ls   #已切换至用户jimjimlv,尝试运行ls命令 
ls : cannot  open  directory .: Permissiondenied   #此时报错,原因是当前目录仍在root下,而用户jimjimlv是没有权限访问root用户目录下的文件,
[jimjimlv@localhost root]$  su  – root   #切换为root用户 
Password:
Last login: Tue Jan  5 19:22:53 PST 2016 on pts /0
[root@localhost~] # su – jimjimlv   #切换至用户jimjimlv,这次我们使用“-”选项       
Last login: Tue Jan  5 19:23:04 PST 2016 on pts /0
[jimjimlv@localhost ~]$  ls   #成功切换至用户jimjimlv,当前目录也为用户jimjimlv的家目录,
Desktop Documents  Downloads  game.sh Music  Pictures  playground Public  Templates  Videos
[jimjimlv@localhost ~]$  su  - root
Password:
Last login: Tue Jan  5 19:23:37 PST 2016 on pts /0
[root@localhost ~] # su jimjimlv
[jimjimlv@localhost root]$  su  - root -c  ls  #以root账号执行ls命令
Password:
anaconda-ks.cfg  config.sh passWD  Passwd

总结:

su UserName:非登录式切换,即不会读取目标用户的配置文件;

su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;

换个身份执行命令:su [-] UserName -c 'COMMAND'

备注:root su至其他用户无须密码;非root用户切换时需要密码;

用户属性修改:usermod

语法格式:usermod [OPTION] login  #usermod 选项 用户名

1
2
3
4
5
6
7
8
9
10
11
-u UID: 新UID
-g GID: 新基本组
-G:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
-s SHELL:新的默认SHELL;
-c  'COMMENT' :新的注释信息;
-d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
-l login_name: 新的名字;
-L: lock指定用户
-U: unlock指定用户
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限

例如:修改用户jimjimlvshell /bin/zch家目录为/home/jimjimlv, 注释信息为“Revies Deitribution”,用户组为“Linux

1
[root@localhost home] # usermod -s /bin/zch-d /home/jimjimlv -m -c "Revies Distribution" -G Linux jimjimlv

用户密码管理:passwd

用户管理的一项重要内容是用户密码的管理。用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。

 

指定和修改用户密码的Shell命令是passwd。超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。命令的格式为:

1
Passwd  [OPTIONS] UserName   passwd  选项 用户名
1
2
3
4
5
6
7
8
-l: 锁定指定用户,即禁用账号
-u: 解锁指定用户
-d:使账号无密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限;
-f: 强迫用户下次登录时修改密码

密码的复杂性策略:

1、使用数字、大写字母、小写字母及特殊字符中至少3种;

2、足够长;

3、使用随机密码;

4、定期更换;不要使用最近曾经使用过的密码;

例如:

修改用户Rain的登录密码

1
2
3
4
5
[root@localhost ~] # passwd Rain
Changing password  for  user Rain.
New password:
Retype new password:
passwd : all authentication tokens updatedsuccessfully.

只允许管理员修改密码

1
2
3
4
[Rain@localhost ~]$  passwd  jimjimlv
passwd : Only root can specify a user name.
[Rain@localhost ~]$  passwd  Rain
passwd : Only root can specify a user name.

使用选项“-l”锁定用户账号,使其不能登录

1
2
3
[root@localhost ~] # passwd -l Rain
Locking password  for  user Rain.
passwd : Success










本文转自 Nico_Lv 51CTO博客,原文链接:http://blog.51cto.com/nearlv/1732074,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
526 3
Linux系统禁用swap
|
6月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1045 3
|
7月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
7月前
|
存储 Ubuntu Linux
「正点原子Linux连载」第二章Ubuntu系统入门
在图2.8.2.4中,我们使用命令umount卸载了U盘,卸载以后当我们再去访问文件夹/mnt/tmp的时候发现里面没有任何文件了,说明我们卸载成功了。
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
631 3
Linux系统初始化脚本
|
7月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
463 18
|
6月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
608 1
|
6月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1194 1
|
7月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1996 10
|
7月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
1161 0