鸟哥的Linux私房菜基础篇笔记--9

来源:互联网 发布:剧本下载软件 编辑:程序博客网 时间:2024/05/23 12:20

382.利用[ ]来判断。

(1)判断的参数和test 命令是相同的。

     [  -z  “$HOME”  ] ; echo $?

(2)注意事项:

     在中括号内的每个组件都需要有空格键来分割。

     在中括号内的变量,最好都以双引号引起来。

     在中括号内的常量,最好都以单或双引号引起来。

(3)错误例子:

     #name=”Vbird  Tsai”

     #[  $name == “Vbird”  ]

     bash: [ : too many arguments

     这个报错显示的意思是太多的参数了。

     因为没有加”” 所以就会变成这样,[  Vbird  Tsai  ==  “Vbird”  ]

     是不是不对劲,

     如果加上双引号,[  “Vbird  Tsai”  ==  “Vbird”  ],所以就没事了。

 

384.shift  脚本命令。

(1)shift 数字         的意思就是将最前面的几个参数。

     看书上解释吧。

 

 

 

391.在脚本中定义一个函数。

(1)zhige () {

echo  $PATH

 }

     zhige

     相当于

     function zhige () {

echo  $PATH

 }

 zhige

 

(2)在一个函数中。

     zhige ()  {

echo  $1

     }

     zhige  root

     这个$1代表的是在引用zhige后面加上的root,而不是在执行脚本后面加的参数,你懂吧。

 

394.在脚本中,n++

(1)在一个脚本中,n++ 是不可用的,用了也没有效果。

 

395.脚本中的for 循环。

(1)for   animal   in  dog   cat   alephant  

     do

echo  $animal

     done

(2)for   i    in   {1..40}

     do

     done

(3)for  i     in    `cat   /etc/`

     do

     done

(4)for  ((i=0 ; i>=5;i++))

 do

    done

393.while  until循环。

(1)while [ 判断条件 ]  当满足条件的时候,进行循环,当条件不满足时就会退出循环

     do

     done

(2)until [ 判断条件 ]   当不满足条件的时候,进行循环,当条件满足的时候退出循环。

     do

     done

 

 

397. sh  脚本的追踪和调试。

(1)sh  -n   test.sh

     不要执行test.sh ,只是检查语法是不是正确,如果语法正确,不会有任何显示。

(2)sh  -x   test.sh

     会真正的执行test.sh ,还会显示出执行脚本的步骤。

 

410.useradd 创建用户命令。

(1)useradd   -r   vbird  

     创建一个系统用户,账号的UID会有限制(参考/etc/login.defs),不会主动创建主文件夹。

(2)useradd  -D

  useradd 默认值调用出来,这个数据是由/etc/default/useradd提供的。

(3)创建用户的时候对于用户组的两种机制。

     私有用户组机制:系统会创建一个与账号一样的用户组作为初始用户组,这种用户组的设置机制会比较保密,这是因为用户都有自己的用户组,而且主文件夹权限将会设置700(仅有自己可进入自己的主文件夹)只故,使用这种机制将不会发参考GROUP=100这个设置值。现在用的就是这个。

     公共用户组机制:就是以GROUP=100这个设置值作为新建账号的初始用户组,因此每个账号都属于users这个用户组。

(4)useradd 命令参考的文件有: /etc/default/useradd     /etc/login.defs    /etc/skel

     

     /etc/default/useradd   提供默认的shell、模板目录、在哪里创建家目录、是否创建邮

     件文件。

     /etc/login.defs   /etc/shadow 文件内容所需要的默认值,还有GIDUID的最小值和

     最大值,用户家目录的默认权限等。

     /etc/skel  用户家目录的模板目录。

413.passwd 命令。

(1)passwd  root    :root修改密码。

(2)passwd   -l     : l lock的意思,就是将账号上锁。

(3)passwd   -u     : u unlock的意思。

(4)passwd   -S     : 列出密码的相关参数,即shadow文件内的大部分信息,也就是当

                      前用户密码的状态。

(5)非交互式修改密码:  echo  “123456”  |  passwd  --stdin  root

 

415.chage 命令。

(1)chage  -l  root  列出root的密码详细参数。

(2)chage  -d  0   zhige   在用户登陆的时候强制用户修改密码。

 

416.usermod 命令。

(1)usermod  -l   newname   oldname  : 修改用户名。

(2)usermod  -c   “zhige  is  a  binggan”  zhige  :  修改用户/etc/passwd文件中第五列的说明,是覆盖修改。

(3)usermod   -a  -G  group1  zhige    :与G和用可增加次要组的支持而非设置。

(4)usermod   -G   group1   zhige     :设置group1zhige的附加用户组。

418.finger  chfn 命令。

(1)finger  root   : 会列出root的一些信息。

(2)chfn会将修改或者添加finger  root  列出的信息,chfnchange finger的意思。

 

419.chsh 命令。

(1)chsh  -l   :列出目前系统上面可用的shell,其实就是/etc/shells的内容。

(2)chsh  -s   :  设置修改shell,只能修改rootshell

 

420.groupadd 命令。

(1)groupadd  -r  zhige   :新建一个叫zhige系统用户组。

 

420.groupmod 命令。

(1)groupmod  -g  201  -n  newname  oldname  -g修改用户组的GID-n修改用户组组名。

 

421.gpasswd  命令。

(1)gpasswd  -A  zhige  group1 : 设置用户组的管理员。成为这个组的管理员后并不会加入到这个组当中,也就不会有组相应的权限。

(2)gpasswd  -r   group1 : 将groupname  的密码删除。

(3)gpasswd  -M   zhige  green  red  group1 :  定义用户组的成员。   

(4)gpasswd   -a   zhige  group1  : 将zhige加入到group1中。

(5)gpasswd   -d   zhige  group1   :  zhige删除出group1这个组外。

 

 

424.如何重新挂载,加上一些原来没有的属性。

(1)mount  -o  remount,acl     :重新挂载,加上acl属性。

 

 

424.设置acl属性命令setfacl

1)当需要单独设置一个用户对目录的权限的时候,就会用到setfcal命令了。

