用户配置文件和密码配置文件:
配置文件:
用户文件:
[root[@ln](https://my.oschina.net/lina) ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
lan:x:1000:1002::/home/lan:/bin/bash
opo:x:1001:1003::/home/opo:/bin/bash
[root[@ln](https://my.oschina.net/lina) ~]#
新增用户会直接在文件末尾自动生成一行,详情可见上列代码末尾2行,以:分割为7段,详解如下。
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
用户名:login_name
口令: 早期存储用户密码,但由于安全性,密码都不存储这里了,现在只存放一个特殊的字符,例如“x”或者“*”。
用户标识号: UID
组标识号: GID
注释性描述: 记录用户的一些信息.
主目录: 用户自己的家目录
登录shell:Shell是用户与Linux系统之间的接口,不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/bash。 /sbin/nologin 代表无法登录
密码配置文件:
[root[@ln](https://my.oschina.net/lina) ~]# cat /etc/shadow
root:$6$c3Vq42CM$BqLRAlJjVaH2O0rC.GwEhfNcuKrA.9/xPpmIY9GIWy.WZM2Q95Z1ohVNmlFdiaVTjuS3BmExEgWOpfbBTPdXd1:17657:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
lp:*:17110:0:99999:7:::
sync:*:17110:0:99999:7:::
shutdown:*:17110:0:99999:7:::
halt:*:17110:0:99999:7:::
mail:*:17110:0:99999:7:::
operator:*:17110:0:99999:7:::
games:*:17110:0:99999:7:::
ftp:*:17110:0:99999:7:::
nobody:*:17110:0:99999:7:::
systemd-network:!!:17654::::::
dbus:!!:17654::::::
polkitd:!!:17654::::::
postfix:!!:17654::::::
chrony:!!:17654::::::
sshd:!!:17654::::::
apache:!!:17654::::::
lan:!!:17664:0:99999:7:::
opo:!!:17664:0:99999:7:::
[root[@ln](https://my.oschina.net/lina) ~]#
/etc/shadow 为密码配置文件,同样由若干个字段组成,字段之间用“:”隔开,详解如下。
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
登录名:login_name
加密口令:用户密码,加密形式。同样密码,root与普通用户加密狗方式不一样。
最后一次修改时间:从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
最小时间间隔:指的是两次修改口令之间所需的最小天数。
最大时间间隔:指的是口令保持有效的最大天数。
警告时间:字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
不活动时间:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
失效时间:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
标志:保留字段,目前无含义
用户组管理:
[root[@ln](https://my.oschina.net/lina) ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
ssh_keys:x:999:
input:x:998:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:997:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
sshd:x:74:
apache:x:48:
user1:x:1000:
user2:x:1001:
lan:x:1002:
opo:x:1003:
[root@ln ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::
tty:::
disk:::
lp:::
mem:::
kmem:::
wheel:::
cdrom:::
mail:::postfix
man:::
dialout:::
floppy:::
games:::
tape:::
video:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
ssh_keys:!::
input:!::
systemd-journal:!::
systemd-network:!::
dbus:!::
polkitd:!::
postdrop:!::
postfix:!::
chrony:!::
sshd:!::
apache:!::
user1:!::
user2:!::
lan:!::
opo:!::
[root@ln ~]#
查看所有组文件 及 组密码文件
这些带 '-' 的文件是源文件的备份文件.为防止误删,可恢复。
[root@ln ~]# ls /etc/group
group group-
[root@ln ~]# ls /etc/gshadow
gshadow gshadow-
[root@ln ~]#
组命令操作:
** groupadd: 新建一个组 **
-g 参数: 自定义组id
groupdel:删除一个组
[root@ln ~]# groupadd ln1
[root@ln ~]# tail -n1 /etc/group
ln1:x:1004:
[root@ln ~]# groupadd -g 1234 ln2
[root@ln ~]# tail -n3 /etc/group
opo:x:1003:
ln1:x:1004:
ln2:x:1234:
[root@ln ~]# groupdel ln1
[root@ln ~]# tail -n3 /etc/group
lan:x:1002:
opo:x:1003:
ln2:x:1234:
[root@ln ~]# groupdel lan
groupdel:不能移除用户“lan”的主组
[root@ln ~]#
由于lan组有一个用户lan存在。所以无法直接删除组
用户管理:
useradd 创建一个用户
[root@ln ~]# useradd user99
[root@ln ~]# tail -n3 /etc/passwd
lan:x:1000:1002::/home/lan:/bin/bash
opo:x:1001:1003::/home/opo:/bin/bash
user99:x:1002:1235::/home/user99:/bin/bash
[root@ln ~]#
指定 uid 和gid 创建用户
[root@ln ~]# useradd -u 1111 -g 1234 user98
[root@ln ~]# tail -n3 /etc/passwd
opo:x:1001:1003::/home/opo:/bin/bash
user99:x:1002:1235::/home/user99:/bin/bash
user98:x:1111:1234::/home/user98:/bin/bash
[root@ln ~]#
指定用户 家目录 和 登录shell
[root@ln ~]# useradd -d /home/jkl -s /sbin/nologin user96
[root@ln ~]# tail -n3 /etc/passwd
user98:x:1111:1234::/home/user98:/bin/bash
user97:x:1112:1112::/home/user97:/sbin/nologin
user96:x:1113:1113::/home/jkl:/sbin/nologin
[root@ln ~]#
新建用户,但不创建用户的家目录
[root@ln ~]# useradd -M user93
[root@ln ~]# ls /home/
jkl lan opo user97 user98 user99
[root@ln ~]#
创建用户时不指定UID和GID的话,UID是默认由上个用户的UID往下自增一位。GID则无序。如下
[root@ln ~]# tail -n3 /etc/passwd
user93:x:1114:1114::/home/user93:/bin/bash
user95:x:1115:1115::/home/user95:/bin/bash
user94:x:1116:1234::/home/user94:/bin/bash
[root@ln ~]# useradd user92
[root@ln ~]# tail -n3 /etc/passwd
user95:x:1115:1115::/home/user95:/bin/bash
user94:x:1116:1234::/home/user94:/bin/bash
user92:x:1117:1117::/home/user92:/bin/bash
[root@ln ~]#
userdel 删除用户:
[root@ln ~]# userdel user92
[root@ln ~]# tail -n3 /etc/passwd
user93:x:1114:1114::/home/user93:/bin/bash
user95:x:1115:1115::/home/user95:/bin/bash
user94:x:1116:1234::/home/user94:/bin/bash
[root@ln ~]# ls /home/
jkl lan opo user92 user94 user95 user97 user98 user99
[root@ln ~]#
不加参数 默认只删除用户,不会删除家目录。
userdel -r 删除用户 包括家目录:
[root@ln ~]# userdel -r user94
[root@ln ~]# ls /home/
jkl lan opo user92 user95 user97 user98 user99
[root@ln ~]#
usermod命令:
在命令行界面输入 usermod 即可看到usermod所有参数及解释
[root@ln ~]# usermod
用法:usermod [选项] 登录
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
[root@ln ~]#
修改用户的 uid和gid
[root@ln ~]# tail -n3 /etc/passwd
user96:x:1113:1113::/home/jkl:/sbin/nologin
user93:x:1114:1114::/home/user93:/bin/bash
user95:x:1115:1115::/home/user95:/bin/bash
[root@ln ~]# usermod -u 2333 -g 1234 user95
[root@ln ~]# tail -n3 /etc/passwd
user96:x:1113:1113::/home/jkl:/sbin/nologin
user93:x:1114:1114::/home/user93:/bin/bash
user95:x:2333:1234::/home/user95:/bin/bash
[root@ln ~]#
增加附加组:
[root@ln ~]# usermod -G 1113 user95
[root@ln ~]# id user95
uid=2333(user95) gid=1234(ln2) 组=1234(ln2),1113(user96)
[root@ln ~]#
锁定用户:
[root@ln ~]# usermod -L user95
[root@ln ~]# tail -n3 /etc/shadow
user96:!!:17664:0:99999:7:::
user93:!!:17664:0:99999:7:::
user95:!$6$3z6AgaJ6$LYx05vhclSp71zK8FygfhKdZro48xGcM5HKizoBhZnlC37v8BN6oO/DZHgppBzAnQV0FfF6gWwFuK10YppMtO1:17664:0:99999:7:::
[root@ln ~]#
可以看见 user95:后面,密码前面有个感叹号。锁定标识
解锁用户:
[root@ln ~]# tail -n 3 /etc/shadow
user96:!!:17664:0:99999:7:::
user93:$6$Mh1p6CBB$MC3ZqOlup0WUIWql07tfwdWiYikfwb6QH/6h2V2RglaXG5axF6mMEonnyS/JsUW10tO.w7xcWBibxEXPCSlxX0:17664:0:99999:7:::
user95:$6$3z6AgaJ6$LYx05vhclSp71zK8FygfhKdZro48xGcM5HKizoBhZnlC37v8BN6oO/DZHgppBzAnQV0FfF6gWwFuK10YppMtO1:17664:0:99999:7:::
[root@ln ~]#
用户密码管理:
passwd 修改密码,后接用户名
[root@ln ~]# passwd user93
更改用户 user93 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于字典单词
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@ln ~]# tail -n 3 /etc/shadow
user96:!!:17664:0:99999:7:::
user93:$6$Mh1p6CBB$MC3ZqOlup0WUIWql07tfwdWiYikfwb6QH/6h2V2RglaXG5axF6mMEonnyS/JsUW10tO.w7xcWBibxEXPCSlxX0:17664:0:99999:7:::
user95:!$6$3z6AgaJ6$LYx05vhclSp71zK8FygfhKdZro48xGcM5HKizoBhZnlC37v8BN6oO/DZHgppBzAnQV0FfF6gWwFuK10YppMtO1:17664:0:99999:7:::
[root@ln ~]#
passwd -l 锁定用户密码
[root@ln ~]# passwd -l user95
锁定用户 user95 的密码 。
passwd: 操作成功
[root@ln ~]# tail -n 3 /etc/shadow
user96:!!:17664:0:99999:7:::
user93:$6$Mh1p6CBB$MC3ZqOlup0WUIWql07tfwdWiYikfwb6QH/6h2V2RglaXG5axF6mMEonnyS/JsUW10tO.w7xcWBibxEXPCSlxX0:17664:0:99999:7:::
user95:!!$6$3z6AgaJ6$LYx05vhclSp71zK8FygfhKdZro48xGcM5HKizoBhZnlC37v8BN6oO/DZHgppBzAnQV0FfF6gWwFuK10YppMtO1:17664:0:99999:7:::
passwd -u 解锁用户密码
[root@ln ~]# passwd -u user95
解锁用户 user95 的密码。
passwd: 操作成功
[root@ln ~]# tail -n 3 /etc/shadow
user96:!!:17664:0:99999:7:::
user93:$6$Mh1p6CBB$MC3ZqOlup0WUIWql07tfwdWiYikfwb6QH/6h2V2RglaXG5axF6mMEonnyS/JsUW10tO.w7xcWBibxEXPCSlxX0:17664:0:99999:7:::
user95:$6$3z6AgaJ6$LYx05vhclSp71zK8FygfhKdZro48xGcM5HKizoBhZnlC37v8BN6oO/DZHgppBzAnQV0FfF6gWwFuK10YppMtO1:17664:0:99999:7:::
[root@ln ~]#
passwd --stdin 明文显示密码,且无第二次验证
[root@ln ~]# passwd --stdin user95
更改用户 user95 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
[root@ln ~]#
echo 方式修改密码
[root@ln ~]# echo -e '123qwe\n123qwe' | passwd user95
更改用户 user95 的密码 。
新的 密码:无效的密码: 密码少于 7 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
[root@ln ~]#
如果不加-e参数,就如下一样,换行符显示不出来,当做普通字符处理。
[root@ln ~]# echo -e '123qwe\n123qwe'
123qwe
123qwe
[root@ln ~]# echo '123qwe\n123qwe'
123qwe\n123qwe
[root@ln ~]#
mkpasswd命令:
运行前 需要安装包: yum install -y expect
mkpasswd 默认生成 大小写字母,数字和特殊符号。
[root@ln ~]# mkpasswd
sHom@w00N
[root@ln ~]#
mkpasswd -l 代表 长度为10 -s 代表特殊字符的数量
[root@ln ~]# mkpasswd -l 10 -s 2
m61yeS+-Ez
[root@ln ~]# mkpasswd -l 10 -s 0
giqCD4dw7d
[root@ln ~]#
SU命令:
su 用户名 切换用户
[root@ln ~]# su user95
[user95@ln root]$ pwd
/root
[user95@ln root]$
但目录还在root下。不在user95自己家目录下。
这时 就需要用 su - 切换
su - 切换用户 并且到用户的家目录下
[root@ln ~]# su - user95
上一次登录:一 5月 14 07:52:53 CST 2018pts/0 上
[user95@ln ~]$ pwd
/home/user95
[user95@ln ~]$
以user95这个用户 去执行 touch文件的命令
[root@ln ~]# su - -c 'touch /tmp/user95.txt' user95
[root@ln ~]# ls -lt /tmp/ | head
总用量 124
-rw-r--r--. 1 user95 ln2 0 5月 14 07:58 user95.txt
lrwxrwxrwx. 1 root root 7 5月 13 19:56 ln_yum.log -> yum.log
drwxr-xr-x. 2 root root 6 5月 13 19:47 lan
-rwxrwxrwx. 1 lan lan 26 5月 13 19:14 lan.txt
-rwxr-xr-x. 1 root root 117656 5月 13 08:06 ls2
drwx------. 3 root root 17 5月 13 07:54 systemd-private-86d6b6074f844b27b64a378f2dc6fc4a-httpd.service-LFVGOT
drwx------. 3 root root 17 5月 13 07:53 systemd-private-86d6b6074f844b27b64a378f2dc6fc4a-chronyd.service-xAVLoC
drwx------. 3 root root 17 5月 9 22:18 systemd-private-9db65904aca04aaea4321df4ebed6f2d-httpd.service-H48yxK
drwx------. 3 root root 17 5月 9 22:18 systemd-private-9db65904aca04aaea4321df4ebed6f2d-chronyd.service-injaJT
[root@ln ~]# id user95
uid=2333(user95) gid=1234(ln2) 组=1234(ln2),1113(user96)
[root@ln ~]#
[user95@ln root]$ su - user93
密码:
最后一次失败的登录:一 5月 14 08:03:44 CST 2018pts/0 上
最有一次成功登录后有 1 次失败的登录尝试。
su: 警告:无法更改到 /home/user93 目录: 没有那个文件或目录
-bash-4.2$
如出现上面代码的样式。代表你这个用户创建时 是 使用了-M参数,没有家目录。所以不行,解决方法如下:
[root@ln ~]# mkdir /home/user93
[root@ln ~]# chown user93:user93 /home/user93
[root@ln ~]# su - user93
上一次登录:一 5月 14 08:04:45 CST 2018pts/0 上
-bash-4.2$ pwd
/home/user93
-bash-4.2$ ls -la
总用量 0
drwxr-xr-x. 2 user93 user93 6 5月 14 08:07 .
drwxr-xr-x. 11 root root 123 5月 14 08:07 ..
-bash-4.2$ exit
登出
[root@ln ~]#
如上,目录已经创建好了,但是还是不行。原因就是没有配置文件。需如下操作:
[root@ln ~]# ls -la /etc/skel/
总用量 24
drwxr-xr-x. 2 root root 62 5月 4 06:13 .
drwxr-xr-x. 74 root root 8192 5月 14 08:04 ..
-rw-r--r--. 1 root root 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 root root 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 root root 231 8月 3 2017 .bashrc
[root@ln ~]# cp /etc/skel/.bash* /home/user93
[root@ln ~]# chown -R user93:user93 /home/user93/
[root@ln ~]# su - user93
上一次登录:一 5月 14 08:08:25 CST 2018pts/0 上
[user93@ln ~]$
如上可知,需去/etc/skel/目录下把一些配置文件拷贝到user93的家目录上去。然后在修改目录及其子文件的属主和属组,最后切换用户就会成功了。
SUDO 命令:
让普通用户去执行root的权限的命令
命令: visudo
使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。
直接输入命令回车。
进入内容框后,找到下面这一行
Allow root to run any commands anywhere
root ALL=(ALL) ALL
在root下面输入你自定义的命令
配置文件需要修改的部分截图 红框内是自己增加的部分 比如我输入的是 给user93 这个用户临时使用root权限的命令是 ls cat mv 以逗号分隔,且必须是绝对路径。
设置好了之后,切换user93用户。测试命令。
[root@ln ~]# su - user93
上一次登录:一 5月 14 08:26:57 CST 2018pts/0 上
[user93@ln ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[user93@ln ~]$ sudo /usr/bin/ls /root/
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] user93 的密码:
2.txt_rlj 2.txt_ylj default qwe zaq zxc
[user93@ln ~]$
输入user93密码后就可以查询到结果了。第一次查询需要输密码
[user93@ln ~]$ cat /root/2.txt_ylj
cat: /root/2.txt_ylj: 权限不够
[user93@ln ~]$ sudo /usr/bin/cat /root/2.txt_ylj
root:x:0:0:root:/root:/bin/bash
as
bin:x:1:1:bin:/bin:/sbin/nologin
[user93@ln ~]$
cat 查询
不输入密码查询 加上nopasswd后就可以不输入密码查询了
[root@ln ~]# su - user95
上一次登录:一 5月 14 08:39:20 CST 2018pts/0 上
[user95@ln ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[user95@ln ~]$
[user95@ln ~]$ sudo /usr/bin/ls /root/
2.txt_rlj 2.txt_ylj default qwe zaq zxc
[user95@ln ~]$
限制root远程登录
进入 /etc/ssh/sshd_config 配置文件里
修改为图下红框内的内容。 原先为yes 我修改为no,在去掉首部的 # 就行
修改完成后重启服务
在重新开启一个远程会话连接,就会提示拒绝秘钥,无法登录。
选择password方式输入密码之后会弹出窗口如下:
这个时候Root就无法登录了,现在去尝试着用puty登录下普通用户能否登录
由于原先做了配置所以,可以直接切换回root用户
sudo su - 原因配置图如下
在visudo里配置了个别名,别名里有个用户是user95,LAN这个别名在下图中获取了 su权限。所以user95这个用户可以直接使用su命令切换用户