Linux用户相关命令

Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统是识别的是用户的UID、GID,而非用户用户名),一个UID是唯一(系统中唯一如同身份证一样)用来标识系统的用户账号(用户名)。

cat /etc/centos-release 查看系统版本
Ubuntu的话可以使用cat /etc/issue命令查看系统版本,使用cat /etc/lsb-release命令查看系统版本的详细信息。

uname -a 查看内核版本
使用who或者whoami命令查看当前用户名(whoami只查看用户名,who命令可以看到更多)。

用户分类

文件的用户与用户组分为超级管理员,普通用户和系统用户。

查看用户

cat /etc/passwd 查看所有用户信息,包含用户详细信息。
id user1 查看用户user1的UID和GID。
finger user1 查看用户user1的主目录、启动shell、用户名、地址、电话等信息。

超级用户

超级管理员的UID=0,GID=0,也可以这么说系统只要是识别出某个用户的UID\GID都为0时,那么这个用户系统就认为是超级管理员。有些系统调用是只能由超级用户来执行,这些操作有:
1)采用chroot命令来改变进程的根目录
2)创建设备文件
3)设置系统时钟
4)提高资源使用率的限度和进程的优先级
5)设置系统的主机名称
6)配置网络接口
7)打开特权网络端口(编号小于1024的端口)
8)关闭系统

linux其实是允许修改这个账号的用户名的,也可以创建UID为0的其他账号,但是强烈不建议使用这两种做法。大多数系统禁止root在终端上或者通过网络来登录系统,或者说除了消停控制台之外的其他任何地方都禁止root登录。
从其他用户切换到超级用户命令:su root,sudo su。sudo是受限的su命令,sudo读取文件/etc/sudoers。文件sudoers的设计做到了只用一个版本就可以立即用在许多不同的主机上。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges(组admin的成员可以获得root权限)
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command(组sudo的成员可以执行任何命令)
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

这里要区分root和sudo,root就是系统根用户,就像上面说的,是系统里本来就定义好了一个UID和GID都是0的用户。sudo是superuser do的缩写,他是一个命令行实用程序,他是授权用户以root用户身份运行脚本。sudo提供细粒度访问控制,就是每次执行的时候都是特定授权一下,而不是直接以root shell(root权限运行命令)来运行。
另外还有一个命令su容易混淆,它其实是switch user的缩写,是用来切换当前用户的,su root切换到用户root
,su david切换到用户david,执行这个命令时会要求你输入要切换的那个用户的密码。

普通用户

普通用户是管理员添加的,默认它的UID\GID是从500-65535,权限很小,只能操作自己的家目录中文件及子目录。
这里注意有一个例外,普通的NFS(Network File System,网络文件系统)用户,它的UID\GID是65534。nobody账号代表一个普通的、权力相对小的用户,这个账号不应该拥有任何文件。如果nobody拥有任何文件的话,那么远程的root就可以控制这些文件。为了去掉远程root用户的特权,远程UID为0的用户必须被映射成本地UID 0之外的某个用户。

系统用户

系统用户也称虚拟用户,也就是安装系统时就默认存在的且不可登陆系统,它们的UID\GID是1-499。我们可以通过cat /etc/passwd命令来查看所有的用户信息,例如下图,第三列是UID,第四列是GID:


image.png

这里可以看几个伪用户,伪用户是相对root用户来的。
1)deamon用户
有些文件和进程是操作系统的一部分,但不需要由root做属主,这样的文件和进程就交给了daemon。
2)bin用户
在一些比较老的UNIX系统上。bin用户是包含系统命令的那些目录的属主,还是大多数命令本身的属主。不过现在的系统都是用的root账号了。只不过bin账号我们现在还不会废除它,这个是历史遗留下来的“标准”账号。

文件和进程的归属关系

每个文件都有一个属主(owner)和一个“属组(group owner)”。


image.png

Linux实际上是不是用名字来确定属主和属组的,而是用的UID和GID,也就是上面的数字,例如上图中的24组的2018号才是用来确定network的属主和属组。

su/sudo命令

su 命令用于切换当前用户身份到其他用户身份。

