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

简介:

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,如需转载请自行联系原作者

目录
相关文章
|
28天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
61 5
|
1月前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
37 2
|
14天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
19 0
|
15天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
9天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
101 2
|
15天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0
|
22天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
26天前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
17 2
|
28天前
|
监控 Linux 调度
【Linux 应用开发 】Linux 下应用层线程优先级管理解析
【Linux 应用开发 】Linux 下应用层线程优先级管理解析
45 0
|
28天前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
72 0