linux 用户和组的管理、密码管理

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

1. /etc/passwd    用户配置文件

由 : 分隔成7个字段
(1) 用户名 规则:大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法 
(2) x 放密码,安全起见放到 /etc/shadow
(3) uid (0-4294967294=2^32-2)  root uid=0 1-499系统保留 普通账户是从500开始
(4) gid  对应 /etc/group
(5) 注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等  用 chfn 更改
(6) 用户家目录
(7) shell  /bin/bash, /bin/false, /sbin/nologin

1
2
3
4
5
[root@localhost /] # cat /etc/passwd
root:x:0:0:root: /root : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
user1:x:500:501:: /home/user1 : /bin/bash
user2:x:501:502:: /home/user2 : /bin/bash


chfn 用户名    更改passwd第5个字段的信息;名字、office、办公电话、家庭电话;

1
2
3
4
5
6
7
8
9
[root@localhost ~] # chfn user3
Changing finger information  for  user3.
Name []: yong
Office []: jiuzhou
Office Phone []: 8012
Home Phone []: 4475
Finger information changed.
[root@localhost ~] # tail -1 /etc/passwd
user3:x:600:600:yong,jiuzhou,8012,4475: /home/user3 : /sbin/nologin


2. /etc/shadow 存放密码配置文件

shadow配置文件在/etc/shadow  同目录下还有/etc/shadow- 此文件为shadow的备份文件,防止误删除后还原用

使用 : 分隔9个字段
(1) 用户名
(2) 密码,用SHA-512加密过,不可逆;

!! 表示密码为空,$6开始的为sha-512加密的;$5开头的为 sha-256加密的; $1开头的为md5加密生成的;* 表示账号被锁定;
(3)上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是 ‘365 x (2012-1970) + 10 + 1= 15341’. 
(4)要过多少天才可以更改密码, 0 不限制
(5)密码多少天后到期,默认是99999,可以理解为永远不需要改 
(6)密码到期前的警告期限 
(7)账号失效期限,到期后过多少天锁定帐号 
(8)账号的生命周期
(9)作为保留用的,没有什么意义

1
2
3
4
5
[root@localhost /] # cat /etc/shadow
root:$6$AvL69gk58FaCVKgE$WB080dPATKZjTMJNrqqxVl1BZbbgqc5D4V51WxwEhSe0hfw1Ew7wpAMa42y49.a5iksrW2qzHAuTRrENKxclt/:16387:0:99999:7:::
bin:*:15980:0:99999:7:::
user1:!!:16456:0:99999:7:::
user2:$6$9HhigmKZ$60TN8Ovwg5fFxjbzWv0VucmXP3NlgLCL2A1EFllWmIJWdhQrzBih4qBKYqPWuMX5YkbDfAlmO0duVuojG65B70:16513:0:99999:7:::


3. 新增/删除用户和组

添加用户组    groupadd groupname

用户组管理配置文件有2个地方 /etc/group    /etc/gshadow ;  

/etc/group-    /etc/gshadow- 为配置文件的备份,防止误删除

用户组GID 0-499为系统保留 500以上为普通用户


 指定组id GID 加参数 -g

1
2
3
4
5
6
[root@localhost ~] # groupadd user1
[root@localhost ~] # tail -1 /etc/group
user1:x:501:
[root@localhost ~] # groupadd -g 600 user2
[root@localhost ~] # tail -1 /etc/group
user2:x:600:

主组        创建一个用户时默认会创建一个相同用户名的组

附属组    把用户添加到其他组,则为附属组

使用命令:id username   查询该用户所属主、所属组的信息;


删除用户组    groupdel groupname

如果组内有用户,不能删除;

1
2
3
4
5
[root@localhost ~] # useradd user1
[root@localhost ~] # tail -1 /etc/group
user1:x:500:
[root@localhost ~] # groupdel user1
groupdel: cannot remove the primary group of user  'user1'


创建用户     useradd

创建好的用户在home目录下显示,可以passwd给用户更改密码,创建好的用户信息保存在/etc/passwd 

useradd -u    指定用户的uid

useradd -g    指定新增用户的gid,可以跟gid或组名,必须已经存在的组

useradd -d    指定用户的家目录

useradd -G    添加一个附属组,组id或组名,必须已经存在的组

useradd -M    创建一个用户但是不建立用户家目录

useradd -s    自定义shell

useradd -s /sbin/nologin username     禁止某个用户登录


指定uid,指定家目录的;

1
2
3
4
5
[root@localhost ~] # useradd -u 510 -d /home/usernew user1
[root@localhost ~] # ls /home/
  usernew
