帮助编辑用户基本权限

 

 那么我们学习了这么多命令 又有那么多参数 该如何记忆呢?

怎么查看命令帮助
 ls --help
 man ls
  man 的类型章节 重点 1 用户命令 5 配置文件 8 管理员命令
  帮助的阅读方法 ...代表可重复  []代表可选择 {}<>代表必选项 |代表其中之一
 info
   类似浏览网页 有连接 比man更全面
  TAB寻找*连接
  ?帮助
 man 和 info 也有搜索功能
 rpm包自带的帮助文档
  /usr/share/doc/
 网络

vim 编辑器
 模式切换:编辑模式 命令模式 命令行模式

     字符操作
 i 当前插入
 I 行首插入
 a 当前字符之后插入
 A 行尾插入
 o 下一行插入
 O 上一行插入
 x 向后删除一个字符
 X 向前删除一个字符
 u 撤销一步
 U 撤销所有更改
 c 剪切

     行操作
 ^ 行首 $行尾
 dd 删除一行 Ndd
 yy 复制一行 Nyy
 p  将复制行粘贴 P上粘
 
     词操作
 dw 删除一个词
 yw 复制一个词
     块操作
 d$ 删至行尾 d^ 删至行首
 y$ 复制至尾 y^ 复制至首
 v 模式
  进入v模式 移动光标选择区域
     VIM命令行操作
 :%s/old/new/g
 :set nu/nonu
 :e! 重新读入
 / 正查
 ? 反查
 : !ls 调用系统命令

vim 的练习作业
 vimtutor
 如果乱码 用gedit打开 另存为UTF-8
 


用户管理 (增删改切)
 用户都存储哪些信息?
 用户名 密码 用户识别码UID 组识别码GID 家目录HOME shell 备注

 linux系统是支持多用户的系统
 用户分为三种以UID来区分
 超级用户 UID = 0 在系统中拥有至高无上的权限.
 系统用户 UID 1-499 bin,ftp,mail等,不具备登录系统的权利,却是系统运行不可缺少的.
 普通用户 UID 500-60000  管理员建立的用户.密码和权限都由管理员制定.
 
 群组都存储哪些信息?
 组名 组密码 组识别码 组成员

 Linux系统中的组是把一系列具有相同属性的用户加以规划后的集合.
 组也是分种类的 用GID来标识
 超级组 GID = 0
 系统组 GID = 1-499
 普通组 GID = 500-60000
添加 修改 删除 登录
 useradd
  -u UID
  -d 主目录
  -g GID
  -G 附属组
  -s 登录使用的SHELL
 passwd
  -d 删除口令
  -S 查看密码状态
  -x 密码最大时间
  -n 密码最小时间
  -w 密码警告时间
  -i 密码过期锁定时间
  --stdin 非交互添加密码
  echo "123" | passwd --stdin seker
 id
 查看验证

主要属组与附属组
 主要属组:每一个用户都必须有且只有一个主要属组,因为文件在建立时就会使用到主属组
  附属组  :每一个用户可以加入其它组,这些组被称为用户的附属组
 需要注意的是一个用户建立时,如果不明确指定,则系统自动建立一个与用户名相同的群组
 同时将这个群组也设置为该用户的附属组
 他们都是为了linux内的系统权限分派而存在的.

用户创建的流程
 /etc/passwd
 /etc/shadow
 /etc/group
 /etc/gshadow
 mkdir /home/username
 cp /etc/ske1/.* /home/username
 chown username:username /home/username
 演示手动创建用户
建立用户后如何更改
 usermod
  -u UID
  -d 主目录
  -g GID
  -G 附属组
 userdel
  -r 删除主目录及其文件
 su  切换用户
     以root用户切换其他用户则不需要密码
     而其他用户做任何切换都需要密码
 su -
     加 - 与不加 - 的区别
