Linux中用户/组/密码管理相关操作

简介: Linux中用户/组/密码管理相关操作

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

【1】 添加用户


useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。


基本语法

useradd [options] 用户名


options选项如下:

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;默认情况下家目录是/home下的与用户名同名的目录
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;可以使用GID也可以使用组名来为其指明基本组
-G<群组>:指定用户所属的附加群组;附加组可以有多个,多个附加组之间用逗号隔开
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。根据规定,普通用户的UID必须大于499且不能和已存在的UID重复


-r 添加新用户为系统用户,系统用户的UID在1-499之间,一般不能登入,没有家目录。

注:该命令添加的用户的部分默认参数(比如用户的默认shell)在/etc/default/useradd文件中。

实例

useradd janus

细节说明

1)当创建用户成功后,会自动的创建和用户同名的家目录;

2)也可以通过useradd -d 指定目录新的用户名,给新创建的用户指定家目录。

改变该用户登陆的初始目录

usermod –d 目录名  用户名


使用 -d 修改用户家目录的时候最好用再配合 -m 使用,其意思是修改家目录的同时把原来家目录下的文件复制一份到目的家目录。

添加用户并指定uid

useradd -u 1000 jane

添加用户并指定基本组gid

useradd -g 1000 jane2

指定新添加的用户的附加组

useradd -G jane,root jane3

注:如果使用-G为用户修改附加组的话,默认情况下会覆盖原有的附加组,如果只想追加新的附加组可以使用 -aG 其中a表示追加。

为新添加的用户指定默认shell

useradd -s /bin/bash  jane

修改用户的登入shell还可以使用 chsh (change shell)命令。其用法为 chsh USERNAME

可以用pwck来检查用户账号的完整性。

添加用户指定主要组和附加组

useradd –g sales jack –G company,employees    //-g:加入主要组、-G:加入次要组

【2】查看用户信息


id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。


当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。如往常一样,你可以在控制台输入man id进入id的手册页来获取更多的详情

用法:id [option] [USERNAME],不指定用户名时默认用户为当前用户。

-u 查看UID
-g 查看基本组的GID
-G 查看所有组的GIO
-n 和上面的选项组合使用,用于显示名称,而非id号

实例如下

[root@localhost home]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost home]# id amaer
uid=1000(amaer) gid=1000(amaer) groups=1000(amaer)

如果想查看用户家目录,还可以在 /etc/passwd中查看:

vim /etc/passwd


【3】指定/修改密码

语法

passwd 用户名

实例

[root@bogon home]# passwd janus
Changing password for user janus.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

如果密码过于简单,Linux将会提示,这时可以坚持一下~


【4】删除用户

userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。


语法

userdel  [options]  用户名

选项

-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。

实例

//userdel 有哪些选项
[root@bogon home]# userdel --help
Usage: userdel [options] LOGIN
Options:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -R, --root CHROOT_DIR         directory to chroot into
  -Z, --selinux-user            remove any SELinux user mapping for the user
//删除用户但是保留家目录
[root@bogon home]# userdel janus
[root@bogon home]# ll
total 8
drwx------. 25 jane jane 4096 Jun  4 07:20 jane
drwx------.  4  501  501 4096 Jun  5 08:42 janus
[root@bogon home]# rm -rf ./janus/
[root@bogon home]# ll
total 4
drwx------. 25 jane jane 4096 Jun  4 07:20 jane
//再次创建用户Janus
[root@bogon home]# useradd janus
Creating mailbox file: File exists
[root@bogon home]# ll
total 8
drwx------. 25 jane  jane  4096 Jun  4 07:20 jane
drwx------.  4 janus janus 4096 Jun  5 08:49 janus
//删除用户和家目录
[root@bogon home]# userdel -r janus
[root@bogon home]# ll
total 4
drwx------. 25 jane jane 4096 Jun  4 07:20 jane

【5】修改用户信息


usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。

语法

usermod   (选项)   用户登录名

选项

-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。

实例

#修改newuser的用户名为newuser1:
usermod -l newuser1 newuser