[root@localhost ~] # grep user1 /etc/passwd
user1:x:510:510:: /home/usernew : /bin/bash


如果没有创建家目录,需要创建目录,并需要拷贝/etc/skel/文件到用户的家目录;

1
2
[root@localhost ~] # ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~] # useradd -M user2
[root@localhost ~] # ls -l /home/
user1
[root@localhost ~] # su - user2
su : 警告:无法切换到目录 /home/user2 : 没有那个文件或目录
- bash -4.1$  logout
[root@localhost ~] # mkdir /home/user2
[root@localhost ~] # cp -v /etc/skel/.b* /home/user2
"/etc/skel/.bash_logout"  ->  "/home/user2/.bash_logout"
"/etc/skel/.bash_profile"  ->  "/home/user2/.bash_profile"
"/etc/skel/.bashrc"  ->  "/home/user2/.bashrc"
[root@localhost ~] # su - user2
[user2@localhost ~]$  pwd
/home/user2


指定gid,添加附属组,id 查看用户id信息:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~] # tail -2 /etc/group
user1:x:500:
user2:x:501:
[root@localhost ~] # groupadd -g 600 test
[root@localhost ~] # tail -1 /etc/group
test :x:600:
[root@localhost ~] # useradd -g 600 -G 500,501 user3
[root@localhost ~] # tail -1 /etc/passwd
user3:x:502:600:: /home/user3 : /bin/bash
[root@localhost ~] # id user3
uid=502(user3) gid=600( test ) 组=600( test ),500(user1),501(user2)


更改用户信息    usermod

-d    更改用户家目录

-u    更改uid

-s    更改shell

-G    更改所属组

-L    锁死    

-U    解锁

1
2
3
4
5
6
7
8
[root@localhost ~] # usermod -u 600 -s /sbin/nologin yong
更改用户的uid为600,更改用户不能登录
[root@localhost ~] # su yong
This account is currently not available.
[root@localhost ~] # usermod -s /bin/bash yong
[root@localhost ~] # su yong
[huangyong@localhost root]$  whoami
yong


删除用户    userdel

userdel username          只删除/etc/passwd里面的信息,  /home目录下的用户目录并未删除

userdel -r username     全部删除用户的信息,包括/home目录的用户目录


4. 创建、修改用户密码

更改用户密码    passwd

passwd username 更改用户的密码,passwd 不加用户名则为更改当前登录的用户密码;

创建密码的规则:长度大于10;含大小写字母数字以及特殊字符 ;不规则性;不要带有自己名字、公司名字、自己电话、自己生日等。

mkpasswd  生成密码的工具需要安装 expect包

安装命令:  yun install -y expect

-l     定义密码长度,默认长度为9;

-s     定义特殊符号    设定不出现特殊符号 -s 0 ;设定出现特殊符号次数 -s 3;

1
2
3
4
5
6
7
[root@localhost /] # which mkpasswd/usr/bin/mkpasswd
[root@localhost /] # mkpasswd
qXFt!pk66
[root@localhost ~] # mkpasswd -l 8
2cS}v8xB
[root@localhost ~] # mkpasswd -l 8 -s 0
zXg78wIy


passwd --stdin username

只需要输入一次密码,不用重复输入2次。root的密码不能这么更改。

echo “lishiming” | passwd --stdin username

直接更改密码;

echo -e "yonglinux\nyonglinux\n"

回车键在linux用\n代替;需要加 -e 把\n 看成为回车;

1
2
3
4
5
[root@localhost ~] # echo "yonglinux\nyonglinux\n"
yonglinux\nyonglinux\n
[root@localhost ~] # echo -e "yonglinux\nyonglinux\n"
yonglinux
yonglinux


echo -e "yong1234\nyong1234\n" | passwd username

直接更改2次密码;

1
2
3
4
[root@localhost ~] # echo -e "yong1234\nyong1234\n" | passwd user1
更改用户 user1 的密码 。
新的 密码:无效的密码: 过于简单化/系统化
重新输入新的 密码: passwd : 所有的身份验证令牌已经成功更新。


5. 用户身份切换

切换用户    su

su username    切换普通用户,部分切换;环境变量还是root的,

普通用户切换到root用户需要输入root密码;

su   -  完全切换,用来初始化环境变量 $PATH $HOME等;


1
2
3
4
5
6
7
8
9
10
[root@localhost ~] # su user1
[user1@localhost root]$  pwd
/root
[user1@localhost root]$  echo  $PATH
/usr/local/sbin : /usr/local/bin : /sbin : /bin : /usr/sbin : /usr/bin : /tmp : /root/bin
[root@localhost ~] # su - user1
[user1@localhost ~]$  pwd
/home/user1
[user1@localhost ~]$  echo  $PATH
/usr/local/bin : /bin : /usr/bin : /usr/local/sbin : /usr/sbin : /sbin : /tmp : /home/user1/bin


