第五单元
##########################用户操作命令#################
(一)id的使用
id用户名##查看用户信息
id -u ###用户uid(userid)
-g ###用户gid(初始组的id,只有一个)
-a ###用户所有信息
-G ###用户所有组的id(包括大学,linux组等)
-un ###用户名字
-gn ###用户初始组名称
-Gn ###用户所在所有组名称
执行vim /etc/login.dafs,可知用户的uid默认的是1000!
运行情况是:
[kiosk@foundation12 Desktop]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
[kiosk@foundation12 Desktop]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
(二)切换用户的环境
echo $PATH###查看当前用户的用户环境,即显示当前PATH环境变量,该变量的值由一系列冒号分隔的目录名组成。
echo $USER###显示当前用户的信息
su - username###切换当前用户所使用的环境
##kiosk原本的环境
[kiosk echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kiosk/.local/bin:/home/kiosk/bin
##root原本的环境
[root echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
##root用su - kiosk切换到kiosk,同时切换到了kiosk自己的环境变量
[root su - kiosk
[kiosk echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kiosk/.local/bin:/home/kiosk/bin
##root用su kiosk切换到kiosk,但还是root的path,没有切到kiosk的path
[root su kiosk
[kiosk echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
在切换用户时,su student和su - student的不同之处:
1.su - student切换用户、及用户的环境,加了”-”环境变量也改变了;
2. 不加”-”即su student就只是切换用户。
(三)用户及组的操作
1. 用户
① 用户类型
a. 管理员Root:具有所有权限的用户,uid的值为0
b. 普通用户:正常创建的用户,uid为500~60000
c. 系统用户:保障系统运行的用户,一般不提供密码登陆系统,uid为1~499
② 用户相关文件
a. /etc/passwd##用户信息文件
存放用户的基本属性,从中可查看linux的所有用户。格式为:
『用户名:密码:用户id:用户主组id:用户说明(如姓名、年龄、电话等):用户根目录:用户编程环境(使用的shell)』
每个用户组有一个主组(私有组),一个或多个附加组。
b. /etc/shadow##用户认证信息
存放用户密码的一些策略,格式为:
『用户名:密码:最近更改密码的日期:密码不可更改的天数:密码更改前的警告期限:密码过期的宽限时间:帐号失效日期:保留』
c. /home/username##用户家目录
d. /etc/skel/.*##用户的基本信息配置
③ 用户命令
a. 新增用户:useradd -d 根目录 -g主组 -G 附加组列表(逗号隔开) 用户名
b. 重置密码:passwd 用户名
c. 修改用户:usermod -d 根目录 -g主组 -G 附加组列表(逗号隔开) 用户名————该命令的-G会把用户从原来的附加组移出来,可以使用-a参数指明是新增模式
d. 删除用户:userdel -r 连根目录一起删除 用户名
e. 查看所有用户:cat /etc/passwd
f. 查看单个用户详细:id 用户名
g. 查看当前所有的登陆用户:whho
2. 用户组
用户组是用户的容器,用户能从用户组继承权限。
① 用户组类型
a. 普通用户组:可以加入多个用户
b. 系统用户组:一般加入一些系统用户
c. 私有用户组:创建用户的时候,如果没有指明用户组,都会为该用户创建一个同名的用户组。私有用户组其实也是普通用户组的一种。
② 用户组相关文件
a. /etc/group##用户组信息
存放组的基本信息。格式为;
【组名:组密码:组id:用户列表】
b. /etc/gshadow
与用户组的shadow相似
③ 用户组命令
a. 新增组:groupadd -g uid号 组名————如果不指定uid号则自动生成
Groupadd -g 888 test(指定uid为888)
Groupadd hehe(未指定uid)
b. 修改组:gruopmod -n 新组名 组名————可以用来改组名
Groupmod -n jack jaak
c. 删除组:groupdel 组名————如果组内还有用户则无法删除
d. 查看所有组+查看某个组内的用户:cat /etc/gruop
e. 查看用户的组信息:id 用户名
输出:
uid=0(root) gid=0(root) groups=0(root)
uid是主组,gruops是附加组
f. 将用户添加进组里:gpasswd -a用户名 组名
g. 将用户从组里移除:gpasswd -d 用户名 组名
-----------------------------------------------------------------
(四)用户的详细操作
useradd###新建用户
-u###指定用户的uid
-g###指定用户初始组,这个组一定要存在
-G###指定附加组,组同样要存在
-c###用户说明
-d###指定用户加目录
-s###指定用户使用的shell,shell种类参看/etc/shells
userdel -r####删除用户
groupadd-g###新建组,-g表示指定组的id
groupdel###删除组
passwd####更改用户密码
『例』useradd -u 1016(已存在的组号) -g 1016(已存在的组号) test(用户名)
##################首先监听passwd###########
Watch -n1 tail -n 3 /etc/passwd
1.
Useradd 添加test用户
Useradd test
当有一个进程正在使用而无法删除test时:
Kill + 该进程号
然后再:
Userdel -r test
这样就能顺利删除了
2.
可以同时指定用户的uid和gid
Useradd -u 888 -g 888 test
3.
添加用户说明(要先删除test才能建立)
Useradd -c “test user” test
4.
指定用户家目录
Useradd -d /mnt/test test
5.
指定用户使用的shell类型
Useradd test -s /bin/tcsh
6.
查看shell的种类
Cat /etc/shells
可以得到以下信息:
[kiosk@foundation12 Desktop]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
查看/监听用户建立或管理过程使用的命令
Watch -n1 ‘tail -n 7(行数) /etc/passwd /etc/group /etc/shadow; ls -l /home’
监听结果
usermod
-u--uid##改变用户uid ( user modify )
-g--gid##改变用户初始组
-G--groups##改变用户附加组
-aG##增加用户附加组
-d--home HOME_DIR ##改变用户家目录信息
-md##改变用户家目录信息和家目录名称
-s--shell##改变用户的shell
-l --login##修改用户名
-L--lock##冻结用户
-U--unlock##解锁用户
1.
改变用户的uid
执行usermod -u 888 test
将/etc/passwd下的Test:x:1001:1007::/home/test:/bin/bash
变为Test:x:888:1007::/home/test:/bin/bash
2.
改变用户初始组
执行Usermod -g 22 test
将/etc/passwd下的Test:x:888:1007::/home/test:/bin/bash
变为Test:x:888:22::/home/test:/bin/bash
3.
改变用户附加组
执行usermod -G 1006 test
将/etc/group下的leo:x:1006:
变为leo:x:1006:test
若执行usermod -G 72 test就没有变化,这说明要对应相应的组id
4.
改变用户附加组
执行usermod -G 21(组号) test(用户名),这句话意思是将编号为21的组附加给test用户
将/etc/group下的slocate:x:21:
改为slocate:x:21:test
slocate:x:21:test这句话的意思是编号为21的组附加用户是test
5.
清空用户附加组
执行usermod -G “” test,意思是将test的附加组指定为空
将/etc/group下的slocate:x:21:test
改为slocate:x:21:
6.
更改用户信息
执行usremod -c “test user” test
将Test:x:888:22::/home/test:/bin/bash
改为Test:x:888:22:test user:/home/test:/bin/bash
7.
改变用户家目录信息
执行usermod -d /home/wetos test
8.
改变用户家目录信息和家目录名称
执行usermod -md /home/westos
将Test:x:888:1001::/home/test:/bin/bash
改为Test:x:888:1001::/home/westos:/bin/bash
9.
改变用户的shell
执行usermod -s /bin/csh(shell类型之一) test
将Test:x:888:1001::/home/test:/bin/bash
改为Test:x:888:1001::/home/westos:/bin/csh
10.
修改用户名
执行usermod -l lee(新名称 ) test(旧名称)
将Test:x:888:1001::/home/test:/bin/csh
改为lee:x:888:1001::/home/westos:/bin/csh
###################用户权限下放(sudo)###################
1. 权限下放动作的配置文件:/etc/sudoers
2. 这个文件用visudo命令编辑
3. 给权限的文件内容写法:
Test desktop12=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
① Test————授权目标用户
② Desktop=(root)————主机名称=(授权用户得到的新用户身份)
③ 授权用户可以执行的命令(逗号+空格分开)
4. 查看主机名:hosthome
5. 注意:
先输入visudo命令进入
然后添加权限下放语句,在该语句中,执行命令间用逗号+空格隔开
最后输入sudo useradd username才能使用自己的权限。
6. 示例:
① test用户能在localhost(desktop12)主机执行useradd(要test密码验证)
testdesktop12=(root)/usr/sbin/useradd
② test用户能在localhost主机执行useradd(不要要test密码)
testlocalhost=(root)NOPASSWD: /usr/sbin/useradd
##########################密码期限更改###################
1. 用法:chage [选项] 登录
2. 选项
-d ,--lastday##将最近一次密码设置时间设为lastday,如果
设定为0表示强制使用户下次登录系统前必须修改密码
-m,--mindays ##设置两次改变密码之间相距的最小天数
-M,--maxday##设置两次改变密码之间相距的最大天数
-W,warndays##设置密码过期的警告天数
-I,inactive##过期inactive天数后,设定密码为是失效状态
-E,--expiredate##账户过期时间格式yyyy-mm-dd
3. 用watch -n1 tail -n 3 /etc/shadow监听,有最终结果:
test:naijfvahvad8*#&!hsidfh9(密码):22:1:30:33:2:17111:
【用户名:密码:最近更改密码的日期:密码不可更改的天数:密码更改期限:密码过期的宽限时间:帐号失效日期:保留】
4. 从test起修改至17111
passwd test##修改test密码
chage -d 22 test##将最近一次修改密码的日期指定为22
chage -m 1 test##设置密码暂时不可更改的天数为1
chage -M 30 test##设置到密码需更改的最大时间
chage -W 33 test##设置警告天数
chage -I 2 test##密码需修改后的宽限时间
chage -E 2016-11-22 test##设置帐号失效日期