系统基础-用户管理

Linux 是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账号,每个账号都有一个唯一的用户名,同时必须设置密码。

Linux 用户和用户组

UID 和 GID

事实上,Linux 系统采用一个 32 位的整数记录和区分不同的用户,这意味着系统可以记录多达40亿个不同的用户。这个用来区分不同用户的数字被称为 User ID ,简称 UID。系统会自动记录“用户名”和“UID” 的对应关系。

Linux 系统中的用户分为3类,即普通用户、根用户、系统用户。

用户登录 权限
普通用户 只能在其家目录、系统临时目录或其他经过授权的目录中操作,以及属于该用户的文件,通常普通用户的UID大于500,从500开始编号。
根用户 即ROOT用户,它的ID是0,也被称为超级用户,拥有对系统的完全控制权。
系统用户 系统用户指系统运行时必须有的用户,但并不是指真的使用者。比如在RedHat 或 CentOS 下运行网站服务时,需要使用系统用户 Apache 来运行 httpd 进程,而运行 Mysql 数据库服务时,需要使用系统用户 mysql 来运行 mysql 进程。系统用户的ID范围是 1-499。

用户组

在Linux系统中除了有用户之外,还有“用户组”的概念,不同的用户组同样也是用数字来区分的,这种用于区分不同用户组的ID被称为Group ID ,也就是GID。

image

查看ID

id

查看组

groups

配置文件

记录用户和用户的配置文件

image

新增用户

useradd UserName

对于系统来说,完成这个命令需要在后台执行很多行为。

  • 将用户信息记录在 /etc/passwd 中,一般会在 /etc/password 和 /etc/shadow 两个配置文件末尾追加一条记录,同时会分配给该用户一个UID。
image
  • 接着,要为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home 目录中。
image
  • 然后,复制 /etc/skel 下所有的文件至 /home/john 。说明一下,如果你使用ls -l /etc/skel 命令查看,可以发现这个目录下,什么也没有,但事实上,该目录下有很多隐藏文件,用户 ls -la /etc/skel 可以查看。
image
  • 最后,新建一个与该用户名一样的用户组,也就是说创建一个用户的同时,也创建了一个与用户名相同的用户组,而用户默认属于这个用户组。

可以说,/etc/skel 实际上是创建用户时的"模板"。

可以在创建用户的时候指定UID和GID

useradd -u UID UserName
useradd -g GroupName UserName

还可以使用-d参数指定该用户的家目录,而不是使用系统默认的家目录。

useradd -d /home/DirName UserName

设置密码

passwd UserName
image

更改用户信息

更改家目录

usermod -d NewDir -m UserName

锁定/解锁用户

usermod -L UserName
usermod -U UserName

其实 usermod 命令就是对 /etc/passwd 和 /etc/shadow 文件做一些修改而已。明白了这个道理之后,就算不实用这个命令依然可以手工对用户进行修改操作。

删除用户

userdel UserName

使用这个命令可以删除用户在 /etc/passwd 和 /etc/shadow 中的记录。但是从数据安全方面考虑,默认情况下,删除用户并不会删除用户的家目录和邮件信息。可以使用-r参数删除用户家目录和用户的邮件。

一旦执行了这条命令,该用户的相关文件就会被全部删除。

新增和删除用户组

新增用户组

groupadd GroupName

在Linux中,使用 /etc/group 文件来记录用户组。

image

删除用户组

groupdel GroupName

这里需要注意的是,如果已有用户属于这个试图删除的组,该操作会失败。

检查用户信息

查看用户

users       // 查看当前系统有哪些用户
image

从截图中发现有多个 ROOT 在当前机器中登录。实际上, Linux会把来自不同终端的活动定义为一个会话,从 who 命令的输出,可以看出 root 用户是通过不同的终端登录到系统中的。users 命令相对比较简单,所以列出的信息也比较少,可以使用命令 who 来看到更多的信息。

image

命令显示的结果有3列,第一列是登录用户的用户名,第二列是用户登录的终端,第三列是用户登录的时间。如果是通过远程网络登录,则同时会显示远程主机的主机名或IP地址。还可以使用命令 w 看到更详细的信息。

image
解释
1 登录用户的用户名
2 用户登录的终端
3 如果用户从网络登录,则显示远程主机的主机名或IP地址
4 用户登录的时间
5 用户闲置的时间
6 与终端用户的当前所有运行进程消耗的CPU时间总量
7 当前WHAT列所对应的进程所消耗的CPU时间总量
8 用户当前运行的进程

调查用户

finger
image

如果发现没有该命令,需要安装:

yum install finger

切换用户

