Linux基础介绍【第七篇】,linux基础第七篇
Linux基础介绍【第七篇】,linux基础第七篇
linux用户分类
超级用户:UID=0,root
普通用户:UID 500起,由超级用户或具有超级用户权限的用户创建的用户。
虚拟用户:UID 1—499,为了满足文件或服务启动的需要而存在,一般都不能登录,只是傀儡用户。
用户关联的四个文件:
/etc/passwd:用户的账号文件
/etc/shadow:用户的密码文件
/etc/group:组的账号文件
/etc/gshadow:组的密码文件
账号管理
useradd(增):同adduser命令,执行此命令可在系统中添加用户。
userdel(删):执行此命令可删除用户及相关用户的配置或文件。
usermod(改):修改用户的命令,可以通过usermod来修改登录名、用户的家目录等。
usermod -s /sbin/nologin oldboy
usermod -s /bin/bash oldboy
id(查):查看用户的UID、GID及所归属的用户组。
passwd:执行此命令可为用户设置密码,更改/etc/shadow。
chage:修改用户密码有效期限,管理/etc/shadow。
su:用户角色切换工具。
sudo:sudo是通过另一个用户来执行命令,su是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo能在命令后面直接接命令执行,比如sudo ls /root,不需要root密码就可以执行只有root才能执行相应的命令或具备的目录权限;这个权限需要通过visudo命令或直接编辑/etc/sudoers来实现。
visudo:visudo配置sudo权限的编辑命令,也可以直接用vi编辑/etc/sudoers实现,推荐使用visudo来操作(会自动检查语法)。
/etc/skel目录
/etc/skel目录是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以点开头的文件);通过修改、添加、删除/etc/skel目录下的文件,可以为新建的用户提供统一的、标准的、初始化用户环境。
删除/home/用户家目录 中的.bash_logout、.bash_profile、.bashrc产生的效果:-bash-4.1$
解决办法:
从/etc/skel中拷贝.bash_logout、.bash_profile、.bashr到用户家目录即可解决。
/etc/login.defs配置文件
/etc/login.defs文件是用来定义创建用户时需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等。
/etc/default/useradd文件
/etc/default/useradd文件是在使用useradd添加用户时的一个需要调用的一个默认文件,可以使用"useradd -D 参数",这样的命令格式来修改文件里面的内容。
useradd命令
useradd参数选项 | 注释说明 |
-c comment | 新账号passwd挡的说明栏 |
-d home_dir | 新账号每次登入时所使用的home_dir。预设值为default_home内login名称,并当成登入时目录名称。 |
-e expire_date | 账号终止日期。日期的指定格式为MM/DD/YY。 |
-f inactive_days | 账号过期几日后永久停权。当值为0时账号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1。 |
-g initial_group | group名称或以数字来做为用户登入起始用户组(group)。用户组名须为系统现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。 |
-G group,[…] | 定义此用户为多个不同groups的成员。每个用户组使用","逗号分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。 |
-m | 用户目录如不存在则自动建立。如使用-k选项,skeleton dir内的档案将复制至用户目录下。然而在/etc/skel目录下的档案也会复制过去。任何在skeleton_diror /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。 |
-M | 不建立用户家目录,优先于/etc/login.defs文件的设定。一般创建虚拟用户时不建立家目录,部署服务时需要创建虚拟用户。 |
-n | 默认情况下用户的用户组与用户的名称会相同。如果命令加了-n参数就不会生成和用户名的用户组了。 |
-s shell | 用户登入后使用的shell名称。默认值为不填写,这样系统会指定预设的登入shell(根据/etc/default/useradd预设的值)。 |
-u uid | 用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值。 |
useradd -e、-u、-G、-s、-d多参数组合的例子:
添加用户oldboy,并设置用户注释信息为HandsomeBoy,UID指定为806,归属为用户组root、oldboy、sa成员,其shell类型为/bin/sh,设置家目录为/oldboy。
groupadd命令
groupadd参数选项 | 注释说明 |
-g gid | 指定用户组GID值。除非接-o参数(如:groupadd -g gid)否则ID值必须是唯一的数字(不能为负数)。如果不指定会从500开始。 |
passwd命令
passwd参数选项 | 注释说明 |
--stdin | 从stdin读入密码 |
-k --keep-tokens | 保留即将过期的用户在期满后仍能使用 |
-d --delete | 删除用户密码,仅能以root权限操作 |
-l --lock | 锁住用户无权更改其密码,仅能通过root权限操作 |
-u --unlock | 解除锁定 |
-f --force | 强制操作,仅root权限才能操作 |
-x --maximum=DAYS | 两次密码修改的最大天数,后面接数字,仅能root权限操作 |
-n --mininum=DAYS | 两次密码修改的最小天数,后面接数字,仅能root权限操作 |
-w --warning=DAYS | 在距多少天提醒用户修改密码,仅能root权限操作 |
-i --inactive=DAYS | 在密码过期后多少天,用户被禁掉,仅能root权限操作 |
-S --status | 查询用户的密码状态,仅能root权限操作 |
oldboy用户7天内不能更改密码,60天以后必须修改密码,过期前10天提示,过期后30天后禁止用户登录。
/etc/shadow中查看
批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell循环(for、while等),只能用命令及管道实现。
useradd stu{1..10};
使用SHA算法来加密日期,并输出结果的前8个字符:
date +%s | sha256sum | base64 | head -c 8 ; echo
echo "123456"|passwd test --stdin
修改用户密码有效期限相关命令chage
用法:chage [选项] 用户名
chage参数选项 | 注释说明 |
-d --lastday | 最近日期,将最近一次密码设置时间设为"最近日期" |
-E --expiredate | 将账户过期时间设为"过期日期",日期写法:MM/DD/YY |
-h --help | 显示此帮助信息并退出 |
-l --list | 显示账户年龄信息 |
-m --mindays | 最小天数,将两次改变密码之间相距的最小天数设为"最小天数" |
-M --maxdays | 最大天数,将两次改变密码之间相距的最大天数设为"最大天数" |
-W --warndays | 警告天数,将过期警告天数设为"警告天数" |
-I --inactive | 失效天数,在密码过期后多少天,用户被禁掉 |
修改账户过期时间:
查看账户的状态:
oldboy用户8天内不能更改密码,61天以后必须修改密码,过期前11通知用户,过期后31天后禁止用户登录。
与passwd -n 8 -x 61 -w 11 -i 31 oldboy、chage -m8 -M61 -W10 -I30 oldboy功能相同只是参数不一样。
删除用户相关命令userdel
语法格式:userdel 用户名 或语法格式:userdel 用户名 -r
在生产场景中,不要轻易使用-r参数,这会在删除用户的同时删除用户家目录下的所有的文件和目录。如果一定要删除家目录,那么在删除前先备份。直接在/etc/passwd中注释要删除的用户记录是生产场景中常用的方法。
删除用户组相关命令groupdel
groupdel是用来删除用户组的,要求用户组名必须是已存在的。用groupdel删除用户组实际修改/etc/group(用户组文件)和/etc/gshadow(用户组加密文件)。
语法格式:groupdel 用户组
查看用户组:
grep 用户组 /etc/group
grep 用户组 /etc/gshadow
用户信息修改相关命令usermod
usermod参数选项 | 注释说明 |
-e expire_date | 加上用户账号停止日期。日期格式为MM/DD/YY。 |
-g initial_group | 更新用户新的起始登入用户组。用户组名必须已存在。 |
-U | 取消冻结用户的密码,使恢复登录,实际同样是修改/etc/shadow的 |
-G group,[…] | 定义用户为一堆groups的成员。每个用户组只用","逗号隔开。 |
-l login_name | 变更用户login时的名称为login_name。其余信息不变。usermod -l newname oldname |
-s shell | 指定新登入shell。 |
-u uid | 指定用户UID只。这个值必须是唯一的,除非接-o参数,如usermod -u 505 -o oldboy(不能为负数) |
-L | 冻结用户的密码,使无法登陆。 |
-c | 修改用户账号的备注信息 |
-d | 修改用户家目录 |
-f | 修改在密码过期后多少天关闭该账号 |
将oldboy用户的注释信息修改为OldBoy,UID修改为1806,归属修改为用户组root、sa成员,其shell类型修改为/bin/tcsh,设置家目录为/tmp/oldboy。
使用户在2012-01-22后过期
评论暂时关闭