Linux技术研究-基础篇(linux常用指令和权限管理)

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

怎么查看命令帮助
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 调用系统命令


用户管理 (增删改切)
用户都存储哪些信息?
用户名 密码 用户识别码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]#