在使用Linux的过程中,很多时候由于实际需要可能要在不同的用户之间切换。比如原本是使用普通用户登录的,但是在操作的过程中由于权限原因必须使用 root 用户来做一些操作,这时就需要临时切换成 ROOT 用户。操作完成之后,再推出切换成普通用户。涉及到两种方法:su 和 sudo 。

切换成其他用户

su - UserName

如果不加参数,默认切换到 root 用户。完成操作之后,使用 exit 命令可以退出root切换到用来的用户。

su 命令后面还可以加上一个"-" 参数,就是键盘上的中横线。加上这个参数之后,切换成 root 的用户环境。所谓"用户环境"就是 /etc/passwd 中定义的家目录、使用的 Shell,以及关于这个用户的个性化设置等。

su 命令虽然方便,但还是有明显的缺陷,就是切换成其他用户要知道其密码。如果需要切换成 root ,那就要知道 root 的密码。我们知道,root 是系统中权限最高的用户,如果让太多人知道 root 密码,必然是很不安全的。为解决这个问题,我们可以使用 sudo 命令。

用其他用户的身份执行命令

sudo command // 使用 root 身份执行命令
image

运行该命令的时候,系统首先检查 /etc/sudoers,判断该用户是否有执行 sudo 的权限,在确认有执行权限之后,系统要求用户输入自己的密码,如果密码输入正确,则会使用 root 用户的身份运行 passwd UserName 命令。

使用 visudo 命令来修改 /etc/sudoers 配置文件,它可以自动检查语法。

image

加入 "username ALL =(ALL)ALL" 这一行代表的意思是,john 这个用户可以从任何地方登陆后执行任何人的任何命令。还可以定义某一组的 sudo 权限,比如 "%username ALL=(ALL)ALL" 可以让所有属于 john 用户组的用户从任何地方登陆后执行任何人的任何命令。

假设用户由于工作需要,经常要重启或者关闭服务器,那么就可以进行如下设置:

username ALL=(ALL) NOPASSWD:/sbin/shutdown,/usr/bin/reboot

严格来说,sudo 并不是真的切换了用户,而是使用其他用户的身份和权限执行了命令。

执行任务管理

日常生活中常会有例行性的事情,比如说每周工作日的闹钟、每年一次的生日提醒等。还有一些事情是偶发性的,比如突然需要处理一封紧急的邮件等。在Linux中也有处理这两种任务的方法。**如果任务是周期性执行的,其命令为 cron;如果只是在某一个特定的时间执行一次,其命令为 at **。

单一时刻执行一次任务

定时关机

image

第一行是定义从现在开始计算,30分钟后安排一个任务;

第二行是到了时间后执行关机操作;

第三行是<EOT>,这不是键盘输入的,而是使用了组合键 Ctrl+D ,表示输入结束。

第四行是系统提示有一个任务将于该时间执行。

atq         // 查看当前使用 at 命令调度的任务列表
image

也可以使用如下命令删除已经进入任务队列的任务

atrm id 
image

使用 at 还可以安排在具体的时间执行任务

image

默认情况下,所有用户都可以使用 at 命令来调度自己的任务,如果由于特殊的原因需要禁止某些用户使用这个功能,可以将该用户的用户名添加至 /etc/at.deny 中。

image

周期性执行任务 cron

首先要确定crond进程在运行,如果没有运行,需要先启动该进程。

image

该命令的执行环境为 CentOS 7

用户可以使用 crontab 来设置自己的计划任务,并使用-e参数来编辑任务。在这之前需要先了解一下设置的语法,但使用 crontab -e 进入编辑模式时,需要编辑执行的时间和执行的命令。

在下面的示例中,前面5个*可以用来定义时间:

序号 含义
1 分钟 1-59
2 小时 0-23
3 日期 1-31
4 月份 1-12
5 星期几 0-6

举例

crontab -e

// 以下两种写法其实是一致的,都是每分钟重启 httpd 进程。
* * * * * systemctl restart httpd.services
*/1 * * * * systemctl restart httpd.services

// 每小时重启 httpd 进程
* 23-3/1 * * * systemctl restart httpd.services

// 每天晚上23点30分重启 httpd 进程
30 23 1 * * systemctl restart httpd.services

删除所有的任务

crontab -r

禁止某用户使用该功能

vim /etc/cron.deny

root 可以使用 -u 查看指定用户的任务

crontab -u UserName -l

/etc/crontab 的管理

用户可以通过 crontab -e 命令来编辑定义自己的任务,事实上,系统也有自己的例行任务,而其配置文件是 /etc/crontab 。

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

推荐阅读更多精彩内容