Linux 系统的用户和组
目录
1. 用户及组相关文件
2. 用户相关查询
2.1 直接通过cat文件查看用户及组文件内容
2.2 使用下面查询命令查看
3. 使用操作命令修改用户及组相关文件
3.1 专有编辑命令(仅限高级用户):
3.2 用户及组的操作
4. 参考信息:
5. 以下是Arch的用户组相关描述
5.1用户组,系统组等摘录子arch的wiki页面:
5.2 以下是本机的用户及组信息(Arch Linux)
1.用户及组相关文件
Linux系统,一切皆文件。Linux上的用户及用户组信息保存在如下文件里。
Arch
Linux的用户及组和密码管理工具来自shadow包,它是基本组的一部分。
- /etc/passwd
用户信息,冒号分隔的7个字段。用户名:密码:UID:GID:说明信息:目录:shell - /etc/shadow
用户密码,冒号分隔的9个字段。用户名:密码:最近修改日期:密码保护天数:密码失效天数:警告期限:宽限时间:失效日期:保留 - /etc/group
用户所属的组,组名,密码,GID,用户名 - /etc/gshadow
组帐户安全信息,组名,密码,组管理者,组内用户列表
用户信息/etc/passwd文件中的每个用户都有一个对应的记录行,记录着这个用户的基本属性。该文件对所有用户可读。
密码信息/etc/shadow文件正如他的名字一样,是passwd文件的影子,/etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
关于2个密码字段:passwd文件里的密码字段是历史遗迹,不必理会,实际密码保存在shadow里。
- 如果为空表示没有口令,登录时不需要口令(慎用);
- 星号或叹号代表帐号被锁定;
- 双叹号表示账户未提供过密码,在系统管理员给出初始密码前,默认是锁定的;
- $1$
用MD5加密; - $2$
用Blowfish加密; - $5$
用SHA-256加密; - $6$
用SHA-512加密(目前基本使用这种方式加密);
其他字段说明:
- 字段3.
最近修改密码日期:从1970-1-1到更动密码时的天数。 - 字段4.
密码保护天数:密码不可被更动的天数,0表示密码随时可以更动。如果设定为20天的话,密码生效的20天之内都无法修改。 - 字段5.
密码失效天数:必须在此之前修改密码,否则密码会失效,帐号被锁定。 - 字段6.
失效警告期限:失效前多少天的警告。 - 字段7.
过期宽限时间: - 字段8.
帐号失效日期: - 字段9.
保留:
关于用户组/etc/group(组名,密码,GID,用户名);/etc/gshadow(组名,密码,组管理者,组内用户列表)
这里也有2个密码,同样在group里的密码字段只是个历史遗迹,实际密码加密后放在gshadow文件里。普通用户较少会用到组密码。
组内用户列表(多个用户使用逗号分割),本字段可以为空;如果字段为空表示用户组为GID的用户名;
=========================
2.
用户相关查询
2.1
直接通过cat文件查看用户及组文件内容
$
sudo
cat
/etc/passwd
$
sudo
cat
/etc/passwd/etc/shadow
$
sudo
cat
/etc/passwd/etc/group
$
sudo
cat
/etc/passwd/etc/gshadow
包含有
超级用户:超级用户的UID和GID固定为0.
普通用户:你现在使用的帐号。
特殊用户,伪用户:无法登录的用户,系统可以使用他们来运行一些进程。如守护进程用户没有登录权限。
nobody用户的权限最小,一些进程在nobody的用户名下运行,因为它没有任何写入权限。
2.2
使用下面查询命令查看
$
groups toma //显示用户的组名:
users
如果user省略,则显示当前用户的组名。
$
id 提供了其他详细信息,例如用户的UID和关联的GID:
uid=1001(toma)
gid=985(users) groups=985(users)
$
who -Ha //查询登录用户信息
NAME
LINE TIME IDLE PID COMMENT EXIT
system boot 2019-03-28
23:12
toma + tty7 2019-03-28 23:13 old 519
(:0)
常用选项有
-a,显示全部用户
-H,显示标题
字段说明
TIME,登录时间,
IDLE,最近使用状态:(.)1分种内有活动;(00:15)已空闲15分钟;(old)很久无活动,超过24小时;
PID
是用户shell程序的进程ID号
$
whoami //显示你的用户名
toma
$
w //显示谁登录以及他们正在做什么。
11:11:01
up 5 days, 11:58, 1 user, load average: 1.33, 1.42, 1.61
USER
TTY LOGIN@ IDLE JCPU PCPU WHAT
toma tty7 Thu23 5days 6:10m 0.01s
/bin/sh /etc/xdg/xfce4/xinitrc
$
last //Display
a listing of the most recently logged-in users.
toma tty7 :0 Thu
Mar 28 23:13 still logged in
reboot system boot 5.0.4-arch1-1-AR
Thu Mar 28 23:12 still running
toma tty7 :0 Mon Mar 25 17:38 -
23:11 (3+05:32)
reboot system boot 5.0.4-arch1-1-AR Mon Mar 25
17:38 - 23:11 (3+05:33)
使用ps来计算运行进程的任何用户
$
ps -eaho user
root
toma
toma
排序,合并重复项
$
ps -eaho user | sort -u
root
toma
显示合计数量
$
ps -eaho user | sort -u | wc -l
2
$
ps -eaho user | wc -l
9
3.
使用操作命令修改用户及组相关文件
/etc/passwd等文件有严格的语法规则,不允许注释和空行。
虽然只是单纯的文本文件,但不建议直接通过root权限编辑,而是使用下面的专用编辑命令或者用户及组的操作命令。
3.1 专有编辑命令(仅限高级用户):
再次强调:虽然有专用编辑软件,也不建议使用。更不要使用普通编辑软件直接编辑!要使用操作命令变更其内容。
专用的编辑命令,会在编辑时备份和锁定文件,会检查格式。
密码内容是加密的,不能直接编辑。要配合加密程序。最好的方式是直接使用下面的操作命令。
vipw
(Edit the password or group file)
vigr
(Edit the password or group file)
visudo
(Edit the sudoers file)
- /etc/passwd
用户信息,vipw - /etc/shadow
用户密码,vipw - /etc/group
用户所属的组,vigr - /etc/gshadow
组帐户安全信息,vigr
-s
3.2
用户及组的操作
添加用户:添加一个名为的新用户archie,创建其主目录-m,否则使用组,文件夹名称,使用的shell和各种其他参数方面的所有默认值:
#useradd
-m archie
上面的useradd命令还将自动创建一个archie使用与用户的UID相同的GID
调用的组,archie并使其成为archie登录时的默认组。
使每个用户拥有自己的组(组名与用户名相同,GID与UID相同)是添加用户的首选方式。
选项:
-m/--create-home
//创建用户主目录为。/home/username
-G/--groups
//补充组列表。每个组通过逗号与下一个组隔开,没有中间空格。默认值是用户仅属于初始组。
-s/--shell
//默认登录shell的路径和文件名。
-U
//参数以创建与用户同名的组,并将用户添加到该组
-u/
--uid和-g/
--gid //如果系统用户需要特定的用户和组ID,请在创建用户时使用-u/
--uid和-g/
--gid选项指定它们:
设置密码使用suid-root程序:
passwd
#passwd
archie
修改用户shell:chsh
如果临时需要更改GID,您还可以使用newgrp命令在运行时将用户的默认GID更改为另一个GID。
例如,执行用户创建的文件后,将与GID
关联,无需重新登录。
要更改回默认GID,请执行不带组名的newgrp。
newgrp
groupname groupname
更改用户的主目录:
#usermod
-d /my/new/home -m username
该-m
move,自动创建新目录并在其中移动内容。
提示:您可以创建从用户以前的主目录到新主目录的链接。这样做将允许程序查找具有硬编码路径的文件。
#ln
-s /my/new/home/ /my/old/home
确保有没有尾随/上/my/old/home。
要更改用户的登录名:
#usermod
-l newname
oldname
警告:确保您没有以要更改其名称的用户身份登录。
打开一个新的tty(Ctrl+Alt+F1)并以root用户身份或以其他用户身份登录,然后以su身份登录到root用户。
usermod应该阻止你误操作。
要将用户添加到其他组,
#usermod
-aG additional_groups
用户名
警告:如果上面-a的usermod命令中省略了该选项,则会从未列出的所有组中删除additional_groups该用户
(即,该用户将仅是该列出的组的成员additional_groups)。
使用userdel命令删除用户帐户:
#userdel
-r username
该-r选项指定还应删除用户的主目录和邮件
更改用户的登录shell:
#usermod
-s /bin/bash username
要输入GECOS注释的用户信息(例如完整的用户名),请键入:
#chfn
用户名
使用pwck命令可以被用来验证用户数据库的完整性。它可以同时按GID对用户列表进行排序,这有助于比较:
#pwck
-s
使用visudo
sudo的配置文件是/etc/sudoers。应始终使用visudo(8)命令进行编辑。
visudo锁定sudoers文件,将编辑保存到临时文件,并在复制之前检查该文件的语法/etc/sudoers。
使用以下groupadd命令创建新组:
#groupadd
group
使用该gpasswd命令将用户添加到组
#gpasswd
-a 用户
组
修改现有组groupmod;
例如,在保留gid的同时将old_group组重命名为new_group
#groupmod
-n new_group old_group
删除现有组:
#groupdel
group
要从组中删除用户:
#gpasswd
-d 用户
组
4.
参考信息:
https://wiki.archlinux.org/index.php/users_and_groups
https://wiki.archlinux.org/index.php/File_permissions_and_attributes
https://wiki.archlinux.org/index.php/Access_Control_Lists
https://wiki.archlinux.org/index.php/PAM
https://wiki.archlinux.org/index.php/Umask
https://www.linux.com/learn/understanding-Linux-file-permissions
https://jlk.fjfi.cvut.cz/arch/manpages/man/umask.2
https://blogs.gentoo.org/mgorny/2011/10/18/027-umask-a-compromise-between-security-and-simplicity/
https://wiki.archlinux.org/index.php/Su
https://wiki.archlinux.org/index.php/Sudo
https://www.computerhope.com/unix/uwho.htm
5.
以下是Arch的用户组相关描述
5.1用户组,系统组等摘录子arch的wiki页面:
https://wiki.archlinux.org/index.php/users_and_groups
非root工作站/桌面用户通常需要添加到以下某些组中,以允许访问硬件外围设备并方便系统管理:
组
受影响的文件 目的
- ftp
/srv/ftp/ 访问FTP服务器提供的文件。 - games
/var/games 访问一些游戏软件。 - http
/srv/http/ 访问HTTP服务器提供的文件。 - rfkill
/dev/rfkill 控制无线设备电源状态的权利(由rfkill使用)。 - systemd-journal
/var/log/journal/* 可用于提供只读到systemd日志的访问,作为替代adm和wheel
[1] 。否则,仅显示用户生成的消息。 - uucp
/dev/ttyS[0-9]+,/dev/tts/[0-9]+,/dev/ttyUSB[0-9]+,/dev/ttyACM[0-9]+,/dev/rfcomm[0-9]+
RS-232串行端口和连接到它们的设备。 - users
标准用户组。 - log
访问syslog-ng/var/log/创建的日志文件。 - sys
在CUPS中管理打印机的权利。 - adm
管理组,通常用于对受保护日志(包括日志文件)进行读取访问。 - wheel
管理组,通常用于授予执行管理操作的权限。可用于提供对sudo和su实用程序的访问(默认情况下不使用它,可配置在/etc/pam.d/su和中/etc/pam.d/su-l)。它还具有对日志文件的完全读取权限。
系统组,以下组用于系统目的,只有出于专用目的才需要分配给用户:
组
受影响的文件 目的
- kmem
/dev/port,/dev/mem,/dev/kmem - locate
/usr/bin/locate,/var/lib/locate,/var/lib/mlocate,/var/lib/slocate
请参阅定位。 - lp
/dev/lp[0-9]*,
/dev/parport[0-9]*
访问并行端口设备(打印机和其他)。 - mail
/usr/bin/mail - proc
/proc/pid/ 被授权学习proc文件系统的hidepid=
mount选项禁止的进程信息的组。必须使用mount选项显式设置该组。
gid= - root
/* 完整的系统管理和控制(root,admin)。 - tty
/dev/tty,/dev/vcc,/dev/vc,/dev/ptmx - utmp
/run/utmp,/var/log/btmp,/var/log/wtmp - dbus
由dbus内部使用 - nobody
无私群体。 - smmsp
sendmail组。
预系统组,
在将arch迁移到systemd之前,必须手动将用户添加到这些组中才能访问相应的设备。
这种方式已被弃用,取而代之的udev的标记用的设备uaccess
标签和logind动态经由分配的权限的用户的ACL根据哪个会话当前处于活动状态。
请注意,不能断开会话以使其正常工作(请参阅常规故障排除#会话权限以进行检查)。
有一些值得注意的例外情况需要将用户添加到其中一些组中:例如,如果您希望允许用户访问设备,即使他们未登录也是如此。
但是,请注意,向组添加用户甚至可能会导致某些功能打破(例如,该audio组将打破快速用户切换并允许应用程序阻止软件混合)。
组
受影响的文件 目的
- audio
/dev/audio,/dev/snd/*,/dev/rtc0
可以直接访问所有会话的声音硬件。仍然需要使ALSA和OSS在远程会话中工作,请参阅ALSA#用户权限。在JACK中也用于为用户提供实时处理权限。 - disk
/dev/sd[a-z][1-9] 访问块设备不受其它基团如optical,floppy,和storage。 - floppy
/dev/fd[0-9] 访问软盘驱动器。 - input
/dev/input/event[0-9]*,
/dev/input/mouse[0-9]*
访问输入设备。在systemd
215中引入[2]。 - kvm
/dev/kvm 使用KVM访问虚拟机。 - optical
/dev/sr[0-9],
/dev/sg[0-9]
访问光盘设备,如CD和DVD驱动器。 - scanner
/var/lock/sane 访问扫描仪硬件。 - video
/dev/fb/0,
/dev/misc/agpgart
访问视频捕获设备,2D
/ 3D硬件加速,帧缓冲(可以使用X
而不属于该组)。 - storage存储
访问可移动驱动器,如USB硬盘驱动器,闪存/跳转驱动器,MP3播放器;
使用户能够安装存储设备。
未使用的群体,以下组目前不用于任何目的:
组
受影响的文件 目的
- 箱子
没有 历史的 - daemon
守护进程 - lock
用于锁文件访问。例如gnokii要求。 - mem
- network
默认情况下未使用。可用于例如授予对NetworkManager的访问权限(请参阅NetworkManager#设置PolicyKit权限)。 - power
- uuidd
5.2
以下是本机的用户及组信息(Arch
Linux)
$
cat passwd
$
sudo cat shadow
$
cat group
$ sudo cat gshadow
$ cat /etc/passwd | $ Sudo cat /etc/shadow | $ cat /etc/group | $ Sudo cat /etc/gshadow | ||||||||||||||||||||
帐号 | 密 | UID | 组ID | 注释性描述 | 主目录 | 登录Shell | 密码 | 最近修改日期 | 保护天数 | 密码失效天数 | 警告天数 | 失效日期 | 保留 | 组名 | 口令 | GID | user | 组密码 | 组管理者 | 组内用户列表 | |||
root | x | 0 | 0 | /root | /bin/bash | $6$. | 17980 | root | x | 0 | root | root | |||||||||||
bin | x | 1 | 1 | / | /sbin/nologin | !! | 17977 | bin | x | 1 | daemon | !! | daemon | ||||||||||
daemon | x | 2 | 2 | / | /sbin/nologin | !! | 17977 | daemon | x | 2 | bin | !! | bin | ||||||||||
sys | x | 3 | bin | !! | bin | ||||||||||||||||||
tty | x | 5 | !! | ||||||||||||||||||||
mem | x | 8 | !! | ||||||||||||||||||||
ftp | x | 14 | 11 | /srv/ftp | /sbin/nologin | !! | 17977 | ftp | x | 11 | !! | ||||||||||||
x | 8 | 12 | /var/spool/mail | /sbin/nologin | !! | 17977 | x | 12 | !! | ||||||||||||||
log | x | 19 | !! | ||||||||||||||||||||
smmsp | x | 25 | !! | ||||||||||||||||||||
proc | x | 26 | polkitd | !! | polkitd | ||||||||||||||||||
http | x | 33 | 33 | /srv/http | /sbin/nologin | !! | 17977 | http | x | 33 | !! | ||||||||||||
games | x | 50 | !! | ||||||||||||||||||||
lock | x | 54 | !! | ||||||||||||||||||||
clamav | x | 64 | 64 | Clam AntiVirus | / | /sbin/nologin | !! | 17982 | clamav | x | 64 | !! | |||||||||||
uuidd | x | 68 | 68 | / | /sbin/nologin | !! | 17977 | uuidd | x | 68 | !! | ||||||||||||
dbus | x | 81 | 81 | System Message Bus | / | /sbin/nologin | !! | 17977 | dbus | x | 81 | !! | |||||||||||
ntp | x | 87 | 87 | Network Time Protocol | /var/lib/ntp | /bin/false | !! | 17977 | ntp | x | 87 | !! | |||||||||||
network | x | 90 | !! | ||||||||||||||||||||
floppy | x | 94 | !! | ||||||||||||||||||||
scanner | x | 96 | !! | ||||||||||||||||||||
power | x | 98 | !! | ||||||||||||||||||||
polkitd | x | 102 | 102 | PolicyKit daemon | / | /sbin/nologin | !! | 17977 | polkitd | x | 102 | !! | |||||||||||
vboxusers | x | 108 | !! | ||||||||||||||||||||
rtkit | x | 133 | 133 | RealtimeKit | /proc | /sbin/nologin | !! | 17978 | rtkit | x | 133 | !! | |||||||||||
netdata | x | 134 | 134 | /var/cache/netdata | /sbin/nologin | !! | 17980 | netdata | x | 134 | !! | ||||||||||||
usbmux | x | 140 | 140 | usbmux user | / | /sbin/nologin | !! | 17977 | usbmux | x | 140 | !! | |||||||||||
munin | x | 619 | 619 | Munin system monitor | /var/lib/munin | /bin/false | ! | 17982 | munin | x | 619 | ! | |||||||||||
lightdm | x | 620 | 620 | Light Display Manager | /var/lib/lightdm | /sbin/nologin | !! | 17978 | lightdm | x | 620 | !! | |||||||||||
git | x | 972 | 972 | git daemon user | / | /usr/bin/git-shell | !! | 17983 | git | x | 972 | !! | |||||||||||
docker | x | 973 | !! | ||||||||||||||||||||
postgres | x | 974 | 974 | PostgreSQL user | /var/lib/postgres | /bin/bash | !! | 17980 | postgres | x | 974 | !! | |||||||||||
amule | x | 975 | 975 | aMule Client | /var/lib/amule | /sbin/nologin | !! | 17978 | amule | x | 975 | !! | |||||||||||
colord | x | 976 | 976 | Color management daemon | /var/lib/colord | /sbin/nologin | !! | 17977 | colord | x | 976 | !! | |||||||||||
avahi | x | 977 | 977 | Avahi mDNS/DNS-SD daemon | / | /sbin/nologin | !! | 17977 | avahi | x | 977 | !! | |||||||||||
systemd-coredump | x | 978 | 978 | systemd Core Dumper | / | /sbin/nologin | !! | 17977 | systemd-coredump | x | 978 | !! | |||||||||||
systemd-timesync | x | 979 | 979 | systemd Time Synchronization | / | /sbin/nologin | !! | 17977 | systemd-timesync | x | 979 | !! | |||||||||||
systemd-resolve | x | 980 | 980 | systemd Resolver | / | /sbin/nologin | !! | 17977 | systemd-resolve | x | 980 | !! | |||||||||||
systemd-network | x | 981 | 981 | systemd Network Management | / | /sbin/nologin | !! | 17977 | systemd-network | x | 981 | !! | |||||||||||
systemd-journal-remote | x | 982 | 982 | systemd Journal Remote | / | /sbin/nologin | !! | 17977 | systemd-journal-remote | x | 982 | !! | |||||||||||
rfkill | x | 983 | !! | ||||||||||||||||||||
systemd-journal | x | 984 | !! | ||||||||||||||||||||
toma | x | 1001 | 985 | /home/toma | /bin/bash | $6$. | 17977 | 0 | 99999 | 7 | users | x | 985 | !! | |||||||||
video | x | 986 | !! | ||||||||||||||||||||
uucp | x | 987 | !! | ||||||||||||||||||||
storage | x | 988 | !! | ||||||||||||||||||||
render | x | 989 | !! | ||||||||||||||||||||
optical | x | 990 | !! | ||||||||||||||||||||
lp | x | 991 | !! | ||||||||||||||||||||
kvm | x | 992 | !! | ||||||||||||||||||||
input | x | 993 | !! | ||||||||||||||||||||
disk | x | 994 | !! | ||||||||||||||||||||
audio | x | 995 | !! | ||||||||||||||||||||
utmp | x | 996 | !! | ||||||||||||||||||||
kmem | x | 997 | !! | ||||||||||||||||||||
wheel | x | 998 | !! | ||||||||||||||||||||
adm | x | 999 | daemon | !! | daemon | ||||||||||||||||||
nobody | x | 65534 | 65534 | Nobody | / | /sbin/nologin | !! | 17977 | nobody | x | 65534 | !! |
log20190425:添加不需要使用的:3.1 专有编辑命令(仅限高级用户);添加目录
Linux 系统的用户和组的更多相关文章
- Linux系统下用户与组的管理
Linux系统下用户与组的管理 一.用户及组基本概述 Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配. 1.uid(用户身份标识) (1)root用户 uid为0 (2)普通用户: ...
- Linux 系统的用户和组详解_【all】
1.Linux 用户和用户组详解 2.Linux 文件特殊权限详解 3.Linux 文件的读写执行权限的说明 4.Linux 架构之简述企业网站 5.Linux 环境变量设置详解 6.企业生产环境用户 ...
- Linux学习--4.用户和组的管理
用户和组的管理 前言 本篇文章主要讲Linux系统下用户和组的概念,还有添加用户和组,修改用户和组的基本操作,会涉及不少与之相关的配置文件与命令的介绍,几乎所有 正文 首先,简单提下概念,用户是操作系 ...
- 管理Linux服务器的用户和组
管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...
- Linux文件属性之用户和组基础知识介绍
一.Linux多用户多任务介绍 Linux/Unix 是一个多用户.多任务的操作系统:在讲Linux账号及账号组管理之前,我们先简单了解多用户.多任务操作系统的基本概念. 1.1Linux单用户多任务 ...
- Linux 系统中用户切换
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- Linux 系统中用户切换(su user与 su - user 的区别)
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- Linux系统root用户忘记密码解决方法
一:在linux系统启动时(如下图),按e键 二:进入到设置页面,定位到如下行: 三:按e键,进入输入界面 四:在编辑行最后面,空格,输入single,回车后回到第二步界面,只是后面多了single ...
- 破解Linux系统root用户密码
linux系统的启动过程 在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...
随机推荐
- 记-统计svn与git的log日志中的代码行变更
任务要求 统计指定时间内,指定git地址与svn地址上的所有人员的代码行变更情况. 解决方案 最初为根据数据库中存储的所有git与svn地址来统计所有人员的提交代码行.之后由于库中存储的地址不全,改为 ...
- mybatis调用存储过程,获取返回的游标
将调用存储过程参数放入map中,由于返回的游标中包含很多参数,所以再写一个resultmap与之对应,类型为hashmap.设置返回的jdbcType=CURSOR,resultMap设置为id对应的 ...
- 导航菜单点击图片切换--jquery
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- cdh日常维护常见问题及解决方案
为数据节点添加新硬盘 - 挂载硬盘到指定文件夹.如`/dfs_diskb`: - 打开cloudera manager -> hdfs -> 配置 -> DataNode -> ...
- form表单提交到Servlet后,弹出对话框,然后在跳转页面
在Servlet中添加一下代码即可 out.print("<script>alert('添加成功!');window.location='index.jsp';</scri ...
- SQL-50 将employees表中的所有员工的last_name和first_name通过(')连接起来
题目描述 将employees表中的所有员工的last_name和first_name通过(')连接起来.CREATE TABLE `employees` (`emp_no` int(11) NOT ...
- 几个常用内核函数(《Windows内核情景分析》)
参考:<Windows内核情景分析> 0x01 ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...
- k8s的flannel的pod运行一段时间init error
问题现象 使用Kubeadm部署的flannel网络运行一段时间后,提示init:Error错误,查看具体的信息如下: [root@node1 ~]# kubectl describe pod kub ...
- Python实现12306自动查票程序
这是在网上扒拉过来的,原文链接: http://blog.csdn.net/An_Feng_z/article/details/78631290 目前时间2018/01/04 文中各种接口均为可用,亲 ...
- 两种语言实现设计模式(C++和Java)(二:单例模式)
本篇介绍单例模式,可以说是使用场景最频繁的设计模式了.可以根据实例的生成时间,分为饿汉模式和懒汉模式 懒汉模式:饿了肯定要饥不择食.所以在单例类定义的时候就进行实例化. 饿汉模式:故名思义,不到万不得 ...