sudo 命令用于切换用户执行权限,这个命令可使其它非 root 用户具有 root 权限。默认情况下,sudo 要求用户使用密码进行身份验证,这是用户密码,不是 root 密码。

语法格式
su [ options ] [ username ]
sudo [ options ] [ command ]
su命令选项
-c<指令>  #执行完指定的指令后,即恢复原来的身份
-f  #使shell不用去读取启动文件
-l  #切换身份时,同时变更工作目录
-m  #切换身份时,不变更环境变量
-s  #指定要执行的shell
--help     #打印帮助信息
--version  #打印版本信息
sudo 命令选项
-b  #在后台执行指令
-h  #打印帮助信息
-H  #将HOME环境变量设为新身份的HOME环境变量
-k  #结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
-l  #列出目前用户可执行与无法执行的指令
-s<shell>  #执行指定的shell
-u<用户>   #以指定的用户作为新的身份
-v  #延长密码有效期限5分钟
-V  #打印版本信息
应用举例

1)su命令示例

#切换用户到 mingongge
[root@centos7 ~]# su - mingongge
Last login: Sun Jan 17 08:08:46 EST 2021 on pts/0

#切换到root用户后执行pwd命令后再切换至原用户
[mingongge@centos7 ~]$ su -c pwd root
Password: 
/home/mingongge

2)sudo命令示例

[mingongge@centos7 ~]$ sudo -i
[sudo] password for mingongge: 
mingongge is not in the sudoers file.  This incident will be reported.
#普通用户如果没有在/etc/sudoers文件里配置相关的信息,则无法执行sudo这个命令
[mingongge@centos7 ~]$ sudo -l
[sudo] password for mingongge: 
Sorry, user mingongge may not run sudo on centos7.

用户需要执行 sudo 命令时就需要在/etc/sudoers配置文件中配置,然后直接使用sudo + 需要执行的命令 这种组合来让自己具有管理员权限。

useradd命令

useradd命令用于新建用户

useradd user1    创建用户user1
useradd -e 12/30/2021 user2   创建用户user2,有效期到2021-12-30
命令选项
-c #加上备注文字,备注文字保存在passwd的备注栏中。
-d #指定用户登入时的主目录,替换系统默认值/home/<用户名>
-D #变更预设值。
-e #指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f #指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
-g #指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。
-G #指定用户所属的附加群组。
-m #自动建立用户的登入目录。
-M #不要自动建立用户的登入目录。
-n #取消建立以用户名称为名的群组。
-r #建立系统账号。
-s #指定用户登入后所使用的shell。默认值为/bin/bash。
-u #指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
应用实例
useradd -s mingongge   
#新建系统用户mingongge

useradd mingongge -u 888    
#设定ID值时尽量要大于500,以免冲突;一般0到499之间的值留给bin、mail这样的系统账号

useradd -m -d /home/mingongge mingongge   
#指定创建用户家目录的路径,/home/mingongge目录会被创建

useradd -s /sbin/nologin mingongge     
#创建一个没有家目录且不能登录的用户

useradd -m -G test,sudo mingongge      
#创建时把用户加入不同的用户组test,sudo

useradd -u 2020 -m -g root mingongge       
#添加用户mingongge其id为2020,并且将其添加到组群root中

使用useradd -D可以查看创建新用户时的默认信息,或直接cat /etc/default/useradd

useradd -D
GROUP=888
HOME=/home
INACTIVE=888
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

修改创建新用户时的默认信息。

useradd -D -f 999

#查看是否修改成功
useradd -D | grep INACTIVE
INACTIVE=999

userdel命令

删除用户

userdel user1  删除用户user1。
userdel -r user1  删除用户user1同时删除他的工作目录。
命令选项
-f #强制删除用户账号
-r #删除用户主目录及其中的任何文件
-h #显示命令的帮助信息
应用示例

删除用户,但不删除其家目录及文件

[root@mingongge ~]# userdel mingongge

删除用户,并将其家目录及文件一并删除

[root@mingongge ~]# userdel -r mingongge

强制删除用户

[root@mingongge ~]# userdel -f mingongge

