天天看点

鸟哥的Linux私房菜 命令行笔记4

使用者识别码:UID与GID

使用者ID:UID

群组ID:GID

#查看系统里面有没有名为dmtsai的用户
id dmtsai
           

/etc/passwd档案结构:记录账号信息

每一行都代表一个账号,有几行就代表有几个账号在你的系统中。不过需要特别留意的是,

里头很多账号本来就是系统正常运作所必须要的。我们可以简称他为系统账号,例如bin,

daemon,adm,nobody…

head -n 4 /etc/passwd

鸟哥的Linux私房菜 命令行笔记4
content
root 账号名称
x 密码
UID;系统管理员UID是0,1-999UID系统账号,1000~60000给一般使用者
GID,与/etc/group有关
root 使用者资讯说明栏
/root 家目录
/bin/bash shell目录

/etc/shadow档案结构:记录账号密码

head -n 4 /etc/shadow

鸟哥的Linux私房菜 命令行笔记4
content
root 账号名称
$ 6$tbCCce… 经过编码的密码
16559 最近更改密码的日期
密码不可被改动的天数
99999 密码需要变更的天数,你必须要这个天数内重新设置密码
7 密码需要变更期限前的警告天数;密码到期前7天之内,系统会警告用户
- 密码过期后账号宽限时间;密码过期账号还能工作
- 账号失效日期
- 保留

这里Linxu的日期是以1970年1月1日作为1而累加的,1971年1月1日则为366。

计算累积日期:

鸟哥的Linux私房菜 命令行笔记4

(1)你想要计算的日期 (2)一天的秒数 (3)+1:补齐1970/01/01当天

/etc/group档案结构:记录群组信息

head -n 4 /etc/group

鸟哥的Linux私房菜 命令行笔记4
content
root 群组名称
x 群组密码
GID
- 此群组内的账号名称。例如将dmtsai和alex加入群组root,这里写成 dmtsai,alex
鸟哥的Linux私房菜 命令行笔记4

Q:假如我同时加入多个群组,那么我在作业时,到底是以那个群组为准?

有效群组(effective group)与初始群组(initial group)

初始群组:使用者/etc/passwd中第四栏GID所对应的组

我们该如何知道所有支援群组呢?

groups

鸟哥的Linux私房菜 命令行笔记4

我们如何切换有效群组?

newgrp 切换组名

鸟哥的Linux私房菜 命令行笔记4

切换后输入exit返回原来的群组

鸟哥的Linux私房菜 命令行笔记4

/etc/gshadow

head -n 4 /etc/gshadow

鸟哥的Linux私房菜 命令行笔记4
content
root 群组名称
- 密码栏,如果开头为!表示无合法密码,所有无群组管理员
- 群组管理员的账号
- 加入该群组支援的所属账号

账号管理

useradd:新增使用者

useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d homedictory ] [-s shell] 使用者账号名

option mean
-u 后面接UID,指定一个特定UID给这个账号
-g 指定initial group,/etc/passwd的第四个栏目
-G 指定次要群组,/etc/group
-d 指定某个目录做家目录,用绝对路径表达
-s 预设/bin/bash
-c /etc/passwd第五栏的说明内容
-m 强制,建立使用者的家目录
-M 强制,不建立使用者的节目录
-r 建立一个系统账号
#完成参考预设值建立一个使用者,名称为vbird1
useradd vbird1
grep vbird1 /etc/passwd /etc/shadow /etc/group
           
鸟哥的Linux私房菜 命令行笔记4
#以users为初始群组,uid为1500建立一个名为vbird2的账号
useradd -g users -u 1500 vbird2

#建立一个系统账号,名称为vbird3
useradd -r vbird3 
所有系统账号不会主动建立家目录
           

useradd参考档

呼叫出useradd的预设值

useradd -D

鸟哥的Linux私房菜 命令行笔记4
title mean
GROUP=100 新建账号的初始群组使用的GID为100,在CentOS上面预设的群组为与账号名相同的群组
HOME=/home 使用者家目录的basedir
INACTIVE=-1 密码过期后是否会失效的设定值。0代表密码过期立刻失效;-1代表永远不会失效;数字n代表过期n天后会失效
EXPIRE=:账号失效日期
SHELL=/bin/bash 预设使用的shell程式档名
SKEL=/etc/skel 使用者家目录参考基准目录
CREATE_MAIL_SPOOL=yes 建立使用者的mailbox

UID/GID密码参数参考

/etc/login.defs

鸟哥的Linux私房菜 命令行笔记4

passwd

所有人均可使用来改自己的密码:passwd [–stdin] 账号名称

root功能:passwd [-l] [-u] [–stdin] [-S] [-n day] [-x day] [-w day] [-i day] 账号

option mean
–stdin 可以通过来自前一个管线的资料,作为密码输入
-l lock,/etc/shadow第二栏最前面加上!使密码失效
-u unlock
-S 列出密码的相关参数
-n 多久可以修改密码的天数
-x 多久内必须修改密码
-w 密码过期前的警告天数
-i 密码时效天数

要帮一般账号建立密码需要使用 “passwd 账号” 格式,使用“passwd”是修改自己的密码

#root给予vbird2密码
passwd vbird2
#用vbird2登入后,修改VBird2自己的密码
passwd
           

设定密码的要求

(1)密码不能与账号相同

(2)需要超过8个字元

(3)密码不要使用个人信息

(4)密码不要使用简单关系式

(5)密码尽量使用大小写字元、数字和特殊字元组合

#使用standard input建立用户密码
echo "abc543CC" | passwd --stdin vbird2

#管理vbird2密码具有60天变更,密码过期10天后失效的设定
passwd -x 60 -i 10 vbird2
passwd -S vbird2

#让vbird2的账号失效并观察 再生效
passwd -l vbird2
passwd -S vbird2
passwd -u vbird2
           

chage

如何显示更详细的密码参数显示功能?

passwd -S

chage

chage [-ldElmMW] 账号名

option mean
-l 列出该账号的详细密码参数
-d 修改shadow第三栏目(最近一次更改密码的日期)后面接日期,格式为YYYY-MM-DD
-E 后接日期,修改shadow第八栏目(账号失效日)
-l 后接天数,修改密码失效日期
-m 后接天数,修改密码最短保留天数
-M 后接天数,修改密码多久需要进行变更
-W 后接天数,修改密码过期前警告日
#列出vbird2的详细密码参数
chage -l vbird2
#建立一个agetest的账号,该账号第一次登入后使用预设密码,但必须要更改密码后才能够登入系统使用bash环境
useradd agetest
echo "agetest" | passwd -stdin agetest
chage -d 0 agetest 密码建立时间被改为1970/1/1
           

usermod

usermod [-cdegGlsuLU] username

option mean
-c 修改账号的说明
-d 修改家目录
-e 修改失效日期,格式YYYY-MM-DD
-g 修改初始群组
-G 修改次要群组
-l 修改账号名称
-s 修改shell
-u 修改UID
-L 冻结密码
- U 解冻密码
#修改使用者vbird2的说明栏,加上 VBird's test
usermod -c "VBird's test" vbird2

#使用者vbird2在2015/12/31失效
usermod -e "2015-12-31" vbird2

#建立vbird3这个系统账号时没有给予家目录,请建立他的家目录
ll -d ~vbird3 确认家目录不存在
cp -a /etc/skel /home/vbird3 
chown -R vbird3:vbird3 /home/vbird3  连同家目录底下的一起变更
chmod 700 /home/vbird3
ll -a ~vbird3
           

userdel

userdel [-r] username

-r:连同使用者家目录一并删除

一般使用者功能(非root)

id:查询某人或自己相关UID/GID资讯

id username

#查阅root自己的相关id资讯
id
#查阅vbird1
id vbird1
           

finger:查阅使用者相关资讯

finger [-s] username

-s:仅列出使用者的账号、全名、终端代号与登入时间等

#观察vbird1的使用者相关账号属性
finger vbird1
           
鸟哥的Linux私房菜 命令行笔记4
title content
Login 使用者账号(/etc/passwd 第一栏目)
Name 全名(/etc/passwd 第五栏目的注解)
Directory 家目录
Shell shell档案所在
Never logged in 使用者登入主机的情况
No mail 调查/var/spool/mail当中的信箱资料
No plan 调查~username/.plan档案,并读取其中说明
#利用vbird1建立自己的计划档
echo "i will study Linux during this year." > ~/.plan
finger vbird1

#找出目前在系统上面登入的使用者与登入时间
finger
           

chfn:change finger

chfn [-foph] username

option mean
-f fullname,后面接完整大名
-o office,办公室的房间号码
-p phone,办公室的电话号码
-h homephone,家里的电话号码

#vbird1更改一下自己的相关资讯 chfn

鸟哥的Linux私房菜 命令行笔记4

chsh:change shell

chsh [-ls]

option mean
-l 列出目前系统上面可用的shell
-s 设定修改自己的shell
#用vbid1的身份列出系统上所有合法的shell,并且制定csh为自己的shell
chsh -l
chsh -s /bin/csh ; grep vbird1 /etc/passwd
chsh -s /bin/bash
           

新增与移除群组

groupadd:增加群组

groupadd [-g gid] [-r] 群组名称

option mean
-g 给予群组一个GID
-r 建立系统群组

groupmod:修改group相关参数

groupmod [-g gid] [-n group_name] 群组名

option mean
-g 修改GID
-n 修改群组名称
将group1的名称改为mygroup,GID为201
groupmod -g 201 -n mygroup group1
           

groupdel:删除群组

groupdel groupname

gpasswd:群组管理员功能

关于root做的动作:

gpasswd groupname

gpasswd [-A user1] [-M user3] groupname

gpasswd [-rR] groupname

option mean
-A 将groupname的主控权交由user1管理
-M 将某些账号加入这个群组中
-r 将groupname的密码移除
-R 将groupname的密码栏失效
- 若没有参数,表示给予groupname一个密码

关于群组管理员做的动作:

gpasswd [-ad] user groupname

option mean
-a add, 将使用者加入到groupname这个群组当中
-d del,将使用者移除groupname这个群组当中
建立一个新群则,名称为testgroup,且群组交由vbird1管理
groupadd testgroup 建立群组
gpasswd testgroup 设置密码
gpasswd -A vbird1 testgroup 
           

su:身份切换指令

su [-lm] [-c command] username

option mean
- su - 代表切换root身份
-l 后接username
-m 使用目前环境设定
-c 仅进行一次指令,后面接指令
#切换root身份 观察变数
su -
env|grep root
exit

# 执行命令
su --c "head -n 3 /etc/shadow"

#切换身份vbird1
su -l vbird1
           

sudo:相比su需要知道新切换使用者的密码,sudo执行仅需要自己的密码即可

sudo [-b] [-u username]

option mean
-b 将后续的指令方到背景中让系统自动执行
-u 后面接欲切换的用户,默认为root
#以sshd身份在/tmp底下建立一个mysshd文档
su -u sshd touch /tmp/mysshd

           

继续阅读