鸟哥

Notes of Basic Linux Part-5 Root as Administrator

2012-03-03. Category & Tags: Vbird, Linux, Commands, 鸟哥

see also jlevy/the-art-of-command-line (multi-language)

Organised 2017 March.
Notes from 2012 April.
多年前(2012)写的“鸟哥的Linux 私房菜”学习笔记。- Chapters 18~26 -ing
原网站: 繁体 linux.vbird.org or 简体 cn.linux.vbird.org

第十八章、认识系统服务 (daemon, service) #

什么是 daemon 与服务 (service) #

分类 & 命名: #

stand-alone vs. super-daemon 
    Stand Alone Daemon 
        响应速度快。  
        常见的有httpd、FTP的vsftpd等。  
    Super Daemon  
        (1)由于 super daemon 负责唤醒各项服务,因此 super daemon 可以具有安全控管的机制. 
        (2)不会一直占用系统资源。  
        例如 telnet, xinetd.  
signal-control vs. interval-control (工作形态)  
    signal-control  
        透过讯号来管理,有客户端的需求进来,就会去处理!  
        例如打印机的服务 (cupsd)。 
    interval-control  
        『每隔一段时间就主动的去运行某项工作』,在指定的时间才会去工作。  
        例如在第十六章提到的 atd 与 crond (每分钟侦测一次配置文件)  
命名守则  
    {xxx}d  
eg: man [3] daemon  

服务与端口的对应: /etc/services #

ssh             22/tcp                          # SSH Remote Login Protocol  
ssh             22/udp                          # SSH Remote Login Protocol  
....(中间省略)....  
http            80/tcp          www www-http    # WorldWideWeb HTTP  
http            80/udp          www www-http    # HyperText Transfer Protocol  
....(底下省略)....  

daemon的启动与配置, stand alone, service, super daemon #

