您的位置:首页 > 运维架构 > Shell

Linux系统命令及Shell脚本学习笔记二:用户管理

2015-08-09 21:15 1056 查看

Linux用户管理

UID和GID

Linux是一个多用户分时系统。

Linux系统采用一个32位的整数记录和区分不同的用户,用来区分不同用户的数字称为UID。系统会自动记录用户名和UID的对应关系。Linux系统中的用户分为三类:普通用户 系统用户 根用户。

普通用户是指所有使用Linux系统的真实用户,使用用户名及密码登录系统。一般来说普通用户只能在其家目录,系统临时目录和其他经过授权的目录中操作,以及操作属于该用户的文件。通常普通用户的UID大于500.

根用户,root,ID是0,拥有对系统的完全控制权:可以修改删除运行任何文件。

系统用户是指系统运行时必须有的用户,但并不是真实的使用者。比如系统用户apache来运行httpd进程。系统用户的ID范围是1-499.

区分不同用户组的ID称为GID。

ls -l第三列第四列显示用户及用户组的名字;ls -ln用UID及GID显示

查看自己的UID命令:id

查看自己的GID命令:groups

查询当前在线用户:who

/etc/passwd和/etc/shadow

这是系统用来记录用户名密码的文件

/etc/passwd格式说明i

第一列 用户名 是UID的字符串标记方式

第二列 密码 已过时,现在将密码放在/etc/shadow中,此处为字母x(由于每个用户都有读取这个文件的权限,但即使是加密的密码也有被破解的可能,所以将密码从/etc/passwd中剥离出来)

第三列 UID 用户唯一ID

第四列 GID 主用户组ID

第五列 说明栏 已过时

第六列 家目录 用户登录后所处的目录

第七列 登录Shell

/etc/shadow格式说明

第一列 用户名

第二列 密码 加密后的(若为两个感叹号!!,则不允许该用户登录系统)

第三列 密码的最近修改日 从1970年1月1日至密码修改日的天数

第四列 密码不可修改的天数 修改密码之后,几天内不可修改,若是0,随时可以随时修改

第五列 密码重新修改的天数 设置修改时间,在密码到期之前系统会提醒用户修改密码

第六列 密码失效前提前警告的天数

第七列 密码失效宽限天数 若密码到期,过了几天后将无法登录系统

第八列 帐号失效日期

第九列 保留字段

帐号管理

useradd

首先系统需要将用户信息记录在/etc/passwd和/etc/shadow中,同时会分配给该用户一个UID,也可以使用-u参数指定UID

接着要为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home目录中,也可以使用-d参数来指定该用户的家目录

然后复制/etc/skel下所有的文件至家目录

最有新建一个与该用户名一样的用户组,也可以使用-g参数指定主用户组,-G参数指定其他用户组

passwd

作为rioot用户,passwd <username>连输入两次密码即可,即使系统提示密码过于简单也可成功

作为普通用户,passwd没有参数,先输入自己的密码,再输入新密码两次即可。但是系统会拒绝普通用户设置过于简单的密码

usermod

usermod -L <username>冻结帐号

usermod -U <username>解锁帐号

其实usermod就是对/etc/passwd和/etc/shadow文件做一些修改

userdel <username>删除/etc/passwd和/etc/shadow中的记录. 若加-r参数,会同时删除用户家目录和该用户的邮件。注意,一旦执行了这条命令,该用户的相关文件就会被全部删除。

groupadd

groupdel

查看用户

users查看当前系统在线用户,只显示用户名

who查看当前系统在线用户,还可显示用户登录的终端,和登录的时间。若是远程登录,会显示远程主机的主机名或者IP

w可以看到更详细的信息,第一行显示当前时间,系统运行时间,已登录的用户数量和系统负载。下面显示信息为8列:

登录用户的用户名

用户登录终端

若是远程登录,显示远程主机的主机名或者IP地址

用户登录时间

用户闲置时间

与终端相关的当前所有运行进程消耗的CPU时间总量

当前WHAT列所对应的进程所消耗的CPU时间总量

用户当前运行的进程

切换成其他用户

su 命令切换到root,当前用户环境不发生变化

su -命令切换到root 用户环境变成root的

root用户可以使用su - <username>切换成任意用户而不需要密码

普通用户使用su - <username>切换到其他用户需要知道对方的密码

sudo通过可配置的方式,可使用visudo命令来编辑/etc/sudoers,然后用户即可用sudo加命令的方式来以root用户的身份运行该命令而不用输入root的密码,只需输入自己的密码,也可设置不需要输入自己的密码。比如用户要经常重启或者关闭服务器:

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

L2A(第一列)可以从任何地方登录(第二列的ALL)执行任何人(第三列的ALL)的shutdown reboot命令

%L2(第一列)可表示改组所有人

例行任务管理

单一时刻执行任务:at

设置从现在开始30分钟后自动关机:

at now +30 minutes

at> /sbin/shutdown -h now

at> <EOT>表示输入结束,使用ctrl+D表示

atq查询at的任务队列,第一列为任务标号,可使用atrm <任务标号>来删除此任务

at还可安排在具体时间执行任务,在午夜十二点自动关机

at 00:00 2015-08-09

at> /sbin/shutdown -h now

at> <EOT>

若需要禁止某些用户使用这个i功能,可将用户名添加至/etc/at.deny中

周期性执行任务:cron

首先确定crond进程在运行:

service crond start

service crond status

然后开始编辑计划任务:

crontab -e进入编辑模式

crontab -l 查看设置的任务

crontab -r删除所有的任务

若需要禁止某些用户使用这个i功能,可将用户名添加至/etc/cron.deny中。除了root,普通用户只可以查看设置删除自己的计划任务。root可以使用-u参数查看指定用户的任务

事实上,系统也有自己的例行任务,其配置文件是/etc/crontab.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: