一、基础入门
理解shell是多种命令的融合,因此首先学习linux的命令。而命令本身有成千上万,同时参数也很多,因此学会如何查找
使用命令的方法。
1.查找帮助:
#man <command>
2.多条命令同时执行
#ls -l ; date ;w
利用分号来分割,三条命令会逐一执行
[root@sky home]# ls ;date;w
jbb_spec os_iso sky spec testscrip
2016年 05月 11日 星期三 20:10:40 CST
20:10:40 up 14 min, 2 users, load average: 0.05, 0.08, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 19:57 ?xdm? 1:41 0.09s gdm-session-wor
root pts/0 :0 20:09 0.00s 0.05s 0.01s w
3.执行shell脚本
1)#sh test.sh
2)首先赋予执行的权限,再执行
#chmod +x test.sh
#./test.sh
二、用户管理和常用命令
2.1.1用户常用管理命令
linux由多用户组成,不同的用户的角色通过UID来进行识别,即说明用户的UID是唯一的。
1)添加用户useradd
使用中#useradd [options] [username]
#useradd test
执行完该命令后会在/etc/passwd文件中添加一行数据,利用tail -l命令查看信息如下加粗部分则为新建用户。[root@sky home]# tail -l /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:985:980::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
dovenull:x:984:979:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/var/lib/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sky:x:1000:1000:sky:/home/sky:/bin/bash
<strong>test:x:1001:1001::/home/test:/bin/bash</strong> #新建的test用户
<strong>#查看加密后的用户</strong>
[root@sky home]# tail -l /etc/shadow
gdm:!!:16899::::::
gnome-initial-setup:!!:16899::::::
avahi:!!:16899::::::
sshd:!!:16899::::::
dovecot:!!:16899::::::
dovenull:!!:16899::::::
oprofile:!!:16899::::::
tcpdump:!!:16899::::::
sky::16899:0:99999:7:::
test:!!:16932:0:99999:7:::
#查看home目录下是否新建了
[root@sky home]# ls /home/
jbb_spec os_iso sky spec <strong> test</strong> testscrip
由上查看,可以看到test的UID为1001
通过/etc/shadow可以看到test的密码,然而由于我们未设置密码,因此此处显示!!
最后,我们通过查看/home目录发现已经创建成功了test用户的目录。
useradd中各个options的用法如下表所示
选项 | 意义 |
-g | 用户添加时指定的用户私有组,不添加该-g则自动创建与用户帐号同名的组 |
-G | 用户添加附属组 |
-D | 显示或更改默认的 useradd 配置 |
-d | 新账户的主目录 |
-m | 创建用户的主目录 |
-u UID | 新账户的用户UID |
2)修改账户usermod
#usermod [options] [username]
usermod常用的选项如下
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
由上述表述中,usermod也可以用来修改密码,但是不建议这么做,这么做的结果就是/etc/shadow为明文。
一般修改密码使用passwd
#修改密码为123456
[root@sky home]# usermod -p 123456 test
#查看秘密发现其为明文
[root@sky home]# tail -l /etc/shadow
gdm:!!:16899::::::
gnome-initial-setup:!!:16899::::::
avahi:!!:16899::::::
sshd:!!:16899::::::
dovecot:!!:16899::::::
dovenull:!!:16899::::::
oprofile:!!:16899::::::
tcpdump:!!:16899::::::
sky::16899:0:99999:7:::
<span style="color:#FF0000;"><strong>test:123456:16932:0:99999:7:::
</strong></span>
3)删除帐号userdeluserdel只有一个选项-r,表示删除用户的同时删除/home/下的用户目录
<pre name="code" class="plain">[root@sky home]# userdel test2
<strong>#即使删除用户/home下的test2目录仍然存在</strong>
[root@sky home]# ls
jbb_spec os_iso sky spec test test2 testscrip
[root@sky home]# userdel -r test
<strong>#添加-r选项后则/home/test目录则一起被删除</strong>
[root@sky home]# ls
jbb_spec os_iso sky spec test2 testscrip
4)帐号口令管理——passwd
利用passwd [option] [username]来进行添加或修改密码。
修改密码一般要求输入两次最后则完成
[root@sky home]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2.1.2 用户组管理常用命令
用户组和用户的关系是多对多的。
用户组的管理命令:groupadd、groupmod、groupdel
由命令可见,其类似于用户的操作命令分为添加、修改、删除。
[root@sky home]# groupadd -g 6666 test2
[root@sky home]# tail -l /etc/group
slocate:x:21:
avahi:x:70:
sshd:x:74:
dovecot:x:97:
dovenull:x:979:
oprofile:x:16:
tcpdump:x:72:
sky:x:1000:
test:x:1001:
<strong>test2:x:6666:</strong>
[root@sky home]# groupadd test3
[root@sky home]# tail -l /etc/group
avahi:x:70:
sshd:x:74:
dovecot:x:97:
dovenull:x:979:
oprofile:x:16:
tcpdump:x:72:
sky:x:1000:
test:x:1001:
test2:x:6666:
<strong>test3:x:6667:</strong>
由上可见,groupadd添加强制UID选项后,则有自己的GID如上test2的6666;而不添加-g选项则结果的UID则为上一个GID加1,为6667
同理,groupmod和groupdel相似
2.2 文件和目录操作
文件查看以及目录操作为常用的操作,此处列出常用的命令
1)ls ===list 列出信息,下面列出常用的选项
选项 | 意义 |
-a | 显示所有项目,包括隐藏文件 |
-A | 比-a少'.'和'..'两个 |
-c | 按照时间修改时间显示 |
-dl | 得到目录本身的详细信息 |
-l | 详细信息,常用 |
-m | 文件以逗号区分进行显示 |
-n | 和-l相似,把用户和组换成ID |
-t | 按时间修改顺序 |
常用的ls -l。显示详细信息
2)文件复制——cp
建议使用-i选项来避免原来文件损坏
-a:表示复制时保存源文件的各种属性
-r:表示复制文件夹
3)文件移动或重命名-mv
4)删除命令——rm
5)创建目录——mkdir
#mkdir -p /home/test/test32
-p选项可以创建多层路径
-m:制定权限
给home目录777的权限
#mkdir -m 777 /home
6)切换目录——cd
#切换到上次访问目录
#cd -
#切换到上级目录
#cd ..
7)文件权限问题
7:rwx用二进制表示111即7
rwx:读、写、执行权限
#chmod /chown/
8)文件查找
示例:查找当前文件夹下,以ra开头,权限为755的文件,主要使用print打印
[root@sky script_test]# find . -name 'ra*' -perm 755 -print
./config/shell/rate.sh
./rate.sh
使用-exec选项可以在找到文件后执行其后面的内容,如下面的cat操作
[root@sky script_test]# find /etc/ -type f -name 'neoky*' -exec cat {} \;
NeoKylin Linux Advanced Server release V7Update2 (Potassium)