以下功能基于centos实验
用户
etc/passwd 存放用户名与用户ID的对应关系,相当于一个数据库
[yxkong@localhost ~]$ tail /etc/passwd rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin chrony:x:994:993::/var/lib/chrony:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin yxkong:x:1000:1000:yxkong:/home/yxkong:/bin/bash #用户名:密码:用户ID(uid):主要组ID(gid):GECOS:主目录:登录shell
用户分为三类:普通用户,根用户,系统用户
普通用户
普通用户是使用系统的真实用户人群。通常把/bin/bash作为登录Shell,把/home的子目录作为主目录。普通用户的用户ID数通常>=500
根用户
用户ID=0是为根用户保留的,根用户有时称作超级用户。具有系统上的完全权限,通常使用/root作为主目录
系统用户
大多数Linux系统保留一系列低UID值用户作为系统用户。系统用户不代表人,而代表系统的组成部分
组
用户和他们所运行的程序,以及他们所拥有的文件都属于一个组的集合。组成员身份允许系统管理员有效的管理具有相似对象的用户。
每个用户都隶属于一个主要组。用户可以不属于或属于多个次要组。
etc/group 文件
[yxkong@localhost ~]$ vim /etc/group root:x:0:yxkong bin:x:1: daemon:x:2: wheel:x:10:yxkong cdrom:x:11: mail:x:12:postfix #组名称 组密码 组ID(GID) 组成员
每个文件都有一个用户所有者和一个组所有者
主要组和次要组
文件创建者的默认组称为主要组。
检查用户信息
id命令用于显示用户信息和组信息
[yxkong@localhost ~]$ id --help Usage: id [OPTION]... [USER] Print user and group information for the specified USER, or (when USER omitted) for the current user. -a ignore, for compatibility with other versions -Z, --context print only the security context of the current user -g, --group print only the effective group ID(只打印有效的组ID) -G, --groups print all group IDs(打印所有组) -n, --name print a name instead of a number, for -ugG(打印用户或组名称,而不是数字,需要配合-ugG,不能单独使用) -r, --real print the real ID instead of the effective ID, with -ugG -u, --user print only the effective user ID(只打印有效的用户ID) -z, --zero delimit entries with NUL characters, not whitespace; not permitted in default format --help显示此帮助信息并退出 --version显示版本信息并退出
如果不附带任何选项,程序会显示一些可供识别用户身份的有用信息。
[yxkong@localhost ~]$ id #直接打印当前登录用户信息 uid=1000(yxkong) gid=1000(yxkong) 组=1000(yxkong),0(root),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [yxkong@localhost ~]$ id root #打印指定用户的信息 uid=0(root) gid=0(root) 组=0(root)
whoami用于获取当前用户名
[yxkong@localhost ~]$ whoami yxkong
who、users和w命令用于获取正在会话中的用户
users打印当前登录用户简单列表
[yxkong@localhost ~]$ users #虚拟机没有登录 (unknown) yxkong [yxkong@localhost ~]$ users #虚拟机以root登录后 root yxkong
w打印当前所有登录系统用户的信息,可以具体指定用户
[yxkong@localhost ~]$ w --help Usage: w [options] Options: -h, --no-header do not print header(跳过标题) -u, --no-current ignore current process username() -s, --short short format(简短列表) -f, --from show remote hostname field(不要显示"FROM"字段) -o, --old-style old style output -i, --ip-addr display IP address instead of hostname (if possible) --help display this help and exit -V, --version output version information and exit For more details see w(1). [yxkong@localhost ~]$ w #虚拟机没有登录 08:39:30 up 26 min, 2 users, load average: 0.39, 0.50, 0.31 USER TTY LOGIN@ IDLE JCPU PCPU WHAT yxkong pts/0 08:15 2.00s 0.17s 0.02s w [yxkong@localhost ~]$ w 08:44:25 up 30 min, 2 users, load average: 0.42, 0.33, 0.27 USER TTY LOGIN@ IDLE JCPU PCPU WHAT yxkong :0 08:44 ?xdm? 19.18s 0.10s gdm-session-worker [pam/gdm-password] yxkong pts/0 08:15 1.00s 0.17s 0.01s w USER:登录用户的用户名 TTY:用户登录的终端 FROM:如果用户从网上登录,用户使用的主机名 LONGIN@:用户开始会话的时间 IDLE:终端已经空闲的时间 JCPU:与终端会话相关,所有当前运行进程消耗的CPU时间总量 WHAT:用户当前运行进程
who即提供了当前登录用户的详细信息(类似于w),也可以用来报告系统事件,如当前运行级别、系统时钟调整
[yxkong@localhost ~]$ who --help 用法:who [选项]... [ 文件 | 参数1 参数2 ] 显示当前已登录的用户信息。 -a, --all等于-b -d --login -p -r -t -T -u 选项的组合 -b, --boot上次系统启动时间 -d, --dead显示已死的进程 -H, --heading输出头部的标题列 -l,--login显示系统登录进程 --lookup尝试通过 DNS 查验主机名 -m只面对和标准输入有直接交互的主机和用户 -p, --process显示由 init 进程衍生的活动进程 -q, --count列出所有已登录用户的登录名与用户数量 -r, --runlevel显示当前的运行级别 -s, --short只显示名称、线路和时间(默认) -T, -w, --mesg用+,- 或 ? 标注用户消息状态 -u, --users列出已登录的用户 --message等于-T --writable等于-T --help显示此帮助信息并退出 --version显示版本信息并退出 [yxkong@localhost ~]$ who #虚拟机没有登录 (unknown) :0 2014-10-11 08:37 (:0) yxkong pts/0 2014-10-11 08:15 (10.200.1.24) [yxkong@localhost ~]$ who #虚拟机以root登录后 root :0 2014-10-11 08:35 (:0) yxkong pts/0 2014-10-11 08:15 (10.200.1.24)
身份切换
su命令让用户切换用户(switch user)ID
[yxkong@localhost ~]$ su --help 用法: su [选项] [-] [USER [参数]...] 将有效用户 id 和组 id 更改为 USER 的 id。 单个 - 视为 -l。如果未指定 USER,将假定为 root。 选项: -m, -p, --preserve-environment 不重置环境变量(临时保持当前设置的环境) -g, --group <组> 指定主组 -G, --supp-group <组> 指定一个辅助组 -, -l, --login 使 shell 成为登录 shell -c, --command <命令> 使用 -c 向 shell 传递一条命令(运行指定命令,然后返回) --session-command <命令> 使用 -c 向 shell 传递一条命令 而不创建新会话 -f, --fast 向shell 传递 -f 选项(csh 或 tcsh) -s, --shell <shell> 若 /etc/shells 允许,则运行 shell(用SHELL作为新用户的Shell) -h, --help 显示此帮助并退出 -V, --version 输出版本信息并退出
su命令通过常用字符串调用,例如:su-,指明用户应该作为新用户有效登录。
例如:
su 用户名 只是临时使用对应的用户的Shell,用完后直接 su 当前登录名可以退回来
[yxkong@localhost ~]$ su root 密码: [root@localhost yxkong]# #新Shell称为用户root的Shell,在这个shell上启动的任何进程都属于root,这个Shell称为非登录Shell。root并没有完全登录,
su - 用户名 该用户作为新用户完全登录,和原来的用户没有任何关系了
[
yxkong@localhost ~]$ su - root 密码: 上一次登录:一 10月 13 08:37:27 CST 2014pts/1 上 [root@localhost ~]# [yxkong@localhost ~]$ su #不加任何参数临时切换到根用户 密码: [root@localhost yxkong]# su - #永久性的切换 密码: 上一次登录:一 10月 13 08:47:26 CST 2014pts/1 上 [root@localhost ~]#
newgrp命令,也称作sg,让用户切换主要组(switch primary group)ID
用法:
[yxkong@localhost ~]$ sg --help 用法:sg 组 [[-c] 命令]
查看到yxkong的主要组是yxkong
[yxkong@localhost ~]$ id uid=1000(yxkong) gid=1000(yxkong) 组=1000(yxkong),0(root),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [yxkong@localhost ~]$ sg root
执行命令后查看到 yxkong的主要组已经变成了root了
[yxkong@localhost ~]$ id uid=1000(yxkong) gid=0(root) 组=1000(yxkong),0(root),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
文章评论