Linux学习随笔

1.取时间:date1=$(date --date='2 days ago' +%Y%m%d) # 前两天的日期

2.

echo -e "You SHOULD input 2 numbers, I will cross them! \n"
read -p "first number: " firstnu

echo -e:

-e     enable interpretation of backslash escapes
-e加上后\起到转义作用,比如\n代表回车
read -p "提示字符 " var
3.计算+-x / %:

var=$((运算内容))
[root@www scripts]# echo $(( 13 % 3 ))

4.当子程序完成后,在子程序内的各项变量或动作将会结束而不会传回到父程序中,这和函数调用中的局部变量相似。

5.

在vim编辑器下,当想多窗口编辑文档时(或者复制别的文档的东西,或是对比),则可以在当前vim的命令模式下输入:

:sp 文件名

如果不输入文件名,则另开一个当前文档。

文档间的切换:

CTRL+w+w或者CTRL+w+(j / k)

gg:去到文档顶部

G:去到文档底部

0(数字0):去到当前行的行首

$:去到当前行的行尾


6.指令之后带有选项与参数:

Shell script 的默认变量($0, $1...),(可以对比windows下的带参数的控制台程序)

/path/to/scriptname  opt1  opt2  opt3  opt4 
       $0             $1    $2    $3    $4

这样够清楚了吧?运行的脚本档名为 $0 这个变量,第一个接的参数就是 $1 啊~所以,只要我们在 script 里面善用 $1 的话,就可以很简单的立即下达某些命令功能了!除了这些数字的变量之外,我们还有一些较为特殊的变量可以在 script 内使用来呼叫这些参数喔!

  • $# :代表后接的参数『个数』,以上表为例这里显示为『 4 』;
  • $@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);
  • $* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字节,默认为空白键,所以本例中代表『 "$1 $2 $3 $4" 』之意。
7.script 的运行若以 source 来运行时,代表在父程序的 bash 内运行之意!

8.添加帐号:useradd 用户名

[root@localhost ~]# useradd vbird1


使用 useradd 创建使用者账号时,其实会更改不少地方,至少我们就知道底下几个文件:

  • 用户账号与口令参数方面的文件:/etc/passwd, /etc/shadow
  • 使用者群组相关方面的文件:/etc/group, /etc/gshadow
  • 用户的家目录:/home/账号名称

  • useradd 参考档

其实 useradd 的默认值可以使用底下的方法呼叫出来:

[root@www ~]# useradd -D
GROUP=100		<==默认的群组
HOME=/home		<==默认的家目录所在目录
INACTIVE=-1		<==口令失效日,在 shadow 内的第 7 栏
EXPIRE=			<==账号失效日,在 shadow 内的第 8 栏
SHELL=/bin/bash		<==默认的 shell
SKEL=/etc/skel		<==用户家目录的内容数据参考目录
CREATE_MAIL_SPOOL=yes   <==是否主动帮使用者创建邮件信箱(mailbox)
这个 数据其实是由 /etc/default/useradd 呼叫出来的!
  • HOME=/home:用户家目录的基准目录(basedir)

    用户的家目录通常是与账号同名的目录,这个目录将会摆放在此配置值的目录后。所以 vbird1 的家目录就会在/home/vbird1/ 了!很容易理解吧!

  • INACTIVE=-1:口令过期后是否会失效的配置值

    我们在 shadow 文件结构当中谈过,第七个字段的配置值将会影响到口令过期后,在多久时间内还可使用旧口令登陆。这个项目就是在指定该日数啦!如果是 0 代表口令过期立刻失效,如果是 -1 则是代表口令永远不会失效,如果是数字,如 30 ,则代表过期 30 天后才失效。

  • EXPIRE=:账号失效的日期

    就是 shadow 内的第八字段,你可以直接配置账号在哪个日期后就直接失效,而不理会口令的问题。通常不会配置此项目,但如果是付费的会员制系统,或许这个字段可以配置喔!

  • SHELL=/bin/bash:默认使用的 shell 程序文件名

    系统默认的 shell 就写在这里。假如你的系统为 mail server ,你希望每个账号都只能使用 email 的收发信件功能,而不许用户登陆系统取得 shell ,那么可以将这里配置为 /sbin/nologin ,如此一来,新建的使用者默认就无法登陆!也免去后续使用usermod 进行修改的手续!

SKEL=/etc/skel:用户家目录参考基准目录

这个咚咚就是指定用户家目录的参考基准目录啰~举我们的范例一为例, vbird1 家目录 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的~所以呢,未来如果我想要让新增使用者时,该用户的环境变量 ~/.bashrc 就配置妥当的话,您可以到 /etc/skel/.bashrc 去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的家目录下就会有 www那个目录了!这样瞭呼?


除了这些基本的账号配置值之外, UID/GID 还有口令参数又是在哪里参考的呢?那就得要看一下 /etc/login.defs 啦!这个文件的内容有点像底下这样:

MAIL_DIR        /var/spool/mail	<==用户默认邮件信箱放置目录

PASS_MAX_DAYS   99999	<==/etc/shadow 内的第 5 栏,多久需变更口令日数
PASS_MIN_DAYS   0	<==/etc/shadow 内的第 4 栏,多久不可重新配置口令日数
PASS_MIN_LEN    5	<==口令最短的字符长度,已被 pam 模块取代,失去效用!
PASS_WARN_AGE   7	<==/etc/shadow 内的第 6 栏,过期前会警告的日数

UID_MIN         500	<==使用者最小的 UID,意即小于 500 的 UID 为系统保留
UID_MAX       60000	<==使用者能够用的最大 UID
GID_MIN         500	<==使用者自定义组的最小 GID,小于 500 为系统保留
GID_MAX       60000	<==使用者自定义组的最大 GID

CREATE_HOME     yes	<==在不加 -M 及 -m 时,是否主动创建用户家目录?
UMASK           077     <==用户家目录创建的 umask ,因此权限会是 700
USERGROUPS_ENAB yes     <==使用 userdel 删除时,是否会删除初始群组
MD5_CRYPT_ENAB yes      <==口令是否经过 MD5 的加密机制处理

要注意的是,系统给予一个账号 UID 时,他是 (1)先参考 UID_MIN 配置值取得最小数值; (2)由 /etc/passwd 搜寻最大的 UID 数值,将 (1) 与 (2) 相比,找出最大的那个再加一就是新账号的 UID 了。我们上面已经作出 UID 为 700 的 vbird2 ,如果再使用『 useradd vbird4 』时,你猜 vbird4 的 UID 会是多少?答案是: 701 。所以中间的 505~699 的号码就空下来啦!

而如果我是想要创建系统用的账号,所以使用 useradd -r sysaccount这个 -r 的选项时,就会找『比 500 小的最大的那个 UID + 1 』就是了


使用 useradd 这支程序在创建 Linux 上的账号时,至少会参考:

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel/*
这些文件,不过,最重要的其实是创建 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow 还有用户家目录就是了


《鸟哥》





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值