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