2setfacl  -m  u:zhige:rwx    acl_test1  :设置zhige用户对文件的特殊属性为rwx

3setfacl  -m  u::rwx     acl_test1   :  当中间的用户名没有填写时,代表设置该文件所有者,所以上面显示root的权限为rwx了。

4setfacl  -d  -m u:zhige:rx  目录  :  设置目录的默认权限,在该目录下新建文件或

     还可以                           者目录会继承这个设置。

     setfacl  -m  d:u:zhige:rx   目录

5setfacl  -k   目录     :  删除目录的默认权限。

6setfacl  -b   文件或目录  :  删除目录或者文件所有的acl权限。

7setfacl   -R  -m  u:zhige:rwx    目录   :  递归设置acl权限。

8setfacl   -x   u:zhige:rwx    :删除后面的acl权限。

9setfacl   -m  m:r   acl_test1   :设置文件acl_test1的有效权限。

425.查看文件或者目录的acl权限。

(1)getfacl   acl_test1   

(2)在使用getfacl  acl_test1 的时候回发现有一个mask::r-x,它的意思有点像是有效权限,用户或组所设置的权限必须存在于mask的权限设置范围内才会生效。是针对acl权限用户设置的,不会对文件所属者和文件所属组产生影响

(3)当执行命令:setfacl  -m  u:zhige:rwx  test.sh  : 系统会默认将mask修改成rwx,如果有特殊需求就需要用上面的方法修改了。

 

428.命令su  

(1)su    zhige     : 当su直接加用户登录的时候,读取的变量设置方式为non-login

                       shell 的方式。

2non-login shelllogin-shell  的区别在于是不是重新读取登录用户的环境变量。

3su  -l   zhige   :用login-shell的方式登录。

     su  -zhige     也可以

4su  -m   zhige  :表示使用目前的环境变量,而不读取新用户的配置文件。

5[zhige oatest $] su  -  -c  “head  -n  3  /etc/shadow ”    当前用户位zhige  ,切换到root用户执行命令head  -n  3  /etc/shadow  。需要root密码,su  -  就是登录root的意思。

 

430.命令 sudo

(1)sudo  -u  sshd   touch  /tmp/mysshd  : 用用户sshd的身份在/tmp/  新建文件

                                            mysshd,用户和用户组都位sshd

(2)sudo  -u  sshd   sh  -c  “mkdir  ~zhige/www; cd  ~zhige/www ; echo “This is test” >  index.html ”  

     在有多个命令的时候使用 sh  -c  “”  ,多个命令用;隔开。

(3)因为sshd是系统账号,所以是不能登陆的,不能用sshd新建一个属于它的文件,上文提到的方式可以。

(4)sudo 执行的重点是,能否使用sudo必须要看/etc/sudoers的设置值,而可使用sodu是通过输入用户自己的密码来执行后续的命令串。

(5)    visudo 去编辑  /etc/sudoers 文件。

(6)文件的内容:

     root          ALL=ALL)         ALL  

 上面这一行的四个参数的意思分别是:

      1.用户账号:系统的哪个账号可以sudo这个命令。

      2.登录者的来源主机名:意思这个账号可以有哪台网络主机连接过来。

      3.可切换的身份:这个账号可以切换什么身份来执行后续的命令。

      4.可执行的命令:这个命令务必使用绝对路径编写。

(7)在文件中:

    %wheel      ALL=ALL)   ALL  

     %的意思是用户组的意思

    zhige        ALL=root)   NOPASSWD: /usr/bin/passwd  

     NOPASSW 在使用sodu的时候不用输入密码。