【6】切换用户

在操作Linux中,如果当前用户的权限不够,可以通过su -指令,切换到高权限用户,比如root。

语法

su –切换用户名

实例

//从root切换到jane不需要密码
[root@bogon home]# su jane
//从jane切换到root需要密码
[jane@bogon home]$ su root
Password: 
//exit-jane
[root@bogon home]# exit
exit
//exit-jane-root
[jane@bogon home]$ exit
exit
[root@bogon home]# 

细节说明

1)从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

2)当需要返回到原来用户时,使用exit指令。


【7】查看当前用户/登录用户/用户组

查看用户语法

whoami/ who am I

实例

[root@bogon home]# whoami
root
[root@bogon home]# id root
uid=0(root) gid=0(root) groups=0(root)

用户组类似于角色,系统可以对有共性的多个用户进行统一的管理。

新增组

  • 指令
groupadd 组名


  • 实例
groupadd mygroup
//使用命令查看
cat /etc/group/


另外,还可以发现创建用户的时候同时创建了用户组。


删除组

  • 指令
groupdel 组名
  • 实例
groupdel mygroup

增加用户时指定到存在的组

  • 指令
useradd –g 用户组 用户名
  • 实例
[root@bogon home]# groupadd mygroup
[root@bogon home]# useradd -g mygroup janus
[root@bogon home]# id janus
uid=501(janus) gid=501(mygroup) groups=501(mygroup)

修改用户组

  • 指令
usermod –g 用户组 用户名
  • 实例
[root@bogon home]# groupadd mygroup2
[root@bogon home]# usermod -g mygroup2 janus
[root@bogon home]# id janus
uid=501(janus) gid=502(mygroup2) groups=502(mygroup2)

用户和组的相关文件

  • /etc/passwd 文件-用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell


  • /etc/shadow 文件-口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志


  • /etc/group 文件-组(group)的配置文件,记录Linux包含的组的信息

每行含义:组名:口令:组标识号:组内用户列表


【8】几个核心配置文件


几个配置文件

/etc/passwd —— 账号文件
/etc/shadow —— 密码文件
/etc/group—— 组信息文件
/etc/gshadow —— 组密码文件
/etc/skel —— 用户默认家目录的备份文件

① 账号文件

[root@VM_0_12_centos ~]# tail -f /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:500:501::/home/mysql:/sbin/nologin
jane:x:501:502::/home/jane:/bin/bash

passwd文件中的配置规则如下:

用户名:密码占位符:用户ID:组ID:一般的信息:家目录:默认登入shell

② 密码文件

shadow文件的配置规则如下:


账号

加密的密码,注意前三个字符 &6& 代表着密码的加密方式,后面会用到。

最后一次修改密码的日期,该位是从1970年1月1号开始到上次密码修改的天数,0表示用户下一次登入需要改密码,空白表示密码年龄功能被禁用。

密码最小年龄,0或空白表示没有最小年龄。

密码最大年龄,空白表示没有密码最大年龄。超过密码最大年龄还未改密码将进入密码警告时间段。

密码警告时间段,该阶段会提示用户修改密码,0或空白表示没有密码警告时间段,超过密码警告时间段将密码禁用期。

密码禁用期,该阶段会强制用户修改密码,不修改就无法登入。空白表示没有禁用期,超过将进入账户过期期。

账户过期期,账户过期后该账户将无法登入,该位与上面的密码禁用期有所不同,密码禁用期超过后用户只要修改密码后就可以重新登入,而账户过期永远无法登入,除非管理员解封。

保留位,该字段保留未用。


③ 组信息文件

[root@VM_0_12_centos ~]# tail -f /etc/group
dbus:x:81:
slocate:x:21:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
syslog:x:498:
systemd-journal:x:500:
mysql:x:501:
jane:x:502:

用户组文件规则如下:

组名:密码占位符:组ID:以该组为额外组的组内用户

【9】nobody用户

① 说明


正如window系统在安装完毕后会自动建立一些用户账号,linux也会生成一些目标是为了完成特定任务的账号,如nobody和ftp。


