一、用户管理命令
1、用户、用户组、权限管理:
Multi-tasks Multi-Users 多用户、多任务
1)每个使用者:用户ID、密码
Authentication 认证机制
Authorization 授权机制 3A机制
Audition 审计机制
组:用户组,用户容器
2)用户类别:
管理:
普通用户: 系统用户 登录用户
用户表示: UserID UID
16bits 二级制数字:0-65535
管理员: 0
普通用户:1-65635
系统用户:1-499(CentOS6) 1-999(CentOS7)
登录用户:500-60000(CentOS6) 1000-60000(CentOS7)
名称解析:名称转换的过程
Username<-->UID
根据名称解析库进行: /etc/passwd
3)组:
组类别(1):
管理员组
普通用户组:
系统组
登录组
组标识: GroupID GID
管理员: 0
普通用户:1-65635
系统用户:1-499(CentOS6) 1-999(CentOS7)
登录用户:500-60000(CentOS6) 1000-60000(CentOS7)
名称解析: /etc/group
组类别(2):
用户的基本组
用户的附加组
组类别(3):
用户的私有组:组名同用户名,且只包含一个用户
用户的公共组:组内包含多个用户
4)认证信息:
通过比对事先存储的,与登录时提供的信息是否一致
password:
/etc/shadow /etc/gshadow 数据密码库
密码的使用策略:
1、使用随机密码
2、最短长度不要低于8位
3、应该使用大写字母、小写字母、数字和标点符号之中的至少三类
4、定期更换
加密算法:
1、对称加密:加密和解密使用同一个密码
2、非对称加密:加密和解密使用的一对密钥
密钥对儿: 公钥 私钥
3、单向加密: 只能加密,不能解密,提取数据特征码
定长输出 /]# echo "abcABC1" | md5sum
雪崩效应
算法: md5 message digest ,128bits
sha secure hash algorithm 160bits 哈希算法
sha1sum sha224sum sha256sum sha384sum sha512sum
1: md5 2: sha1 3: sha224 4:sha256 5:sha384 6: sha512
在计算之时加salt ,添加的随机数:
/etc/passwd:用户的信息库
ntp:x:38:38::/etc/ntp:/sbin/nologin
name:password:UID:GID:GECOS:directory:shell
GID:用户所属的主组ID
GECOS:用户的注释信息
directory:用户的home路径
shell:用户登录时默认的shell路径
/etc/shdow:用户的密码库
root:$6$kAccl0KZ74DBvwrJ$OsVHXkxJw1IDRxwzzzZ7m71u3.eFZsAcM1Hsw1SjTTp5u70ldBqkufb9uKuqVruw8E0qQKQgg7pp7DSQJNE1G.:17454:0:99999:7:::
解析: $6$ 代表 sha512
第三个$后才是真的密码串
用户:密码:最后一次更改密码的天数(从1970.01.01开始到今天):密码的最短使用期限: 密码的最长使用期限:密码警告期段:密码有效期间:账户过期日期:保留字段
/etc/group :
root:x:0:
group_name:password:GID:user_list
user_list:该组的用户成员,以此组为附加组的用户的用户列表
2、用户管理命令
进程以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限;
系统用户:为了能够让那些后台进程或服务类进程以非管理员身份运行,通常需要为此创建多个普通用户,该类系统从不登录系统
1)groupadd命令:添加组
groupadd [选项] group
-g, --gid GID 手动指定GID,默认为上个组的GID+1
-r, --system 创建系统组,随机器开启的进程为后台进程
groupmod命令:修改组
groupmod [选项] GROUP
-g, --gid GID 修改GID
-n, --new-name NEW_GROUP 修改组名
groupdel命令: 删除组
groupdel [选项] GROUP
2)useradd命令: 创建用户 (创建新用户若没指定组,则创建和用户名一样的组)
useradd [选项] 登录
useradd -D
useradd -D [选项]
-u, --uid UID 指定UID,默认为上个组的UID+1
-g,--gid GROUP 指定基本组ID,此组必须事先存在
-c, --comment COMMENT 指定注释信息
-G, --groups GROUPS 指明用户所属的附加组,多个组之间用逗号分隔
-d, --home-dir HOME_DIR 以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现的,指定的家目录路径如果事先存在,则不会为用户复制配置环境配置文件(隐藏文件)。
-s, --shell SHELL 指定用户的默认shell,可用的所有shell列表存储在e/etc/shells文件
-r, --system 创建系统用户
-M, --no-create-home 不创建用户的主目录
-f, --inactive INACTIVE 密码过期后,账号被彻底禁用之前的天数, 0表示立即禁用,-1表示禁用这个功能
-D, --defaults 显示或更改默认的 useradd 配置
useradd -D 显示创建用户的默认配置,修改的结果保存于/etc/default/useradd文件中
注意:创建用户时的诸多默认设定配置文件为/etc/logic.defs
usermod命令:修改用户属性
usermod [选项] 登录
-u, --uid UID 修改用户的ID号
-g, --gid GROUP 修改用户的基本组,原本的组必须存在
-G, --groups GROUPS 修改用户的所属的附加组,原来的附加组会被覆盖
-a, --append GROUP 与-G一同使用,用于添加多个附加组
-c, --comment 修改注释信息
-d, --home HOME_DIR 修改用户的家目录,用户的原来家目录的信息不会被复制到新的家目录
-m, --move-home 只能与-d一同使用,用于将原来的家目录文件一起移动至新的家目录
-l, --login LOGIN 修改用户名
-s, --shell SHELL 修改用户的默认shell
-L, --lock 锁定用户的密码(禁止用户登录),即在用户原来的密码串之前添加一个“!”
-U, --unlock 解锁用户的密码,删除之前密码串的“!”
userdel命令:删除用户的命令
userdel [选项] 登录
-r:删除用户时一并删除其家目录
3)passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1)passwd:修改用户自己的密码
2)passwd USERNAME:修改指定用户的密码,仅root有此权限
-l, --lock 锁定指名帐户的密码(仅限 root 用户)
-u, --unlock 解锁指名账户的密码(仅限 root 用户)
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-e, --expire 过期期限,表示日期
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作) 警告期限
--stdin 从标准输入读取令牌(只有根用户才能进行此操 用法: echo "PASSWIRD" | passwd --stadin USERNAME
4)gpasswd命令:默认给组定义密码
组密码路径 /etc/gshadow
gpasswd [选项] group
-a, --add USER 向组中添加用户
-d, --delete USER 从组中移除用户
5)newgrp命令:临时切换指定的组为基本组
newgrp [-] [group]
- 会模拟用户重新登录以实现重新初始化其工作环境
6)chage命令:更改用户密码过期信息
chage [选项] 登录名
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
7)id命令: 显示实际和有效的ID
id [OPTION]... [USER]
-u, --user 仅显示有效的UID
-g, --group 仅显示用户基本组的ID
-G, --groups 仅显示用户所属的所有组的ID
-n, --name 显示名称而非ID
8)su命令 :用户切换命令
登录式切换 :会通过读取用户的shell配置文件,重新初始化
su - USERNAME 或者 su -l USERMANE
非登录式切换 :不会读取目标配置文件,进行初始化
su USERNAME
注意: 管理员可无密码切换至其他用户,其他用户切换至任何用户都需要提供密码
-c 'COMMAND' 仅以指定用户的身份运行此处指定的命令
练习:
1)创建组distro,其GID为2016
[root@localhost ~]# groupadd -g 2016 distro
[root@localhost ~]# cat /etc/group /*查看组*/
2)创建用户mandriva, 其ID号为1005;基本组为distro;
[root@localhost ~]# useradd -u 1005 -g distro mandriva
[root@localhost ~]# cat /etc/passwd | grep mandriva
mandriva:x:1005:2017::/home/mandriva:/bin/bash
3)创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@localhost ~]# useradd -u 1100 -d /home/linux mageia
[root@localhost ~]# cat /etc/passwd | grep mageia
mageia:x:1100:1100::/home/linux:/bin/bash
4)给用户mageia添加密码,密码为mageedu;
[root@localhost ~]# passwd mageia
更改用户 mageia 的密码 。
新的 密码:
5)删除mandriva,但保留其家目录;
[root@localhost ~]# userdel mandriva
6)创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@localhost ~]# useradd -u 2002 -g distro -G pegion slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/bash
7)修改slackware的默认shell为/bin/tcsh
[root@localhost ~]# usermod -s /bin/tcsh slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/tcsh
8)为用户slackware新增附加组admins
[root@localhost ~]# usermod -G admins -a slackware
[root@localhost ~]# cat /etc/passwd | grep slackware
slackware:x:2002:2017::/home/slackware:/bin/tcsh
二、文件权限管理
1、文件权限管理:
进程安全上下文:
/]#ls -l ---> rwx rwx rwx
左三位:定义属主 user的权限
中三位:定义属组 group权限
右三位:定义其他 other的权限
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同,如果相同则应用属主权限,否则检查进程的属主是否属于文件的属组,如果属于则应用属组权限,否则应用其他权限。
权限:
r :read 读 w:wirte 写 x:excute 执行
文件:
r:可获得文件的数据 4
w:可修改文件的数据 2
x:可将此文件执行为进程 1
目录:
r:可使用Ls命令来获取其下的所有文件列表
w:可修改此目录下的文件列表,即创建或者删除文件
x:可cd到此目录中,可使用ls -l 来获取文件详细述属性信息
mode: rwxrwxrwx
ownership:user group
权限组合机制:
--- 0 --x 1 -w- 2 -wx 3 r-- 4 r-x 5 rw- 6 rwx 7
2、文件权限命令:
1)chmod命令:
说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户: u 属主 g属组 o 其他 a 所有
(1) chmod [OPTION]... MODE[,MODE]... FILE...
chmod [选项]... 模式[,模式]... 文件...
MODE表示法:
赋权表示法:直接操作一类用户所有权限位rwx
u= g= o= a=
授权表示法: 直接操作一类用户的一个权限位r w x
u-x g-r o-r o+rwx u+rwx ug+r 之类
(2) chmod [OPTION]... OCTAL-MODE FILE...
chmod [选项]... 八进制模式 文件...
(3) chmod [OPTION]... --reference=RFILE FILE...
chmod [选项]... --reference=参考文件 文件...
选项:
-R, --recursive 递归修改,对一个目录下所有文件进行修改
2)从属关系管理命令:
1、chown命令:
说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
chown [选项]... [所有者][:[组]] 文件...
chown [选项]... --reference=参考文件 文件...
选项: -R 递归修改
chgrp命令:
2、umask:文件的权限反向掩码,遮罩码
文件: 666 ---umask
目录:777 ----umask
注意:之所以文件用666去减,拜师文件默认不能拥有执行权限,如果减的结果中有执行权限,则加1 比如 666-023=644
umask命令:查看当前umask
umask MASK :设置umask
注意:此类设定只对当前shell进程有效
3、install命令:
install [OPTION]... [-T] SOURCE DEST 单源复制
install [OPTION]... SOURCE... DIRECTORY 多源复制
install [OPTION]... -t DIRECTORY SOURCE... 多源复制
install [OPTION]... -d DIRECTORY... 创建目录
选项:
-m --mode=MODE 设定目标文件权限,默认为755
-o --owner=OWNER 设定目标文件属主
-g --group=GROUP 设定目标文件属组
4、mktemp命令: 创建临时文件(变量赋值)通常在tmp目录下创建,会自动删除
mktemp [选项]... [TEMPLATE]
eg: mktemp /tmp/aba.xxx---> /tmp/aba.agag 随机生成文件
-d 创建临时目录 xxx
-u 测试是否可以创建文件,文件并不存在
注意: mktemp会将创建的临时文件直接返回,可直接通过命令引用保存起来。
3)chown与chmod命令的区别
(1)chown 修改文件和文件夹的用户和用户组属性
1、要修改文件hh.c的所有者.修改为sakia的这个用户所有
chown sakia hh.c
这样就把hh.c的用户访问权限应用到sakia作为所有者
2、将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net
chown -R sakia:net /tmp/sco
(2)chmod 修改文件和文件夹读写执行属性
1、把hh.c文件修改为可写可读可执行
chmod 777 hh.c
要修改某目录下所有的文件属性为可写可读可执行
chmod 777 *.*
把文件夹名称与后缀名用*来代替就可以了。同理若是要修改所有htm文件的属性
chmod 777 *.htm
2、把目录 /tmp/sco修改为可写可读可执行
chmod 777 /tmp/sco
要修改某目录下所有的文件夹属性为可写可读可执行
chmod 777 *
把文件夹名称用*来代替就可以了
要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行
chmod -R 777 /tmp/sco