学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心。————法布尔

编程

Linux 零碎笔记(未整理)

  • 2020-09-02 21:32
简介 :之前看书记录的懒得整理,凑个数把

[TOC]

档案属性与目录

使用者:

由于 Linux 是个多人多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生,为了考虑每个人的隐私权,因此,这个『档案拥有者』的角色就显的相当的重要了。

所属组

群组最简单的功能之一,就是当您在团队开发资源的时候最有用 ,比如:张三,李四都属于group1组,那在这个组他们共享这个档案组的权限(比如这个档案权限 wrx 那么组成员都可以对文档进行读写执行权限)。如果我自己还有私人隐密的文件,仍然可以设定成让自己的团队成员也看不到我的档案数据的权限。

其他人

其他人不是使用者。也不属于使用者的组中,第三者。想要对档案操作。也看档案对其他人的权限设置。

实例解释

  • -rwxrwxr-x 1 vagrant vagrant 78 May 21 11:00 demo.go # 这个文档解释
  • 字母对应的数字权限
  • r:4
  • w:2
  • x:1
  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others = --- = 0+0+0 = 0
  • 从左到右各个代表啥玩意?
  • - 代表档案类型并且有以下类型
  • 当为[ d ]则是目录
  • 为[ - ]则是普通档案
  • 若是[ l ]则表示为连结档(link)软硬链接;
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。
  • 若是[ s ]则表示为Scoket文件。
  • rwx 这一坨字母代表权限
  • 每三个为一组,且均为『rwx』的参数的组合 [ - ] 代表没对应列权限。
  • 其中,[ r ]代表可读权限数字 4 [ w ]代表可写权限数字 2 [ x ]代表可执行权限数字 1
  • 第一组为『拥有人的权限』 可读可写可执行rwx 权限数字 421 和为 7
  • 第二组为『同群组的权限』 可读可写可执行rwx 权限数字 421 和为 7
  • 第三组为『其它非本群组的权限』 可读可执行r-x 权限数字 41 和为 5
  • 所以档案权限为 775
  • vagrant vagrant 第一个代表当前使用者 。 第二个是所属组。属于vagrant组
  • 范例:若有一个档案的属性为『-rwxr-xr--』,可由下面说明之:
  • [-][rwx][r-x][r--] 文档权限
  • [1][234][567][890] 对应索引
  • 1 为:代表这个文件名为目录或档案(上面为档案)
  • 234为:拥有人的权限(上面为可读、可写、可执行)
  • 567为:同群组使用者权限(上面为可读可执行)
  • 890为:其它使用者权限(上面为仅可读)
  • 注意:
  • drwxr--r-- 2 root root 4096 Feb 10 00:44 product
  • 特别留意的是 x 这个权限符,因为 x 与目录的关系相当的重要,如果您在该目录底下不能执行任何指令的话,那么自然也就无法执行 ls, cd 等指令,所以啰,也就无法进入了,因此,请特别留意的是,如果您想要开放某个目录让一些人进来的话,请记得将该目录的 x 属性给开放! 所以product目录除了root用户都cd进入不到里面去。

涉猎命令

chgrp 改变文档所属组

chown 改变文档所属用户

chmod 改变档案的属性、 SUID 、等等的特性 chmod 777 runtime.log

umask 改变预设的建立档案或目录时的属性

chattr 直接举例: chattr +i /etc/shadow(不能被删除、改名、设定连结也无法写入或新增数据) chattr -i /etc/shadow 解除该属性

账号管理

账号管理: groupadd, groupdel, useradd, userdel, chsh, chfn, userconf

密码管理与设定:passwd

使用者身份切换:su, sudo, visudo

使用者查询: id, finger, groups

用户账号文件: /etc/passwd

用户密码文件 : /etc/shadow

用户组文件 : /etc/group

/etc/passwd 的构造:

  • vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
  • statd:x:105:65534::/var/lib/nfs:/bin/false
  • puppet:x:106:112:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
  • vboxadd:x:999:1::/var/run/vboxadd:/bin/false

这个档案的构造是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中!不过需要特别留意的是,里头很多账号本来就是系统中必须要的(例如 bin, daemon, adm, nobody 等等)