zhige        ALL=root)   !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]* ,  \

                                !/usr/bin/passwd  root

 加上!的意思是不让zhige使用这个命令,\的意思是一行写不开,分割到下一行,虽

 然分割到下一行,但是还算是一行的内容。   

(8)visudo 文件中的别名。

    User_Alias  ADMINS = zhige1 , zhige2 , zhige 3

    ADMINS    ALL=root)    /bin/su  -

      别名必须使用大写字母

  

440.如果你想要知道每个账户的最近登录时间.

(1)你可以使用lastlog 这个命令,lastlog会读取/var/log/lastlog这个文件(二进制文件)。

 

440.如果你想要知道目前系统上正在登录的账号。

(1)w  who  

 

441.用户对谈。

(1)write  zhige    pts/2  

     会进入交互模式,结束的时候,请按下Crtl+D 结束输出。

     write   用户名    终端接口

(2)如果用户不想受到任何的信息。

     在用户当前登录界面,mesg  n  ,  就不会受到其他用户发送给他的信息,但是root  

      发的消息还是需要接收的。

     如果想要解开的话,就执行    mesg  y  

     如果想要知道mesg 的状态,就直接执行mesg 就可以了。

(3)如果想要给所有的用户都发这个消息呢,就可以使用。

     wall   “I will sutdown my linux server ”

 

 

442.邮件mail

(1)一般来说,mailbox都会放置到/var/spool/mail里面,一个账号一个mailbox(文件的形式),举例子来说我的zhige就具有/var/spool/mail/zhige这个mailbox

(2)echo  “邮件内容”  |  mail   -s  “标题”  用户名

     echo   “test test ”   |   mail   -s  “test”   zhige

     mail   -s  “test”  zhige  <  /root/.bashrc

     mail   -s  “test”ssz940728@163.com  <  /root/.bashrc

     用非交互的方式给用户zhige 发邮件。

(3)mail  -s  “test”   zhige   

     用交互的方式给用户zhige 发邮件。

     结束的时候在最后一行输入一个 .   就可以。

(4)查看指定用户的邮件。

     mail  -u  zhige

(5)mail   : 默认查看的是当前登陆的用户的邮件,在这个里,有的邮件前面是>N,说明这个邮件还没有读过。如果想要知道这个mail内部命令有哪些,可以在&之后输入? 。

     &后可以输入的命令。

     h 40列出信件标头,如果查阅40左右封信件的标题,可以输入”h 40 ”,可以用来翻页。

     d 5  删除后续邮件号码对应的邮件,要配合q才会有意义。

     s  5  /home/zhige/mail.file   将邮件标号为5的邮件保存到/home/zhige/中。

     exit/e   是不保存离开。

     q    会进行两项操作,将刚才删除的信件一处mailbox之外,或者将刚才有阅读过的  

          信件存入 ~/mbox , 且一处mailbox之外 (后面这个默认是没有的)。

(6)mail   -f    /var/spool/mail/zhige   查看用户zhige的邮件。

(7)mail  -f     /home/zhige/Mail....(可以tab),不知道对不对。

 

443.一些账号检查工具。

(1)pwck  : 这个命令检查/etc/passwd这个账号配置文件内的信息,与实际主文件夹是否存在等信息,还可以比较/etc/passwd  /etc/shadow  的信息是否一致,如果/etc/passwd内的数据字段错误时,会提示用户修改。

     系统账号没有创建主文件夹也会被报出错误。

 

 

444.手动建立一个账号。

(1)现在的账号的用户名是可以使用数字开头的,也可以使用纯数字。

(2)手动建立账号的步骤。

       1.先建立所需要的用户组。 (vim   /etc/group

   2./etc/group/etc/gshadow同步 (grpconv

   3.新建账号的各个属性。(vim   /etc/passwd

   4./etc/passwd/etc/shadow同步 (pwconv

   5.新建该账号的密码 (passwd  zhige  

   6.新建用户主文件夹(cp  -a  /etc/skel   /home/zhige

       7.更改用户主文件夹的属性 (chown  -R   zhige:zhige   /home/zhige

 

 

 

455.重新挂载的命令。

(1)mount  -o  remount,usrquota,grpquota   /home

     当重新挂载的时候,系统会同步更新/etc/mtab这个文件。

     如果要设置quota,那么你必须要确定/etc/mtab已经加入usrquotagrpquota的支持

     到你所想要设置的文件系统中。

 

 

kill命令

1)kill -HUP pid 
其中 pid 是进程标识。如果想要更改配置而不需停止并重新启动服务,请使用该命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。

根据约定,当您发送一个挂起信号(信号 1 或 HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。

也可以想成是reload的做法。

0 0