早期的计算机的使用场景,通常都是多用户,多任务下( Multi-task,Multi-Users)。为了区别不一样的使用者,隔离每一个人对计算机资源的访问,引入了用户的概念。linux
不一样的使用者经过用户标识和密码加以区别,算法
认证:Authenticationdocker
受权:Authorizationshell
审计:Audition(Account)安全
这就是3A认证bash
Linux下的用户标识就是:用户app
组,即用户组,用户容器。ide
用户分为管理用户和普通用户,其中普通用户又包括系统用户和登陆用户测试
系统用户:为了可以让后台进程或服务类进程以非管理员身份运行,一般须要为此建立多个普通用户,这类用户从不登陆系统ui
一、管理用户 二、普通用户 a.系统用户 b.登陆用户
用户标识:UserID,UID 16bits二进制数字:0+65535 管理员:0 普通用户:1-65535 系统用户:1-499(CentOS6),1-999(CentOS7) 登陆用户:500-60000(CentOS6),1000-60000(CentOS7) 名称解析:名称转换 Username <--> UID 根据名称解析库进行: /etc/passwd
和用户相对应的,组分为管理员组和普通用户组,普通用户组又包括系统组和登陆组
一、管理员组 二、普通用户组 a、系统组 b、登陆组
组标识:GroupID,GID 管理员组:0 普通用户组:1-65535 系统用户组:1-499(CentOS6),1-999(CentOS7) 登陆用户组:500-60000(CentOS6),1000-60000(CentOS7) 名称解析:groupname <--> GID 解析库: /etc/group
A、用户的基本组:primary group,也叫主组
B、用户的附加组
A、私有组:组名同用户名且包含一个用户:privite group
B、公共组:组内包含了多个用户:public group
认证信息:经过比对事先存储的,与登陆时提供的信息是否一致;
password的存储位置:
/etc/shadow 用户密码 /etc/gshadow 组密码
密码的使用策略 1:使用随机密码: 2:最短长度不要低于8位 3:应该使用大写字母,小写字母、数字和标点符号四类字符中至少三类 4:按期更换 密码存储格式:单向加密,并借助于salt完成 加密算法: 一、对称加密:加密和解密使用同一个秘钥 二、非对称加密:加密和解密使用的一对儿秘钥; 秘钥对儿: 公钥:public key 私钥:privita key 三、单向加密:只能加密,不能解密;提取数据特征码; 定长输出 雪崩效应 单向加密经常使用算法: md5: message digest, 128bits sha: secure hash algorithm,160bits 安全的哈希算法 sha224 sha256 sha384 sha512
/etc/passwd: 用户信息库 name:password:UID:GID:GECOS:directory:shell name: 用户名 password: 能够是加密的密码,也但是占位符 UID: GID: 用户所属的主组的ID号; GECOS: 用户的注释信息,可选 directory: 用户的家目录; shell: 用户的默认shell,登陆时默认shell程序 /etc/shadow: 用户密码 用户名:加密的密码:最近一次修改密码的时间:密码最短使用期限:最长使用期限:警告期段:过时期限:保留字段 查看帮助文档:man 5 shadow etc/group:组的信息库 group_name:password:GID:user_list user_list:该组的用户成员;以此组为附加组的用户的用户列表: etc/gshadow group_name:password:admin_list:user_list 组名:密码:管理员列表:组成员列表 查看帮助文档:man 5 gshadow 在计算之时加salt,添加的随机数
groupadd [选项] group_name -g GID: 指定GID;如不指定会默认,上一个组的GID+1 -r:建立系统组;
groupmod [选项] GROUP -g GID, 修改GID -n new_name: 修改组名
groupdel [选项] GROUP
组密码文件: /etc/gshadow
gpasswd [选项] group (1)gpasswd group: 修改指定组的密码,默认状况下组建立以后没有密码,设定密码主要用途在用newgrp命令临时切换用户到某个组做为本身的基本组时使用,若是用户实现不属于该组,切该组没有设定密码,用户将没法切换到此没有设定密码的组 -a USERNAME:向组中添加用户 -d USERNAME:从组中移除用户
example.
添加peter为users群组的管理员 gpasswd -A peter users 添加一个用户到一个组,同时保留之前添加的组时,可使用gpasswd这个命令来添加操做用户 gpasswd -a user_name group_name
newgrp [-] [group] -:会模拟用户从新登陆以实现从新初始化其工做环境
useradd [选项] 登陆名 -u, --uid UID: 指定UID;如不指定默认为上一个UID+1 -g, --gid GROUP:指定用户基本组ID或组名,此组得事先存在 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 指定用户所属的附加组(能够是组ID也能够是组名),多个组之间用逗号分隔; -c, --comment COMMENT:指明注释信息 任何字符串。一般是关于登陆的简短描述,当前用于用户全名。 -d, --home HOME_DIR:以指定的路径做为用户的家目录:经过复制/etc/skel此目录并重命名实现;指定的家目录路径若是事先存在,则不会为用户复制环境配置文件 -s, --shell SHELL: 指定用户的默认shell,可用的全部shell列表存储在/etc/shells文件中; -r,建立一个系统用户 -M, --no-create-home 不建立用户主目录,即便系统在 /etc/login.defs中的设置(CREATE_HOME)为yes -f, --inactive INACTIVE 密码过时到帐户被禁用以前的天数。0表示当即禁用,-1表示禁用这个功能 若是未指定,useradd将使用在 /etc/default/useradd 中 INACTIVE 变量指定的默认禁用周期,或者默认为-1. 注意:建立用户是的诸多默认设定配置文件为/etc/login.defs -d选项指定家目录时,家目录的父目录须要事先存在,例如指定家目录为/users/username 父目录/users需事先存在(被建立) useradd -D:显示建立用户的默认配置; useradd -D 选项:修改默认选项的值; 修改的结果保存于/etc/default/useradd文件中;也能够经过直接编辑此文件实现
usermod [选项] 登陆名 -u,--uid UID: 修改用户的ID为此处指定的新的UID; -g, --gidGROUP: 修改用户所属的基本组;此组必须存在; -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]: 修改用户所属的附加组;原来的附加组会被覆盖; -a, --append: 与-G一同使用,用于为用户追加新的附加组; -aG -c, --comment COMMENT: 修改注释信息; -d, --home HOME_DIR: 修改用户的家目录: 用户原有的文件不会被转移至新位置; -m, --move-home: 只能与-d选项一同使用,用于将原来的家目录里面的全部文件移动到新的家目录,目前的家目录路径必须存在,不然新家目录不会被建立; -l, --login NEW_LOGIN:修改用户名; -s, --shell SHELL:修改用户的默认shell; -L,--lock:锁定用户密码;即在用户原来的密码字符串以前添加一个"!"; -U,--unlock:解锁用户的密码;
userdel [选项] 登陆名 -r: 删除用户是一并删除其家目录
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,-u: 锁定和解锁用户密码 -d:删除用户密码 -e DATE: 过时期限,日期 -i DAYS: 非活动期限;密码过时以后还能活动几天 -n DAYS: 密码的最短使用期限 -x DAYS: 密码的最长使用期限 -w DAYS: 警告期限 --stdin: echo "PASSWORD" | passwd --stdin USERNAME
chage [选项] 登陆名 -d -E -W -M -m
id - print real and effective user and group IDs id [OPTION]... [USER] -u: 仅显示有效的UID -g: 仅显示用户的基本组ID -G: 显示用户所属的全部组的ID,包括基本组和附加组 -n: 显示名字而非ID
a.登陆式切换:会经过读取目标用户的配置文件来从新初始化 su - USERNAME su -l USERNAME b.非登录式切换:不会读取目标用户的配置文件进行初始化 su USERNAME 注意:管理员(root)可无密码切换至其余任何用户; -c 'COMMAND': 仅以指定用户的身份运行此处指定的命令;运行一次以后直接退回
chsh, 更改默认shell chfn,finger 更改finger信息,显示finger信息 whoami pwck,检查用户密码 grpck,检查组
权限的概念:rwx
r:readable,可读 w:writeable,可写 x:excuteable,可Z执行
linux权限的表示结构
rwxrwxrwx: 左三位:定义user(owner)的权限 中三位:定义group的权限 右三位:定义other的权限
进程安全上下文(Security Context)
进程对文件的访问权限应用模型: 前提:进程有属主和属组,文件有属主和属组 一、任何一个可执行程序文件能不能运行,取决于发起者对程序文件是否有执行权限。 二、启动为进程以后,其进程的属主为发起者,属组为进程发起者所属的属组。 三、进程访问文件的权限,取决于进程的发起者: (1)进程的发起者同文件的属主,则应用文件属主权限 (2)进程的发起者属于文件属组,则应用文件属组权限 (3)应用其它权限。
rwx对文件和目录的含义
文件: r:可获取文件的数据 w:可修改文件的数据 x:可将此文件发起运行为进程 目录: r:可以使用ls命令获取其下的全部文件列表;(不能获取详细信息,即不包括ls -l) w:可修改此目录下的文件列表:即建立或删除文件; x:可cd至此目录中,且可以使用ls -l来获取全部文件的详细属性信息;
权限的两种表现形式
权限组合机制和八进制表示法
权限的rwx因为在每一个位置上只有2种形式,-和其余(r,w,x)即有或没有权限
所以rwx能够用3位二进制来表示,3位二进制又能够转换为8进制,组合关系以下
权限 | 二进制表示 | 8进制表示 | 注释 |
---|---|---|---|
--- | 000 | 0 | 没有权限 |
--x | 001 | 1 | 可执行 |
-w- | 010 | 2 | 可写 |
-wx | 011 | 3 | 可写可执行 |
r-- | 100 | 4 | 可读 |
r-x | 101 | 5 | 可读可执行 |
rw- | 110 | 6 | 可读可写 |
rwx | 111 | 7 | 可读可写可执行 |
用八位进制权限表示法来表示:如rxwrwxrwx可表示为777,表示属主属组和其余用户都具备读写执行的权限
chmod - change file mode bits chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 三类用户: u:属主 g:属组 o:其余 a:全部 chmod [OPTION]... MODE[,MODE]... FILE... (1)MODE表示法: A、赋权表示法:直接赋予用户对应权限,能够操做一类用户的全部权限位, u= g= o= a= 两种用户能够合并书写:ug=,uo=,go=, 权限可合并书写,r,w,x,rw,rwx,rx,wx, B、受权表示法:直接增长或删除一类用户的现有权限r,w,x; u+,u- g+,g- o+,o- a+,a- (有时候可省略a,直接写成+,-) 两种用户能够合并书写:ug=,uo=,go=, 权限也可合并书写,r,w,x,rw,rwx,rx,wx, 尽可能符合逻辑书写,不符合逻辑也不会报错(例如其余用户没有w权限用o-x也不会报错) 分别加不一样权限时能够用逗号隔开,如:chmod u+w,g+r FILE ps:全局+w操做只会匹配到u(属主用户) (2)八进制表示法 chmod [OPTION]... OCTAL-MODE FILE... example: chmod 660 /etc/shadow (3)引用权限命令 chmod [OPTION]... --reference=RFILE FILE... 修改文件FILE的权限与被引用的文件RFILE的权限相同 选项 : -R,--recurisive:递归修改,会将目录以及目录下的子目录和全部文件一块儿修改 (此选项只建议受权表示法使用,避免影响目录内部的文件拥有其余不须要的权限,例如错误的将x权限给不可执行的文件) 注意:用户仅能修改属主为本身的那些文件的权限 exmaple. 赋权表示 [root@bogon ~]# ls 00-02-17 a_c a_d anaconda-ks.cfg b_c b_d Desktop Documents Downloads Music Pictures Public Templates Videos 桌面 [root@bogon ~]# ll anaconda-ks.cfg -rw-------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod g=rw anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-rw----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod ug=r anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -r--r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod a=rwx anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxrwxrwx. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u=rwx,g=rw,o= anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxrw----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg 受权表示 [root@bogon ~]# ll anaconda-ks.cfg ----------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u+w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg --w-------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod ug+r anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod a+x anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxr-x--x. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod -x anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u-w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -r--r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod +w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg //全局+w操做只会匹配到u(属主用户),由于全局+w很危险 权限引用 [root@bogon tmp]# ll | head -3 总用量 276 -rw-r--r--. 1 root root 0 4月 19 19:16 a -rw-r--r--. 1 root root 0 4月 19 19:16 b [root@bogon tmp]# chmod 766 a [root@bogon tmp]# ll | head -3 总用量 276 -rwxrw-rw-. 1 root root 0 4月 19 19:16 a -rw-r--r--. 1 root root 0 4月 19 19:16 b [root@bogon tmp]# chmod --reference=a b [root@bogon tmp]# ll | head -3 总用量 276 -rwxrw-rw-. 1 root root 0 4月 19 19:16 a -rwxrw-rw-. 1 root root 0 4月 19 19:16 b -R选项 root@bogon tmp]# ls -la skel 总用量 16 drwxr-xr-x. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:43 .. -rw-r--r--. 1 root root 18 4月 19 19:43 .bash_logout -rw-r--r--. 1 root root 193 4月 19 19:43 .bash_profile -rw-r--r--. 1 root root 231 4月 19 19:43 .bashrc drwxr-xr-x. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chmod -R go= skel [root@bogon tmp]# ls -la skel 总用量 16 drwx------. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:43 .. -rw-------. 1 root root 18 4月 19 19:43 .bash_logout -rw-------. 1 root root 193 4月 19 19:43 .bash_profile -rw-------. 1 root root 231 4月 19 19:43 .bashrc drwx------. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chmod -R g+r skel/ [root@bogon tmp]# ls -la skel 总用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla
仅管理员可修改文件的属主和属组,
chown命令: 既能修改属主也能修改属组
chown [OPTION]... [OWNER][:[GROUP]] FILE... //修改属主 chown [OPTION]... --reference=RFILE FILE... //引用(参考修改) 选项: -R:递归修改
chgrp命令: 只能用于修改属组
chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... exmple. 修改属主 root@bogon tmp]# ls -la skel 总用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R docker skel [root@bogon tmp]# ll -d skel drwxr-----. 3 docker root 78 4月 19 19:43 skel [root@bogon tmp]# ll -a skel 总用量 16 drwxr-----. 3 docker root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 docker root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 docker root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 docker root 231 4月 19 19:43 .bashrc drwxr-----. 4 docker root 39 4月 19 19:43 .mozilla 修改属主和属组 [root@bogon tmp]# ll -a skel/ 总用量 16 drwxr-----. 3 docker root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:55 .. -rw-r-----. 1 docker root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 docker root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 docker root 231 4月 19 19:43 .bashrc drwxr-----. 4 docker root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R jacky:docker skel/ [root@bogon tmp]# ll -a skel/ 总用量 16 drwxr-----. 3 jacky docker 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:57 .. -rw-r-----. 1 jacky docker 18 4月 19 19:43 .bash_logout -rw-r-----. 1 jacky docker 193 4月 19 19:43 .bash_profile -rw-r-----. 1 jacky docker 231 4月 19 19:43 .bashrc drwxr-----. 4 jacky docker 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R root.root skel/ [root@bogon tmp]# ll -a skel/ 总用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:57 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla 引用(参考)修改 [root@bogon tmp]# ll a -rwxrw-rw-. 1 tom tom 0 4月 19 19:16 a [root@bogon tmp]# chown -R --reference=a /tmp/skel/ [root@bogon tmp]# ll -a skel/ 总用量 16 drwxr-----. 3 tom tom 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 20:02 .. -rw-r-----. 1 tom tom 18 4月 19 19:43 .bash_logout -rw-r-----. 1 tom tom 193 4月 19 19:43 .bash_profile -rw-r-----. 1 tom tom 231 4月 19 19:43 .bashrc drwxr-----. 4 tom tom 39 4月 19 19:43 .mozilla
思考:用户对目录有写权限,但对目录下的文件没有写权限时,
(1)可否修改目录下的文件? 不能。
(2)可否删除目录下的文件? 能够
umask:文件权限反向掩码,遮罩码
用户拥有本身的umask,用户建立文件后,文件的默认权限以下:
文件的权限: 666-umask 目录的权限: 777-umask 注意:之因此文件用666去减,表示文件默认不能拥有执行权限;若是减得的结果中有执行权限,则须要将其加1; umask:023 666-023=643+1=644 777-023=754
umask命令:
umask: 查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效;
install - copy files and set attributes--复制文件并设置属性 单源复制: 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: 设定目标文件属组; example. [root@bogon tmp]# install /etc/inittab /tmp [root@bogon tmp]# ls -l inittab -rwxr-xr-x. 1 root root 511 4月 19 20:37 inittab [root@bogon tmp]# ls -l /etc/inittab -rw-r--r--. 1 root root 511 8月 4 2017 /etc/inittab [root@bogon tmp]# rm inittab rm:是否删除普通文件 "inittab"?y [root@bogon tmp]# install -m 640 /etc/init init.d/ inittab [root@bogon tmp]# install -m 640 /etc/inittab /tmp [root@bogon tmp]# ls -l inittab -rw-r-----. 1 root root 511 4月 19 20:42 inittab [root@bogon tmp]# install -o jacky -g docker /etc/inittab /root [root@bogon tmp]# ls -l /root/inittab -rwxr-xr-x. 1 jacky docker 511 4月 19 20:44 /root/inittab
-d选项建立目录 [root@bogon tmp]# install -d hello [root@bogon tmp]# ll -d hello drwxr-xr-x. 2 root root 6 4月 19 20:45 hello
mktemp - create a temporary file or directory 建立临时文件或临时目录 命令格式:mktemp [OPTION]... [TEMPLATE] TEMPLATE must contain at least 3 consecutive 'X's in last component(模板文件名中至少包含3个X,(自定义名称.xxx)) -d --directory 建立临时目录 -u --dry-run 仅作测试,不会实际建立文件 -q --执行若发生错误,不会显示任何信息 注意:mktemp会将建立的临时文件名直接返回,所以,可直接经过命令引用保存起来; 使用mktemp 命令生成临时文件时,文件名参数应当以"文件名.XXXX"的形式给出,mktemp 会根据文件名参数创建一个临时文件。 例如:mktemp tmp.xxxx #生成临时文件