usermod命令

修改用户账号

usermod –l u1 user1 将用户 user1的登录名改为 u1
usermod –g users user1 将用户 user1 加入到 users组中
usermod –g root user1  将用户 user1 加入到 root组(root用户所在的组)中
usermod –d /users/user1 user1  将用户 user1 目录改为/users/user1

passwd命令

passwd命令用于创建或修改用户的密码,passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

语法格式
passwd [选项] [username]
选项说明
-d  #删除密码
-f  #强迫用户下次登录时必须修改口令
-w  #口令要到期提前警告的天数
-k  #更新只能发送在过期之后
-l  #锁定账号使用
-S  #显示密码信息
-u  #启用已被停止的账户
-g  #修改群组密码
-S  #列出密码相关参数,即shadow文件内的大部分信息
-n  #后面接天数,shadow的第4字段,多久不可修改密码
-x  #后面接天数,shadow的第5字段,多久内必须要改动密码
-w  #后面接天数,shadow的第6字段,密码过期前的警告天数
-i  #后面接“日期”,shaodow的第7字段,密码失效日期
--help     #显示帮助信息
--version  #显示版本信息
--stdin    #从标准输入中读入新密码(此时可以看见设置的密码)

passwd user1 设置密码,有设置密码的用户不能用
这里设置密码时可能会碰到密码保护机制问题,这里需要注释掉保护机制的问题,这个时候需要在编辑/etc/pam.d/system-auth文件,将其中的password requisite和password sufficient两行注释掉,如下图:

image.png

以上两行分别对应第一次输入密码保护机制和重复输入密码保护机制。
应用实例

1、修改用户密码
[root@mingongge ~]# passwd test  #设置test用户的密码
Enter new UNIX password:        #输入新密码,输入的密码无回显
Retype new UNIX password:       #确认密码
passwd: password updated successfully

2、显示账号密码信息
[root@mingongge ~]# passwd -S mingongge
mingongge P 12/25/2020 0 99999 7 -1

3、删除用户密码
[root@mingongge ~]# passwd -d mingongge
passwd: password expiry information changed.

4、锁定一个用户
[root@localhost ~]$ passwd -l mingongge     #锁定用户mingongge不能更改密码
Locking password for user mingongge.
passwd: Success                           #锁定成功
[root@localhost ~]# su mingongge    #切换到mingongge用户;
[mingongge@localhost ~]$ passwd     #来更改mingongge密码
Changing password for user mingongge.
Changing password for mingongge
(current) UNIX password:           #输入mingongge的当前密码
passwd: Authentication token manipulation error      #失败,不能更改密码

5、清除一个用户的密码
[root@localhost ~]$ passwd -d mingongge   #清除mingongge用户密码
Removing password for user mingongge.
passwd: Success                          #清除成功; 
[root@localhost ~]# passwd -S mingongge    #查询用户密码状态
Empty password.                          #空密码,也就是没有密码,后面空密码就可以登录

who命令

who 命令用于显示目前登录系统的用户信息,可以查看目前有哪些用户登录到系统等信息。

语法格式
who [ OPTION ]... [ FILE ] [ am i ]
选项说明
-a  #与使用选项-b -d --login -p -r -t -T -u相同。
-b  #显示上次系统引导的时间
-d  #显示无效进程
-H  #显示各栏位的标题信息列
-i  #显示闲置时间
-m  #此参数和指定"am i"字符串相同
-q  #只显示登入系统的帐号名称和总人数
-w  #显示用户的信息状态栏
--help  #打印在线帮助
--version  #显示版本信息
应用举例
[root@centos7 ~]# who
root     pts/0        2021-01-17 08:26 (192.168.1.93)
root     pts/1        2021-01-17 08:32 (192.168.1.93)
[root@centos7 ~]# who -b
         system boot  2021-01-14 05:41
[root@centos7 ~]# who -d
[root@centos7 ~]# who -m
root     pts/1        2021-01-17 08:32 (192.168.1.93)
[root@centos7 ~]# who -q
root root
# users=2
[root@centos7 ~]# who -aH
NAME       LINE         TIME             IDLE          PID COMMENT  EXIT
           system boot  2021-01-14 05:41