首先,nobody是一个普通用户,没有特权,他存在的目的是为了让任何人都能登录系统,通俗来说: 一个系统,任何人都能登录,那么当我们登录后,我们的身份是什么,我们是nobody,可以看做一个特殊的名分。 使用nobody用户名的目的是,使任何人都可以登录系统,但是其 UID 和 GID 不提供任何特权,即该uid和gid只能访问人人皆可读写的文件。


很多系统都会按照惯例创建一个nobody,并且将其权限降到最低。例如服务器对外公布,会让客户以nobody身份登录,由于权限很低,这样能降低风险,这也是其存在的意义。


② 注意


尽量不要在任何地方使用该用户,比如nginx.conf 。如果配置了user nobody,恭喜你你会遇到莫名其妙的错误!这也就是说如果项目出了非正常错误,第一是查看磁盘空间IO网络等,第二就是查看某些配置的用户权限、所属用户对象!

目录
相关文章
|
3月前
|
监控 安全 Linux
在Linux中设定账户密码的安全性策略
这些操作应该由有经验的系统管理员进行,因为不当的配置可能导致无法预期的安全问题或者系统访问问题。此外,提升安全性的同时,也需要考虑到用户的便利性,避免设置过于严苛的政策导致用户体验不佳。通常,强密码策略配合两因素认证(2FA)将大大加强账户的安全性。
238 13
|
4月前
|
运维 Ubuntu Linux
Linux重置root用户密码
本文详细介绍了Linux系统中root密码重置的核心技能,涵盖主流发行版如RHEL、CentOS、Debian、Ubuntu、Arch、openSUSE等的实操方法。内容包括通过GRUB引导编辑、单用户模式和Live CD救援三种方式重置密码的具体步骤,适配物理机、虚拟机及云服务器环境。文章分步解析了启动拦截、权限获取和密码重置三大阶段,并提供各发行版的实际操作代码示例,帮助管理员快速解决忘记root密码的问题。
|
8月前
|
安全 Linux 数据安全/隐私保护
linux root登陆,密码正确但,错误提示su: Authentication failure
通过系统化的排查和解决方案,可以有效应对 `su: Authentication failure` 问题,确保系统安全和用户权限的正确管理。
3725 36
|
安全 Linux 数据安全/隐私保护
Linux 忘记密码解决方法
Linux 忘记密码解决方法
180 2
Linux 忘记密码解决方法
|
12月前
|
Linux Shell 数据安全/隐私保护
Linux如何在服务器上进行密码的修改?
【10月更文挑战第6天】Linux如何在服务器上进行密码的修改?
1941 1
|
Linux 数据安全/隐私保护 索引
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
140 1
|
Ubuntu Linux Shell
Linux系统密码忘记
【10月更文挑战第2天】在Linux系统中,若忘记密码,可以通过单用户模式或使用Live CD/USB来重置。对于Ubuntu系统,可通过GRUB引导菜单进入单用户模式,利用命令行重置密码;或使用Live CD/USB启动并挂载硬盘分区后修改密码文件。CentOS系统同样支持单用户模式重置密码,也可借助安装介质进入救援模式,挂载文件系统后进行密码重置。这些方法均能在忘记密码的情况下帮助恢复系统访问。
479 3
|
安全 Linux 数据安全/隐私保护
Linux强制修改用户密码
【9月更文挑战第21天】在 Linux 系统中,可使用以下方法强制修改用户密码:1. 使用 `passwd` 命令,以 root 身份运行 `passwd username` 修改密码,加 `-f` 选项可跳过复杂度检查;2. 使用 `chpasswd` 命令,通过文本文件批量设置密码;3. 结合 `usermod -e 0 username` 和 `chpasswd` 强制用户下次登录时更改密码。注意操作时需确保安全性与合理性。
1412 4
|
网络协议 Linux 网络安全
入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
在CentOS 7中,新引入了firewalld服务(防火墙),取代了CentOS 6之前的iptables服务(防火墙)。
151 5
入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
131 3
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理