[seker@lan2 ~]$ id
uid=502(seker) gid=503(zorro) groups=502(seker),503(zorro)
[seker@lan2 ~]$ su root
口令:
[root@lan2 seker]# ifconfig
bash: ifconfig: command not found
[root@lan2 seker]# pwd
/home/seker
[root@lan2 seker]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/seker/bin:/home/seker/bin
[root@lan2 seker]# exit
exit
[seker@lan2 ~]$ id
uid=502(seker) gid=503(zorro) groups=502(seker),503(zorro)
[seker@lan2 ~]$ su - root
口令:
[root@lan2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F9:41:37
[root@lan2 ~]# pwd
/root
[root@lan2 ~]#
       这是为什么呢?我们都知道,有些命令是只有管理员才能使用的,一般用户没有权限.就像本例中的 ifconfig.用第二种方法切换身份,相当于重新登陆,此时用户的家目录和PATH等信息会发生改变,和直接用root登陆一致;但第一种情况,切换到root身份后用户的家目录和PATH仍然是原先一般用户的家目录和PATH,我们知道,PATH里设置的是一些路径,指向一些目录,这些目录包含着一些常用的工具.如果你的PATH没有设置相应的路径,那么直接运行ifconfig系统肯定会找不到ifconfig工具在哪里.所以会提示:没有这个命令.


切换组
 gpasswd sekergroup
 su - zorro
 sg - sekergroup
 xxx xxx
 id
 gpasswd -r sekergroup  清除密码
 


登录后检查
 whoami  查看当前用户身份
 who 登录本机用户及来源,+表示mesg是否开启接收的标志
 w 登录用户在做什么
 id 验证用户和查看用户的群组
 users 都有哪些登录用户

退出登陆
 exit   退出登陆shell
 logout 退出非登录shell
 演示
[root@lan2 ~]# bash
[root@lan2 ~]# logout
bash: logout: not login shell: use `exit'
[root@lan2 ~]#

基本权限

 对于一个文件他具备 读r 写w 执行x
 - rwx rwx rwx root root
 第一个字符标识文件的类型,
 之后9个字符,每三个为一组,分别对应后面的用户和组所具有的权限
 第一个root是用户 第二个root是组 前两组就与此对应
 那么最后一组是给谁用的呢?
 画个系统用户集合图 其中之一是所属用户(属主user),一部分是属组group,剩余部分则是第三组权限,我们称它为other,也就是既不是属主又不是属组中的成员

 文件的:
  r 对应的系统命令 cat
  w 对应的系统命令 vi echo >
  x 执行 例如 ls
 目录的:
  x  进入目录 cd
  rx 读目录里的内容(目录里存放着其包含的文件和子目录名字) cd + ls
  wx 删除和移动目录中的文件和子目录 mv rm

获取权限的流程
 开始 --_> root --> 给予所有权限 -------\
      |--> user --> 分派user位权限-------\结束
      |--> group--> 分派group位权限------/
      |--> other--> 分派other位权限-----/

更改文件拥有者
 chown user file  更改属主
 chown :group file 更改属组
 chown user:group file 主和组一同更改
  -R 参数 递归更改

更改文件权限 (两种方式 字符和数字)
  字符模式
 赋值操作
 chmod u=rwx file
 chmod g=rx file
 chmod o=r file
 组合操作
 chmod ug=rw file
 chmod u=rwx,g=rx,u=x file
 chmod a=rwx file
 加减运算
 chmod +x file
 chmod ugo-x file
  数字模式
 rwx rwx rwx
 421 421 421
  7   7   7
 3=1+2; 5=4+1; 6=4+2;7=4+2+1
 chmod 644 file
 chmod 755 dir

系统默认权限
  umask
[root@lan2 seker]# umask
0022
[root@lan2 seker]# mkdir mask022_dir
[root@lan2 seker]# touch mask022_file
[root@lan2 seker]# umask 002
[root@lan2 seker]# mkdir mask002_dir
[root@lan2 seker]# touch mask002_file
[root@lan2 seker]# ll mask0* -d |awk '{print $1,$NF}'
drwxrwxr-x mask002_dir
-rw-rw-r-- mask002_file
drwxr-xr-x mask022_dir
-rw-r--r-- mask022_file
[root@lan2 seker]#