Linux 学习笔记一

来源:互联网 发布:网络乾坤 编辑:程序博客网 时间:2024/05/22 17:10

1.Redhat 7将网卡名称eno16777736改为eth0

  • 输入如下命令,进入对应目录,编辑文件:
vim /etc/sysconfig/grub
  • 然后,往这个文件中添加“net.ifnames=0 biosdevname=0”内容

这里写图片描述

  • 紧接着,执行如下命令:
grub2-mkconfig -o /boot/grub2/grub.cfg

这里写图片描述

  • 然后,重启系统后查看网卡名称:

这里写图片描述

2.Linux执行History下的命令

当你在shell(控制台、终端随便叫)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,
一般保存在用户目录下的.bash_history文件中。默认保存1000条,当然你可以更改这个值。

使用history命令来显示列表,可以跟一个整数表示希望显示最后的多少条命令。如下:

history 5  526  ls   527  clear  528  ls -a  529  charm &  530  date
  • 执行History下的命令的方法
    • !n 这个n表示序号,假如你想重新执行第528条命令ls -a,那么你可以使用!528
    • !! 这将会重新执行上一条命令
    • !?String? 这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。比如你输入 !?cl? 那第527条命令clear就会执行。
    • fc n 这个n表示某个历史命令的序号,这将打开一个文本编辑窗口并显示这条命令。然后你可以编辑修改这条命令,让它满足你的需要。当你退出这个编辑窗口时,该命令就会得到执行。

3.解决command not found

如果新装的系统,运行一些很正常的诸如:ifconfig shutdown,fdisk的命令时,悍然提示:bash:command not found。那么首先就要考虑root 的$PATH里是否已经包含了这些环境变量(可能是安装的时候选择了“最小安装”,导致一些功能没开启)。 主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。 这四个目录里主要存放的东东:
  • /bin:

    bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

  • /usr/bin:
    主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。

  • /sbin:
    主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。

  • /usr/sbin:
    放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。

  • 可以在家目录下查看.bash_profile里的PATH。如果是:PATH=PATH:HOME/bin则需要添加成如下:

    • PATH=PATH:HOME/bin:/sbin:/usr/bin:/usr/sbin
      应该就可以运行了
  • 我们还可以修改 profile文件, 将 /sbin目录添加到 PATH 里, 这样不论在个目录里, 都不用输入绝对路径就可以运行这个此命令, 方法如下:

    • 打开用 root权限编辑 /etc/profile 文件:

    • vim /etc/profile

    • 在此文件的最后一行加入下面代码, 然后保存文件并退出.

    • export PATH=$PATH:/sbin

    • 在终端中运行下列命令:

    • source /etc/profile

    • 然后再输入 “ifconfig” 就可以直接运行此命令了.

  • 还可以通过输入 ifconfig 命令的绝对路径, ifconfig在是/sbin这个目录下面, 所以在终端输入下列命令就可以运行此命令:

/sbin/ifconfig

4.mkfs.xfs 命令找不到的解决方法

-对硬盘进行格式化:

# mkfs.xfs /dev/sdb1  

系统显示:

 mkfs.xfs error: command not found. 

可能是系统不完全安装
运行 which mkfs 查看mkfs的命令目录

# which mkfs/sbin/mkfs# ls -la /sbin/mkfs*-rwxr-xr-x. 1 root root  10336 86 2017 /sbin/mkfs-rwxr-xr-x. 1 root root  26208 86 2017 /sbin/mkfs.cramfs-rwxr-xr-x. 5 root root  68960 813 2017 /sbin/mkfs.ext2-rwxr-xr-x. 5 root root  68960 813 2017 /sbin/mkfs.ext3-rwxr-xr-x. 5 root root  68960 813 2017 /sbin/mkfs.ext4-rwxr-xr-x. 5 root root  68960 813 2017 /sbin/mkfs.ext4devlrwxrwxrwx. 1 root root      7 8月   2 18:06 /sbin/mkfs.msdos -> mkdosfslrwxrwxrwx. 1 root root      7 8月   2 18:06 /sbin/mkfs.vfat -> mkdosfs

发现没有 mkfs.xfs
需要安装 xfsprogs rpm包

#yum -y install xfsprogs

就ok了

5.Set uid, gid,sticky bit的三个权限的详细说明

  • 一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.

  • 如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.

  • setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

  • setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

  • sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于

  • 该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

  • 下面说一下如何操作这些标志:

  • 操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

1) chmod u+s temp   ##为temp文件加上setuid标志. (setuid 只对文件有效)chmod g+s tempdir   ##为tempdir目录加上setgid标志 (setgid 只对目录有效)chmod o+t temp      ##为temp文件加上sticky标志 (sticky只对文件有效)2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如4666, 2777等. 这一组八进制数字三位的意义如下,abca -- setuid位, 如果该位为1, 则表示设置setuidb -- setgid位, 如果该位为1, 则表示设置setgidc -- sticky位, 如果该位为1, 则表示设置sticky设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如rwsrw-r–    ##表示有setuid标志rwxrwsrw-   ##表示有setgid标志rwxrw-rwt   ##表示有sticky标志那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)chmod 4777是设sidchmod 2777是设置gidchmod 1777是设sticky
  • 常用操作

    • 找出所有危险的目录(设置目录所有人可读写却没有设置sticky位的目录)

      • find / -perm -0007 -type d
    • 找出所有设置了suid的文件

      • find / -perm -4000 -type f
  • 补充: (angelus)

    • SGID位,文件也是可以被设置为SGID的,比如一个可执行文件为赋予SGID,它就具有所有组的特权,任意存取所有组所能使用的系统资源,复制到拥有SGID位目录的文件,只有在复制时加上-p参数,才能保留原来的组群设置

    • 还有sticky-bit权限,简单说就是文件的其他用户即使有写权限也无法删除.移动等,只能被文件所有者删除,移动等

    • 在系统中典型例子就是/tmp(系统临时文件目录)避免不守法用户恣意乱删其他用户放置的文件

    • SUID占用属主x(执行)位,SGID占用组x位,sticky-bit占用其他x位,如果该位有x权限,就用小写s,没有就用大写S

    • 用数值设定特殊权限,需要4位8进制数,第一个表示特殊权限,后三位表示基本权限

    • 只说第一位8进制代表权限

0: 不设置特殊权限 1: 只设置sticky 2 : 只设置SGID 3: 只设置SGID和sticky 4 : 只设置SUID 5 : 只设置SUID和sticky 6 : 只设置SUID和SGID 7 : 设置3种权限

“为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份。”

chmod u+s 就是给某个程序的所有者以suid权限,可以像root用户一样操作。

变更文件或目录的权限。

在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:

    u:User,即文件或目录的拥有者。  g:Group,即文件或目录的所属群组。  o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。  a:All,即全部的用户,包含拥有者,所属群组以及其他用户。  有关权限代号的部分,列表于下:  r:读取权限,数字代号为"4"。  w:写入权限,数字代号为"2"。  x:执行或切换权限,数字代号为"1"  -:不具任何权限,数字代号为"0"。  s:特殊?b>功能说明:变更文件或目录的权限。

6.Linux下su与su -命令的本质区别

su 命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su - 命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。
原创粉丝点击