每一行使用『:』分隔开,共有七个咚咚,分别是:

账号名称:就是账号名称啦!对应 UID 用的!

密码:早期的 Unix 系统的密码是放在这个档案中的,不过由于这样一来很容易造成数据的被窃取,所以后来就将数据给他改放到 /etc/shadow 中了,这一部份等一下再说,而这里你会看到一个 x ,呵呵!别担心密码已经被移动到 shadow 这个加密过后的档案啰

UID:这个就是使用者识别码(ID)啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下: 0 系统管理员,所以当你要作另一个系统管理员账号时,你可以将该账号的 UID 改成 0 即可; 1~500 保留给系统使用的ID,其实 1~65534 之间的账号并没有不同,也就是除了 0 之外,其它的 UID 并没有不一样,预设 500 以下给系统作为保留账号只是一个习惯。这样的好处是,以 named 为例,这个程序的预设所有人 named 的账号 UID 是 25 ,当有其它的账号同样是 25 时,很可能会造成系统的一些小问题!为了杜绝这样的问题,建议保留 500 以前的 UID 给系统吧! 500~65535 给一般使用者用的!

GID:这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范 group 的而已!

说明:这个字段基本上并没有什么用途,只是用来解释这个账号的意义而已!不过,如果您提供使用 finger 的功能时,这个字段可以提供很多的讯息呢!

家目录:这是使用者的家目录

Shell :所谓的 shell 是用来沟通人类下达的指令与硬件之间真正动作的界面

/etc/shadow 的构造

  • root:$6$lgI.yo7x$auzfUxhZA1CnLH/9ySNlPn8iRUd/bgiqB2YH0S.6wbuWYQbx7XozKVBo85QFb//mqUXbex0PL0yEOssvmEFjT.:16182:0:99999:7:::
  • daemon:*:16176:0:99999:7:::
  • bin:*:16176:0:99999:7:::
  • sys:*:16176:0:99999:7:::

这是 shadow 的形式,也同样的以『:』作为分隔的符号。数一数,共可以发现有九个字段:

账号名称

密码:这个才是真正的密码,而且是经过编码过的密码啦!你只会看到有一些特殊符号的字母就是了!需要特别留意的是,虽然这些加密过的密码很难被解出来,但是『很难』不等于『不会』,所以,这个档案的预设属性是『-rw-------』亦即只有 root 才可以读写就是了!你得随时注意,不要不小心更动了这个档案的属性呢!另外,如果是在密码栏的第一个字符为『 』表示这个账号并不会被用来登入的意思。所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码多加一个 !嘿嘿!他就无法使用该账号啰!直到他变乖了,再给他启用啊!

注意事项:密码忘记或者被更动了?

进入 /etc/shadow 这个档案中,将 root 的密码这一栏全部清空!然后再登入 Linux 一次,这个时候 root 将不需要密码(有的时候需要输入空格符)就可以登入了!这个时候请赶快以 passwd 设定 root 密码即可!

上次更动密码的日期

密码不可被更动的天数,第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是 0 的话,表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!

密码需要重新变更的天数

密码需要变更期限前的警告期限

账号失效期限:如果用户过了警告期限没有重新输入密码,使得密码失效了,而该用户在这个字段限定的时间内又没有跟 root 反应,让账号重新启用,那么这个账号将暂时的失效

账号取消日期:这个日期跟第三个字段一样,都是使用 1970 年以来的日期设定。这个字段表示:这个账号在此字段规定的日期之后,将无法再使用。这个字段会被使用通常应该是在『收费服务』的系统中,你可以规定一个日期让该账号不能再使用啦!

保留:最后一个字段是保留的,看以后有没有新功能加入。

/etc/group 与 /etc/gshadow 档案:

认识账号与密码是使用 /etc/passwd 与 /etc/shadow ,那么认识 group 就是 /etc/group 与 /etc/gshadow

/etc/group 构造

  • root:x:0:root
  • vagrant:x:1000:
  • lpadmin:x:110:vagrant
  • sambashare:x:111:vagrant