/etc/init.d/* :启动脚本  
    系统上几乎所有的服务启动脚本都放置在这里!事实上这是公认的目录,CentOS在/etc/rc.d/init.d/,连结到/etc/init.d/的!  
/etc/sysconfig/* :初始化环境配置 //几乎所有的服务//ubuntu不存在此文件夹  
    eg: syslog的初始化配置就在/etc/sysconfig/syslog这里呢!网络配置则在/etc/sysconfig/network这个文件中。  
/etc/* :各服务的配置文件  
    第六章就讲过了,大家的配置文件都是放置在 /etc/ 底下的喔!//可能在子文件夹下  
/etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件//ubuntu不存在此文件夹  
    super daemon配置文件(默认值)为/etc/xinetd.conf,不过super daemon只是一个统一管理的机制,所管理的daemons的配置在 /etc/xinetd.d/* 里头喔!  
/var/lib/* :服务产生的数据库  
    MySQL的数据库默认就是写入/var/lib/mysql/这个目录下啦!  
/var/run/* :服务的PID记录处  
    在第十七章谈到可以使用讯号(signal)管理程序,daemon是程序,也可以利用kill或killall来管理啦!  
    因为担心管理时影响到其他的程序,因此daemon常会将自己的PID记录到/var/run/.  
    例如syslog的PID就记录在/var/run/syslogd.pid这个文件中。如此一来,/etc/init.d/syslog就能够简单的管理自己的程序啰。  

super daemon 所管理的服务的状态//很有意思,不过与ubuntu不同。

...

Notes of Basic Linux Part-4 User Management

2012-03-03. Category & Tags: Vbird, Linux, Commands, 鸟哥

see also jlevy/the-art-of-command-line (multi-language)

Organised 2017 March.
Notes from 2012 April.
多年前(2012)写的“鸟哥的 Linux 私房菜”学习笔记。- Chapters 14 & 17 -ing
原网站: 繁体 linux.vbird.org or 简体 cn.linux.vbird.org

第十四章、Linux 账号管理与 ACL 权限配置 #

Linux 的账号与群组 #

使用者标识符: UID 与 GID #

UID是0时,代表这个账号是『系统管理员』! 所以当你要让其他的账号名称也具有 root 的权限时,将该账号的 UID 改为 0 即可。
1~499 (系统账号).除了 0 之外,其他的 UID 权限与特性并没有不一样。默认 500 以下的数字让给系统作为保留账号只是一个习惯。
    我们希望启动的服务使用较小的权限去运行,所以这些系统账号通常是不可登陆的, 所以才会有 /bin/false ; /usr/sbin/nologin. 比如用来作为pop邮件使用者的shell
    1~99:由 distributions 自行创建的系统账号.
    100~499:若用户有系统账号需求时,可以使用的账号 UID。
500~65535 (可登陆账号).  linux 核心 (2.6.x 版)已经可以支持到 4294967295 (2^32-1).

使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 #

/etc/passwd 第5部分,见finger: chfn
/etc/shadow
    userName:pass:
    lastChange:minAvailable:maxAvailable:
    alertBeforeOutOfDate:extentionAfterOutOfDate:
    accountExpireDate:reserved
忘记root密码:
    *重新启动进入单人维护模式, 自动获得root权限
    *LiveCD 中挂载 / , 手动修改 shadow

关于群组: /etc/group 文件结构, 有效与初始群组, groups, newgrp, /etc/gshadow #

有效群组(effective group)与初始群组(initial group);
通常有效群组的作用是在新建文件.
newgrp: 有效群组的切换. OBS:此命令会进入新的bash

账号管理 #

adduser (suggested, interactive), useradd (ZZZ traditional), passwd, chage, usermod, userdel #

suggested: adduser
adduser userName (will be ased for fullname, passwords etc.)

[useradd deprecated!]
useradd [-u UID] [-g 初始群组] [-G 次要群组] [-m(普通用户默认)M(root默认)] [-c 说明栏] [-d /home/solo] [-s /bin/bash] 使用者账号名
    -d:指定家目录。务必使用绝对路径!
    -r:创建一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)
    -e:Expire date
useradd -D
    可以修改 /etc/default/useradd 内容来修改默认shell, 默认home, 默认参考目录等.
    SKEL=/etc/skel, 创建用户时候的参考(复制)
userdel [-r(delete the home)] userName
chsh: CHange SHell
chfn: CHange FiNger
id userName
Ex:强制第一次登录修改密码
    useradd agetest
    echo "agetest" | passwd --stdin agetest #not all distributions support '--stdin'
    chage -d 0 agetest
usermod -aG sudo userName # modify a user, add to the group sudo (sudoers)

用户功能:finger, chfn, chsh, id #

groupadd, groupmod, groupdel, gpasswd #

账号管理实例 #

主机的细部权限规划:ACL 的使用 #

什么是 ACL #

Access Control List

如何启动 ACL #

[root@www ~]# vi /etc/fstab
    LABEL=/1   /   ext3    defaults,acl    1 1

#need reboot or remount
[root@www ~]# mount
/dev/hda2 on / type ext3 (rw,acl) #测试结果:成功

...

Notes of Basic Linux Part-3 bash, shell, and Network Security

2012-03-03. Category & Tags: Vbird, Linux, Commands, 鸟哥

see also jlevy/the-art-of-command-line (multi-language)

Organised 2017 March.
Notes from 2012 April.
多年前(2012)写的“鸟哥的Linux 私房菜”学习笔记。 - chapters 10~13 -ing
基本的命令应该没什么变化吧。
原网站: 繁体 0160startlinux

Crtl + Alt + [F1]~[F6]
# 共有六个, tty1 ~ tty6 ,切换的方式为 Crtl + Alt + [F1]~[F6],其中, [F7] [F8] 为图形接口的使用。
man xxx => xxx(number) manual 中的命令级别 number 代表意义:

  • 1:一般用户可以使用的命令或可运行文件案;
  • 5:一些配置文件的文件内容格式;
  • 8:系统管理员能够使用的管理命令。

第十一章、认识与学习BASH #

认识 BASH 这个 Shell #

硬件、核心与 Shell #

// Hardware <=> Kernel  <=> Shell,KDE,App  

为何要学文字接口的 shell #

// 通用,效率高  

系统的合法 shell 与 /etc/shells 功能 #

/etc/shells #所有 shells  
/etc/passwd	// 每个用户的默认 shell  

Bash shell 的功能 #

// history, tab, alias, job control, scripts, wildcard  
// 当前登录的history在内存,注销时才会写入用户history文件。  

Bash shell 的内建命令: type #

type  [-tpa] commandName  
[ ]	:无参,说明式回显 commandName 类型,还和使用者语言有关  
-t  :单词式回显:  
      file    :外部命令  
      alias   :别名  
      builtin :bash内建  
-p  :如果后面接的 commandName 为外部命令,会显示完整文件名;  
-a  :会由 PATH 变量定义的路径中,将所有含 commandName 字符串的命令都列出来,包含 alias  

命令的下达 “" #

//  \ 仅跳脱『紧接着的下一个字符』  

Shell 的变量功能 #

什么是变量 #

变量的取用与配置 (echo, 变量配置守则, unset) #

// 变量的取用: echo  
    echo $varName  
    echo ${varName}  
    //  $varName 是 ${varName} 的简化。  
// 变量配置守则  
    // 赋值等号两边不能有空格  
    // 不能以数字开头  
    // 命令嵌套 eg : 
        ls -l `locate crontab` 
        // 反单引号 `命令` 或  $(命令) 等价 (推荐后者,因为容易识别,但是不要忘了那个$符号)。  
unset varName #注意:此处没有'$'  

环境变量的功能: env, export, declare #

// env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量;  
env #查看所有env变量  
    HOME #cd ~
    SHELL  
    HISTSIZE  
    MAIL  
    PATH  
    LANG #语系  
    RANDOM #/dev/random ; 0~32767 之间  
        declare -i number=$RANDOM*10/32768 ; echo $number #0~9 之间  
set #查看目前 bash 的所有变量 (环境变量+自定义变量);  
    //  set 还可以配置命令环境,见4.4  
    echo $$  
        // PID  
    echo $?  
        // 前一个命令回传值  
    cd - 或 cd $OLDPWD 
        // 前一个工作目录  
    PS1='[\u@\h#\#]\W\$'  
        // 字符界面行首提示符  
    \d :『星期 月 日』,如:"Mon Feb 2"  
    \H :完整的主机名『www.vbird.tsai』  
    \h :主机名在第一个小数点之前的,如『www』  
    \t :24 小时HH:MM:SS  
    \T :12 小时HH:MM:SS  
    \A :24 小时HH:MM  
    \@ :12 小时 am/pm  
    \u :当前账号,如『root』;  
    \v :BASH版本,如 3.2.25(1),仅取『3.2』显示  
    \w :完整pwd (除了~之外);  
    \W :当前所在文件夹 #利用 basename 函数取得工作目录名称  
    \# :命令的顺序编号  
    \$ :root 为 '#' ,否则 '$' 
    OSTYPE #linux-gnu  
    HOSTTYP #i686 #硬件 类型  
    MACHTYPE #i686-pc-linux-gnu #核心 类型  
export varName #<=> declare -x varName 
    // 将 varName 设置为 env变量 类型 (原来可能只是个 自定义变量 )。  
    // 对于子程序,  varName 在 本行之后才启动的子程序 中有效。(因为子程序会自动继承 自己被invoke时候 在父进程中有效的 env变量)。  

影响显示结果的语系变量 (locale) #

变量的有效范围 #

变量键盘读取、数组与宣告: read, array, declare / typeset #

read -p "promt string" -t timeOutInSecond varName  
    // 从键盘读取内容并存入varName; 
    -p  :prompt : 接提示字符  
    -t  :timeout: 接等待的『秒数』  
// array:  
    var[1]='this is the first'  
declare [-aixr] variable  
    -a  :将 variable 定义为 数组 (array) 类型  
    -i  :将 variable 定义为 整数 (int) 类型  
    -x  :#<=> export, 将 variable 变成环境变量;  
    -r  :配置成为 readonly 类型,且不能 unset  
    declare -x varName #export varName 
        // 将 varName 设置为 env变量 类型 (原来可能只是个 自定义变量 )。  
        // 如果export后没有varName,则 显示 所有 env变量。(-x 表示“转换为环境变量”参数,“-”不是chomd中的“去掉”)。  
    declare +x varName  
        // 将 varName 设置为 自定义变量 类型。(注意 +x 的含义,区别于 chmod)。  
    declare -p varName  
        // 显示 varName 变量类型(1.是 int(i) 还是 array(a) 还是 string( ); 2.是否 环境env变量(x); 3.是否只读(r))。  

与文件系统及程序的限制关系: ulimit #

ulimit  
    //  ??? 看不懂,学完操作系统再看。http://is.gd/I6ccfR『限制用户的某些系统资源』的,包括可以开启的文件数量, 可以使用的 CPU 时间,可以使用的内存总量等等。  
// hostname 更改主机名 how-to:三部曲  
    hostname newHostname #执行此命令  
    /etc/sysconfig/network #edit this file:  
        NETWORKING=yes  
        HOSTNAME=newHostname  
    /etc/hosts #edit this file.

For ubuntu 18+:

...

Notes of Basic Linux Part-2 Files, Directories, FS

2012-03-03. Category & Tags: Vbird, Linux, Commands, 鸟哥

see also jlevy/the-art-of-command-line (multi-language)

Organised 2017 March.
Notes from 2012 April.
多年前(2012)写的“鸟哥的Linux 私房菜”学习笔记。 - Chapters 6~9 -ing
基本的命令应该没什么变化吧。

第6章、Linux文件权限与目录配置 #

user, group #

Linux文件权限概念 #

Linux文件属性 (ls -al) #

*首位类型: 
    d: Dir  
    -: 正规文件(regular file )
        ASCII/plain text; binary; data(eg: last 才能读 /ar/log/wtmp)  
    l: Link  
    b: Block dev, 可供储存的接口设备(可随机存取装置)  
    c: Character dev, 串行端口设备,例如键盘、鼠标(一次性读取装置)  
    s: Socket, 常见于 /var/run  
    p: Pipe, FIFO. see: man fifo. 在解决多程序同时存取一个文件所造成的错误。  
*时间: 最后修改时间

Note: 中文时间乱码: 用『LANG=en_US』来修改语系. /etc/sysconfig/i18n

...