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
[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、办公电话、家庭电话;
[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)作为保留用的,没有什么意义
[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
[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
如果组内有用户,不能删除;
[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,指定家目录的;
[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/文件到用户的家目录;
[root@localhost ~]# ls -a /etc/skel/ . .. .bash_logout .bash_profile .bashrc .gnome2
举例:
[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信息:
[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 解锁
[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;
[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 看成为回车;
[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次密码;
[root@localhost ~]# echo -e "yong1234\nyong1234\n" | passwd user1 更改用户 user1 的密码 。 新的 密码:无效的密码: 过于简单化/系统化 重新输入新的 密码:passwd: 所有的身份验证令牌已经成功更新。
5. 用户身份切换
切换用户 su
su username 切换普通用户,部分切换;环境变量还是root的,
普通用户切换到root用户需要输入root密码;
su - 完全切换,用来初始化环境变量 $PATH $HOME等;
[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的。用户名必须在最后- 可以省略;
[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,而且不需要输入密码;
[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 为客户端配置文件
本文出自 “模范生的学习博客” 博客,请务必保留此出处http://8802265.blog.51cto.com/8792265/1623147
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。