LOGIN      tty1         2021-01-14 05:42               630 id=tty1
           run-level 3  2021-01-14 05:42
root     + pts/0        2021-01-17 08:26 00:06       28432 (192.168.1.93)
root     + pts/1        2021-01-17 08:32   .         28737 (192.168.1.93)

w命令

w命令是一个非常常用的命令,用来查看登录者的信息和行为动作、系统负载等。

语法格式
w [OPTIONS][用户名称]
选项说明
-f  #开启或关闭显示用户从何处登录到系统
-h  #不显示各栏位的标题信息列
-l  #使用详细格式列表(默认)
-s  #使用简洁格式列表
-u  #忽略执行程序的名称,以及该程序耗费CPU时间的信息
-V  #打印版本信息
应用举例
#显示当前用户及系统负载信息
[root@centos7 ~]# w
 08:48:55 up 1 day, 10:02,  2 users,  load average: 0.09, 0.04, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.93     08:26   20:15   0.04s  0.04s -bash
root     pts/1    192.168.1.93     08:32    7.00s  0.25s  0.18s w

#不显示用户登录位置信息
[root@centos7 ~]# w -f
 08:48:58 up 1 day, 10:02,  2 users,  load average: 0.08, 0.04, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     08:26   20:18   0.04s  0.04s -bash
root     pts/1     08:32    2.00s  0.08s  0.01s w -f

#以精简格式显示
[root@centos7 ~]# w -s
 08:49:12 up 1 day, 10:03,  2 users,  load average: 0.06, 0.04, 0.05
USER     TTY      FROM              IDLE WHAT
root     pts/0    192.168.1.93     20:32  -bash
root     pts/1    192.168.1.93      0.00s w -s

#不显示列的标题信息
[root@centos7 ~]# w -h
root     pts/0    192.168.1.93     08:26   20:36   0.04s  0.04s -bash
root     pts/1    192.168.1.93     08:32    4.00s  0.07s  0.00s w -h

id命令

id命令用于查看用户的UID\GID及所属的用户组信息。
UID在系统中是唯一的,也是用户的身份标识,但GID可以对应多个UID,因为一个用户可以加入多个用户组。

语法格式
id [OPTIONS][用户名称]
选项说明
-g  #显示用户所属群组的ID
-G   #显示用户所属附加群组的ID
-n  #显示用户,所属群组或附加群组的名称
-r  #显示实际ID
-u  #显示用户ID
-Z   #仅打印当前用户的安全上下文
-help   #打印帮助信息
-version      #打印版本信息
应用举例
[root@centos7 ~]# id
uid=0(root) gid=0(root) groups=0(root)
#root 的 UID = 0,GID = 0

[root@centos7 ~]# id -a
uid=0(root) gid=0(root) groups=0(root)
[root@centos7 ~]# id -g
0
[root@centos7 ~]# id -G
0
[root@centos7 ~]# id mingongge
uid=1000(mingongge) gid=1000(mingongge) groups=1000(mingongge)

用户组相关命令

用户组在./etc/group文件中定义,但是现在用户组的信息保存在网络中的NIS或者LDAP服务器上的情形更常见。
GID就是进程的组标识号。EGID与GID的关系更EUID与UID的关系相同。
创建用户组
groupadd –g 888 users 创建一个组users,其GID为888
groupadd users 不用g参数,使用默认的组ID

命令 gpasswd为组添加用户
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组

命令groupmod修改组
groupmod –n user2 user1 修改组名user1为user2

groupdel删除组
groupdel users 删除组users

sudo提权

真正从安全性角度上来考虑的话,是要控制用户一定执行命令的权限,也就是哪些用户可以执行哪些命令,不可以执行哪些命令,因此也就有了sudo这个应用,对于sudo提权,也就是修改/etc/sudoers的配置文件。

#查看/etc/sudoers
[root@localhost init.d]# ls -ll /etc/sudoers
-r--r-----. 1 root root 4328 Oct 30  2018 /etc/sudoers
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容