su -c "touch /tmp/user4.txt" - user4

在root用户下,不用切换用户,直接创建文件。创建的用户所属主所属组为user4的。用户名必须在最后可以省略;

1
2
3
4
[root@localhost ~] # su -c "touch /tmp/user1.txt" user1
[root@localhost ~] # su - user1
[user1@localhost ~]$  ls  -l  /tmp/
-rw-rw-r--. 1 user1 user1      0 3月  22 16:32 user1.txt


切换用户    sudo

使用su 切换到root需要输入密码,知道root密码不***全。

sudo 给普通用户临时拥有root权限,不需要输入root密码;

安装sudo的命令: yum install -y sudo


visudo 编辑/etc/sudoers 配置文件
底行模式输入/ALL=    可以快速定位到这一行

root    ALL=(ALL)       ALL

user1   ALL=(root)      NOPASSWD: /bin/ls,/bin/su

保存退出;
使用user1用户可以执行su 切换到root,而且不需要输入密码;

1
2
[root@localhost user1] # su - user1
[user1@localhost ~]$  sudo  /bin/su  -

切换到user1用户,可以sudo执行su命令,直接切换到root用户不用输入密码,user1临时具有root的权限;

 sudo /bin/su -    可以简写为    sudo su -     


限制root用户登录

vi /etc/ssh/sshd_config

修改这一项, #PermitRootLogin yes  为 PermitRootLogin no 去掉#号,保存退出后;

/etc/init.d/sshd restart    重启远程登录ssh服务

tail /var/log/secure    可以查看登录日志;


远程登录连接太慢

vim /etc/ssh/sshd_config

#UseDNS yes 更改为UseDNS no,去掉前面的#号,保存退出;


/etc/init.d/sshd restart    或    service sshd restart    重启ssh服务生效;


sshd    为服务器端配置文件

ssh   为客户端配置文件






本文转自 模范生 51CTO博客,原文链接:http://blog.51cto.com/mofansheng/1623147,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
1月前
|
安全 Linux 数据安全/隐私保护
Linux 忘记密码解决方法
Linux 忘记密码解决方法
35 2
Linux 忘记密码解决方法
|
30天前
|
Linux Shell 数据安全/隐私保护
Linux如何在服务器上进行密码的修改?
【10月更文挑战第6天】Linux如何在服务器上进行密码的修改?
50 1
|
1月前
|
Linux 数据安全/隐私保护 索引
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
linux inode索引节点使用率100% 解决+hustoj忘记密码+最新MDK注册方法
41 1
|
1月前
|
Ubuntu Linux Shell
Linux系统密码忘记
【10月更文挑战第2天】在Linux系统中,若忘记密码,可以通过单用户模式或使用Live CD/USB来重置。对于Ubuntu系统,可通过GRUB引导菜单进入单用户模式,利用命令行重置密码;或使用Live CD/USB启动并挂载硬盘分区后修改密码文件。CentOS系统同样支持单用户模式重置密码,也可借助安装介质进入救援模式,挂载文件系统后进行密码重置。这些方法均能在忘记密码的情况下帮助恢复系统访问。
|
2月前
|
安全 Linux 数据安全/隐私保护
Linux强制修改用户密码
【9月更文挑战第21天】在 Linux 系统中,可使用以下方法强制修改用户密码:1. 使用 `passwd` 命令,以 root 身份运行 `passwd username` 修改密码,加 `-f` 选项可跳过复杂度检查;2. 使用 `chpasswd` 命令,通过文本文件批量设置密码;3. 结合 `usermod -e 0 username` 和 `chpasswd` 强制用户下次登录时更改密码。注意操作时需确保安全性与合理性。
218 4
|
3月前
|
Linux Shell 数据安全/隐私保护
Linux用户账户管理精髓:创建、删除、密码与会话管理全攻略
本文档介绍了Linux系统中用户账户管理的关键操作,包括创建与删除用户、设置及修改密码、用户切换与会话管理等内容。通过理论说明与具体命令示例,如使用`useradd`、`userdel`、`passwd`和`su`等命令,帮助系统管理员更好地掌握这些基本技能,从而有效提升系统的安全性和管理效率。此外,还介绍了如何利用`screen`等工具进行会话管理,确保即便在网络中断的情况下也能维持会话的持续运行。
77 3
|
3月前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?
|
4月前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
4月前
|
关系型数据库 MySQL Linux