群组名称:就是群组名称啦! 群组密码:通常不需要设定,因为我们很少使用到群组登入!不过,同样的,密码也是被纪录在 /etc/gshadow 当中啰! 群组 ID:就是所谓的 GID 啦! 支持的账号名称:这个群组里面的所有的账号,如上面所言,如果你想要让 mysccount 也属于 root 这个群组的话,那么就将上面的第一行最后面加上 ,myaccount (不要有空格)使成为『root:x:0:root,myaccount』就可以啦。

命令使用

  • groupadd
  • [root @test /root ]# groupadd [-g GID] groupname
  • 参数说明:
  • -g GID :自行设定 GID 的大小
  • 范例:
  • [root @test /root]# groupadd -g 55 testing<==设定一个群组,GID为 55
  • 你也可以直接修改用户组跟用户组密码这两个档案就好了,根本不需要使用到这个指令的!
  • ---
  • groupdel
  • [root @test /root ]# groupdel groupname
  • 参数说明:
  • 范例:
  • [root @test /root]# groupdel testing
  • 不过,有一点必须要特别留意,就是『在杀掉群组之前,请先将该群组的 primary 使用者删除!』才好!那什么是 Primary 的使用者呢?说穿了也很简单啦!就是 /etc/passwd 里面,那个 GID 设定为这个群组的 GID 的那个使用者就对啦!
  • ---
  • useradd
  • [root @test /root ]# useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] username
  • 参数说明:
  • -u :直接给予一个 UID
  • -g :直接给予一个 GID (此 GID 必须已经存在于 /etc/group 当中)
  • -d :直接将他的家目录指向已经存在的目录(系统不会再建立)
  • -M :不建立家目录
  • -s :定义其使用的 shell
  • 范例:
  • [root @test /root]# useradd testing <==直接以预设的数据建立一个名为 testing 的账号
  • [root @test /root]# useradd -u 720 -g 100 -M -s /bin/bash testing <==以自己的设定建立账号
  • ---
  • userdel
  • [root @test /root ]# userdel [-r] username
  • 参数说明:
  • -r :将该账号的[home directory]与[/var/spool/mail/username]一并删除!
  • 范例:
  • [root @test /root]# userdel testing <==只有砍掉 /etc/passwd 与 /etc/shadow 的该账号内容;
  • [root @test /root]# userdel -r testing<==连该账号的 /home/testing 与 /var/spool/mail/testing 都砍掉!

passwd 修改or设定密码

[root @test /root]# passwd [username] [test @test /root]# passwd [root @test /root]# passwd test Changing password for user test New password: <==输入密码 BAD PASSWORD: it is based on a dictionary word Retype new password: <==再输入一次! passwd: all authentication tokens updated successfully


sudo

[root @test /root ]# sudo [-u username] [command] 参数说明: -u :将身份变成 username 的身份 范例: [test@test test]$ sudo mkdir /root/testing Password: <==输入 test 自己的密码 [root@test test]$ sudo -u test touch test <==root 可以执行 test 这个使用者的指令,建立 test 的档案!

说明:

如果单纯的使用 su 来变换成 root 的身份,最大的好处是可以直接下达我们惯用的指令,但是,还是会有问题的,就是如果主机是由多人共管的时候,由于所有的人都必须要知道 root 的密码,如此一来,呵呵!很麻烦的啦!因为怕被入侵嘛!而且只要 root 改变了密码,那么所有人都必需要通知一次!很麻烦,加上,如果管理群中的一个人不小心泄出了 root 的密码,不就完蛋了??那么有没有可以不需要 root 的密码,却还是可以执行 root 的工具呢?呵呵!这个时候就有 sudo 的出现了!

sudo 的基本语法就是在 sudo 后头直接加上指令,例如上面的例子中, mkdir /root/testing 就是命令啦!那么就可以来执行 root 身份可以动作的事情!此外,由于执行 root 身份的工作时,『输入的密码是使用者的密码,而不是 root 的密码,所以可以减少 root 密码外流的问题!』如此 root 的密码将不会流出去了!但是 sudo 在使用的时候请小心,就是要在 /etc/sudoers 里头设定该有的事项!

系统网络设置

centos

/etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/resolv.conf

ubuntu

/etc/network/interfaces /etc/resolv.conf

Top