Linux学习笔记:用户及用户组

Linux学习笔记:用户及用户组
Linux学习笔记:用户及用户组

Linux学习笔记:用户及用户组

来自:标点符的《Linux学习笔记:用户及用户组》链接:https://www.360docs.net/doc/5515311641.html,/linux-user-group.html(点击尾部阅读原文前往)

Linux用户只有两个等级:root及非root。Linux中还有一部分用户,如:apache、mysql、nobody、ftp等,这些也都是非root用户,即普通用户。Linux的权限实际是上不同用户所能访问的文件的不同产生的假象。而这些假象的造成,还要涉及到另外一个概念:用户组一个用户至少要属于一个用户组一个用户可以属于多个用户组

用户组存在的原因主要还是方便分配权限。而用户本身和权限的差别不是很大,各个用户之间主要的不同是:是否拥有密码home目录(普通用户可以有一个以自己用户名命名的home目录,存放的地址是/home/username,root用户的home目录是:/root)shell

像nobody这样用来执行Nginx的工作进程的用户,一般不分配密码和shell,甚至连home目录都没有。

为什么不分配密码?如果设置了密码,程序无法自动使用。由于不会有人使用这个用户登录系统,所以就没有必要分配shell。(备注:其实严格上说是有分配shell,只是分配的shell 是/sbin/nologin这个特殊的shell,没有任何其他功能,主要

功能是防止你登陆。)

所有用户都可以通过查看/etc/passwd查看。以下为我的系统中的用户信息:root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

avahi-autoipd:x:170:170:Avahi IPv4LL

Stack:/var/lib/avahi-autoipd:/sbin/nologin

systemd-bus-proxy:x:999:997:systemd Bus

Proxy:/:/sbin/nologin

systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

polkitd:x:997:995:User for polkitd:/:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated

SSH:/var/empty/sshd:/sbin/nologin

qw:x:1000:1000:qw:/home/qw:/bin/bash

文件的每一行代表着一个用户,每一行由冒号“:”分割成7个字段,其结构如下:用户名:密码:UID:GID:用户全名:home目录:shellUID:UID 0 root用户UID 1~999 是占坑用户,即一写无法登录的用户(以前是系统是1~499,最近刚改)UID 1000 以上是正常的可登录用户

GID:前面说了一个用户可以属于多个用户组,但这里只有一个,表示的是专职用户组,即一个用户只有一个专职用户组,其属于其他用户组的关联关系存储在/etc/group 文件中。其中比较特殊的是密码字段,统一由x代替了,看

/etc/passwd就知道一开始Linux是将密码存在这个文件里的,由于考虑到/etc/passwd可以被所有人查看,所以将统一存储到/etc/shadow文件(只有root权限可以访问)中,具体数据如下:

root:$6$yp9k7rTFRX76aFP/$RpQ0Q6SIFpKn5jA3vEmpzs MdMDqDjmKQY3qCcVyuVNa1dTOOwJqC0SWCxqsNrZg

YiBf5Og94cDR97hGCfd0OX1::0:99999:7:::

bin:*:16659:0:99999:7:::

daemon:*:16659:0:99999:7:::

adm:*:16659:0:99999:7:::

lp:*:16659:0:99999:7:::

sync:*:16659:0:99999:7:::

shutdown:*:16659:0:99999:7:::

halt:*:16659:0:99999:7:::

mail:*:16659:0:99999:7:::

operator:*:16659:0:99999:7:::

games:*:16659:0:99999:7:::

ftp:*:16659:0:99999:7:::

nobody:*:16659:0:99999:7:::

avahi-autoipd:!!:17031::::::

systemd-bus-proxy:!!:17031::::::

systemd-network:!!:17031::::::

dbus:!!:17031::::::

polkitd:!!:17031::::::

tss:!!:17031::::::

postfix:!!:17031::::::

sshd:!!:17031::::::

qw:$6$W1QYF2/.vMB7BPm/$n7GV1D07lcVDhsyGS0xUe

68loRTfmFj2vT4TkELQgQGfqDxNn2fGzBYUYj4CgZMhai NSvvmhW4gubpQxBhr3H0::0:99999:7:::其结构如下:登录名:加密过的密码(*代表此用户不能用来登录):密码最近更改日期(linux时间戳):最少密码天数(0代表随时可更改):最多密码天数:过期前几天提醒用户:密码不可用期限:账户过期日期:保留位再来看看/etc/group文件:root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

wheel:x:10:

cdrom:x:11:

mail:x:12:postfix

man:x:15:

dialout:x:18:

floppy:x:19:

tape:x:30:

video:x:39:

ftp:x:50:

lock:x:54:

audio:x:63:

nobody:x:99:

users:x:100:

utmp:x:22:

utempter:x:35:

ssh_keys:x:999:

avahi-autoipd:x:170: input:x:998:

systemd-journal:x:190: systemd-bus-proxy:x:997: systemd-network:x:996: dbus:x:81:

polkitd:x:995:

dip:x:40:

tss:x:59:

postdrop:x:90:

postfix:x:89:

qw:x:1000:qw其结构如下:组名:用户组密码:GID:用户组内的用户名正常的使用中很少会用到用户组密码,其存储在/etc/gshadow中。

用户组文件比较特特殊的是“”用户组内的用户名”,其实就是这个组下的用户列表,每个用户之间用逗号“,”分割;本字段可以为空;如果字段为空表示用户组为GID的用户名普通用户的权限非常的低,就连在系统里安装软件的权限都没有,很多时候可以临时给普通用户以特权,就是sudo(在命令前添加sudo)。比如:sudo cat /etc/shadow完成后需要您输入root的密码,这样就可以假借root身份了,centos默认普通用户是没有sudo权限的,这与主要以桌面版为主的Ubuntu和Fedora不同,如需给予用户root特权,就需要更改/etc/sudoers文件,修改内容。## Sudoers allows particular users to run various commands as

## the root user, without needing the root password.

##

## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular## users or groups.

##

## This file must be edited with the 'visudo' command.

## Host Aliases

## Groups of machines. You may prefer to use hostnames (perhaps using

## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2

# Host_Alias MAILSERVERS = smtp, smtp2

## User Aliases

## These aren't often necessary, as you can use regular groups

## (ie, from files, LDAP, NIS, etc) in this file - just

use %groupname

## rather than USERALIAS

# User_Alias ADMINS = jsmith, mikem

## Command Aliases

## These are groups of related commands...

## Networking

# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,

/usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,

/sbin/mii-tool

## Installation and management of software

# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date,

/usr/bin/yum

## Services

# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop,

/usr/bin/systemctl reload, /usr/bin/systemctl restart,

/usr/bin/systemctl status, /usr/bin/systemctl enable,

/usr/bin/systemctl disable

## Updating the locate database

# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage

# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk,

/sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

## Delegating permissions

# Cmnd_Alias DELEGATING = /usr/sbin/visudo,

/bin/chown, /bin/chmod, /bin/chgrp

## Processes

# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill,

/usr/bin/kill, /usr/bin/killall

## Drivers

# Cmnd_Alias DRIVERS = /sbin/modprobe

# Defaults specification

#

# Disable 'ssh hostname sudo <cmd>', because it will show the password in clear.

# You have to run 'ssh -t hostname sudo

<cmd>'.

#

Defaults requiretty

#

# Refuse to run if unable to disable echo on the tty. This setting should also be # changed in order to be able to use sudo without a tty. See requiretty above.

#

Defaults !visiblepw

#

# Preserving HOME has security implications since many programs

# use it when searching for configuration files. Note that HOME

# is already set when the the env_reset option is enabled, so

# this option is only effective for configurations where either

# env_reset is disabled or HOME is present in the

env_keep list.

# Defaults always_set_home

Defaults env_reset

Defaults env_keep = 'COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS' Defaults env_keep = 'MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE'

Defaults env_keep = 'LC_COLLATE

LC_IDENTIFICATION LC_MEASUREMENT

LC_MESSAGES'

Defaults env_keep = 'LC_MONETARY LC_NAME

LC_NUMERIC LC_PAPER LC_TELEPHONE'

Defaults env_keep = 'LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY'

#

# Adding HOME to env_keep may enable a user to run unrestricted

# commands via sudo.

#

# Defaults env_keep = 'HOME' Defaults

secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what

software on ## which machines (the sudoers file can be shared between multiple ## systems).

## Syntax:

##

## user MACHINE=COMMANDS

##

## The COMMANDS section may have other options added to it.

##

## Allow root to run any commands anywhere root ALL=(ALL) ALL

## Allows members of the 'sys' group to run networking, software, ## service management apps and more.

# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

## Same thing without a password

# %wheel ALL=(ALL) NOPASSWD: ALL

## Allows members of the users group to mount and unmount the

## cdrom as root

# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount

/mnt/cdrom

## Allows members of the users group to shutdown this system

# %users localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

#includedir /etc/sudoers.d给没有用户添加sudo特权,只需参照## Allow root to run any commands anywhere

root ALL=(ALL) ALL添加如下:## Allow root to run any commands anywhere

root ALL=(ALL) ALL

qw ALL=(ALL) ALL如果要给某个用户组添加sudo 特权则为:(与给用户不同的是多了一个%)## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL另外一种方式是添加不需要输入root密码即有root权限的用户,添加方法如下:qw

ALL=(ALL) NOPASSWD:ALL另外还可以设定到底有哪些执行权限,具体的规则如下:(具体可看sudoers配置文件详解)授权用户主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否

需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]......另外默认情况下第一次使用sudo时,需要输入root密码,如果5分钟内再次执行sudo则无需再输入密码,超过5分钟则要重新输入。这个时间也是可以进行配置的,在sudoers中添加如下内容即可:ts:用户名timestamp_timeout=20其中单位是分钟,如果设为0,则表示每次都要输入密码。

讲解了这么多,接下来学习下常用的shell命令:

useradd命令用于Linux中创建的新的系统用户。useradd

可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。语法:useradd(选项)(参数)

选项:-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中

-d<登入目录>:指定用户登入时的启始目录

-D:变更预设值

-e<有效期限>:指定帐号的有效期限

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号-g<群组>:指定用户所属的群组

-G<群组>:指定用户所属的附加群组

-m:自动建立用户的登入目录

-M:不要自动建立用户的登入目录

-n:取消建立以用户名称为名的群组

-r:建立系统帐号

-s:指定用户登入后所使用的shell

-u:指定用户id案例:sudo useradd username -m -s

/sbin/nologin -d /home/username -g groupname其中:-s /sbin/nologin 设置不能登陆-d 设置用户主目录-g 用户组-m 创建用户目录参考资料:

https://https://www.360docs.net/doc/5515311641.html,/index.php/Users_and_groups_(% E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)htt ps://https://www.360docs.net/doc/5515311641.html,/index.php/Sudo_(%E7%AE%80%E 4%BD%93%E4%B8%AD%E6%96%87)http://man.linuxde .net/

●本文编号106,以后想阅读这篇文章直接输入106即可。●输入m可以获取到文章目录推荐《15个技术类公众微信》

LINUX实验报告

实验报告 ( 2014/ 2015 学年第一学期) 课程名称操作系统A 实验名称文件系统 实验时间2014 年12 月8 日指导单位计算机学院计算机科学与技术系 指导教师徐鹤 学生姓名王生荣班级学号B12040809 学院(系) 计算机学院专业软件工程

实验名称文件系统指导教师徐鹤 实验类型设计实验学时 2 实验时间2014.12.08 一、实验目的和要求 1. 学习LINUX系统下对文件进行操作的各种命令和图形化界面的使用方法。 2. 深入学习和掌握文件管理系统的基本原理和LINUX等操作系统下常用的系统调用,编写一个使用系统调用的例程。 3.实现一个文本文件的某信息的插入和删除 4.实现一个记录文件的某记录的插入和删除 二、实验环境(实验设备) Windows XP + VMWare + RedHat Linux 8

三、实验过程描述与结果分析 1. 目录/proc下与系统相关的文件和目录 (1) /proc/$pid/fd:这是一个目录,该进程($PID号码进程)每个打开的文件在该目录下有一个对应的文件。 例如:#ls /proc/851/fd 0 1 2 255 这表示,851号进程目前正在使用(已经打开的)文件有4个,它们的描述符分别是0、1、2、255。其中,0、1、2 依次分别是进程的标准输入、标准输出和标准错误输出设备。 (2)/proc/filesystems:该文件记录了可用的文件系统类型。 (3)/proc/mounts:该记录了当前被安装的文件系统信息 例如:#cat /proc/mount (4)/proc/$pid/maps:该文件记录了进程的映射内存区信息。 例如:#cat /proc/851/maps 2.常用命令讲解 ls 命令 用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项。例如: $ ls -liah * 22684 -rw-r--r-- 1 bluher users 952 Dec 28 18:43 .profile

linux操作系统实验报告

LINUX操作系统实验报告 姓名 班级学号 指导教师 2011 年 05月 16 日 实验一在LINUX下获取帮助、Shell实用功能 实验目的: 1、掌握字符界面下关机及重启的命令。 2、掌握LINUX下获取帮助信息的命令:man、help。 3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替

换与别名,管道及输入输出重定向。 实验容: 1、使用shutdown命令设定在30分钟之后关闭计算机。 2、使用命令“cat /etc/cron.daliy”设置为别名named,然后再取消别名。 3、使用echo命令和输出重定向创建文本文件/root/nn,容是hello,然后再使用追加重定向输入容为word。 4、使用管道方式分页显示/var目录下的容。 5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。 实验步骤及结果: 1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入 命令Shutdown -h 30 2、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。查看目录下的容,只要在终端输入命令即可。取消更改的名称用命令unalias 命令:在命令后输入要取消的名称,再输入名称。 3.输入命令将文件容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入容为word。步骤与输入容HELLO一样,然后用命令显示文件的全部容。 4.使用命令ls /etc显示/etc目录下的容,命令是分页显示。“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。

linux实验报告

实验一 实验名称:Linux 基本命令的使用 实验时间:2学时 实验目的:熟练使用Linux字符界面、窗口系统的常用命令。 实验内容 (一)Linux操作基础 1.重新启动linux或关机(poweroff,shutdown,reboot,init 0,init 6) 2.显示系统信息(uname),显示系统日期与时间,查看2014年日历(date,cal) ①uname:查看系统与内核相关信息 uname -asrmpi 参数: -a :所有系统相关的信息; -s: 系统内核名称; -r: 内核的版本; -m:本系统的硬件名称,如i686或x86_64; -p: CPU的类型,与-m类似,只是显示的是CPU的类型; -i :硬件的平台(ix86). ②date:显示日期的命令 ③cal:显示日历 单独cal:列出当前月份的日历 cal 2014:列出2014年的日历 cal 5 2014:列出2014年五月的目录 3.使用帮助命令(man,help) ①man:是manual(操作说明)的简写,是在线帮助系统 man后跟某个命令就会详细说明此命令,例如:man man就会详细说明man 这个命令的用法; ②help:也是帮助命令,一般会在命令后,例如:cd --help 就会列出cd命令的使用说明。 4.查看当前登陆用户列表(who),显示当前用户(whoami) ①who:显示目前已登录在系统上面的用户信息; ②whoami:查询当前系统账户 5.建立一个新用户mytest,设定密码(useradd,passwd) ①useradd mytest(建立新用户mytest);

Linux实验报告

燕山大学 Linux技术上机实验指导

实验一Linux系统安装与简单配置 一、实验目的 1.掌握Linux系统安装的分区准备。 2.掌握Linux系统的安装步骤。 3.掌握Linux系统分区的挂载和卸载。 4.掌握Linux系统的启动和关闭操作。 二、实验内容 1.安装VMware虚拟机,设置光盘驱动器,为Linux系统安装做准备。2.在虚拟机下安装Linux操作系统(如Ubuntu桌面版本)。 3.配置Linux系统运行环境。 4.利用空闲分区创建新的Linux系统分区。 5.将新的Linux系统分区挂载到系统中;卸载新挂载的分区,重新挂载到目录树中的其他位置。 三、主要的实验步骤 1.制定安装系统的分区计划。 2.配置光驱引导镜像文件iso,启动系统,开始安装过程。 3.根据安装计划,对磁盘空间进行分区设置。 4.根据系统安装指导,完成Linux系统的安装过程。 5.安装成功后,退出系统,重新启动虚拟机,登陆Linux操作系统。6.对Linux系统进行配置,如网络设备等。 7.利用磁盘使用工具和mount,将新创建的Linux系统分区挂载到系统中。将新挂载的分区卸载,并重新挂载到目录树的其他位置。

实验二Linux常用命令使用 一、实验目的 1.掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.熟练使用man命令。 二、实验内容 1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。2.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 3.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 4.利用man命令显示date、echo等命令的手册页。 5.显示系统中的进程信息。 三、主要实验步骤 1.登陆进入系统,修改个人密码。 2.使用简单命令:date、cal、who、echo、clear等,了解Linux命令格式。

LINUX的FTP实验报告

LINUX的FTP实验报告 实验需求:为了实现文件传输,共享资源 实验环境:一台centos和一台XP客户机 实验步骤:首先打开centos再将安装光盘挂载上,输入命令“rpm -qa|grep vsftpd”查看是否有此软件,如果没有进入到光盘的挂载目录,然后输入命令“rpm -ivh vsftpd(然后使用补全)”,如图1所示,安装软件完成 图1 下面我们到配置文件中设置一下,输入命令“vi /etc/vsftpd/”就出现如图2所示,用末行模式加上行号

图2 我们将文件中的第27和31行启用,就是把前面的#删除即可,然后在31行下面写上“anon_other_write_enable=YES”这一行的意思是给匿名用户删除权限,第27行是给匿名用户上传权限,31行是给匿名用户创建、修改文件夹权限,如图3所示,修改完成后保存退出

图3 然后我们再到“/var/ftp/”下将pub文件夹的其它用户权限设为读、写、执行,输入命令“chmod o+w pub”如图4所示 图4 下面我们将两台虚拟机网段设置成3,将centos的IP设置为将XP的IP设置为如图5-1,5-2所示,都点击确定完成设置

图5-1

图5-2 然后我们在XP上测试一下网络是否畅通,如图6所示网络畅通 图6

下面我们到centos上启动FTP服务,输入命令“service vsftpd restart”, ,我们启动成功,下面我们到XP上测试,我们的设置是否生效,如图7所示,我们访问成功 图7 我们测试一下上传和删除功能,如图8-1,8-2所示,设置生效,我们实验成功

Linux 及其使用环境实验报告

计算机语言与程序设计上机实验报告 学号:姓名:所在系:班级: 实验名称:实验1 Linux 及其使用环境实验日期 实验指导教师实验机房及机号 ------------------------------------------------------------------------------------------------------ 1.实验目的 (1)1、了解UNIX的命令及使用格式。 (2)熟悉UNIX/LINUX的常用基本命令。。 2.实验内容 (1)熟悉UNIX/LINUX的常用基本命令如ls、who、w、pwd、ps、pstree、top 等。 (2)使用passwd命令,date命令,uname命令等显示机器及环境相关信息(3)使用whoami命令找到用户名。然后使用who -a命令来看看你的用户名和同一系统其他用户的列表 (4)使用目录相关命令熟悉目录操作,文件操作,掌握相对路径及绝对路径(5)学习后台命令运行 3. 实验步骤 (1)显示目录文件ls 命令:在**目录下,运行ls –la, 运行结果为 (1)显示目录文件ls 命令:在**目录下,运行ls –la,运行结果为

(2)pwd命令的使用,创建目录:mkdir命令: 结果为 (3)查看文件内容:cat命令;

(4)删除目录:rmdir命令 (5)显示目录内容:ls命令

(6)改变工作目录:cd命令 (7)删除文件:rm命令

(8)复制文件或目录:cp命令; (9)移动或更改文件,目录名称:mv命令

(10)查看系统中的使用者:who命令 (11)改变文件或目录的存取权限:chmod命令

实验四-同步与互斥-Linux实验报告

实验四-同步与互斥-Linux实验报告

实验四同步与互斥 【实验目的和要求】 1、掌握进程(线程)的同步与互斥。 2、掌握生产者消费者问题的实现方法。 3、掌握多线程编程方法。 【实验内容】 实现生产者消费者问题 1、有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)。 2、仓库中每次只能入一个(生产者或消费者)。 3、仓库中可存放产品的数量最多10个,当仓库放满时,生产者不能再放入产品。 4、当仓库空时,消费者不能从中取出产品。 5、生产、消费速度不同。 【实验原理】 1、信号量mutex提供对缓冲池访问的互斥要求并初始化为1,信号量empty和 full分别用来表示空缓冲项和满缓冲项的个数,信号量empty初始化为n,信号量full初始化为0。 2、定义如下结构及数据: 定义缓冲区内的数据类型:typedef int buffer_item; 缓冲区:buffer_item buffer[BUFFER_SIZE];

对缓冲区操作的变量:int in,out; 信号量mutex提供了对缓冲池访问的互斥要求:pthread_mutex_t mutex; 信号量empty和full分别表示空缓冲顶和满缓冲顶的个数:sem_t empty,full; 可以设定生产者的生产速度及消费者的消费速度:int pro_speed,con_speed; 对缓冲区操作的自增函数:#define inc(k) if(k < BUFFER_SIZE) k = k+1;else k=0 3、并定义了如下实现问题的函数模块: 将生产的产品放入缓冲区: int insert_item(buffer_item item) 从缓冲区内移走一个产品: int remove_item(buffer_item *item) 生产者进程:void *producer(void *param) 消费者进程:void *consumer(void *param) 生产者结构进程消费者结构进程 【程序代码】 //sx.c #include

实验一进程创建 Linux实验报告

实验一进程创建 【实验目的和要求】 1、1.了解进程的概念及意义; 2.了解子进程和父进程; 3.掌握创建进程的方法。 【实验内容】 1、1.子进程和父进程的创建; 2.编写附件中的程序实例; 3.撰写实验报告。 【实验原理】 1、原型: #include pid_t fork(void); 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。fork函数创建子进程的过程为:使用fork函数得到的子进程是父进程的一个复制品,它从父进程继承了进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端,而子进程所独有的只有它的进程号、资源使用和计时器等。通过这种复制方式创建出子进程后,原有进程和子进程都从函数fork返回,各自继续往下运行,但是原进程的fork返回值与子进程的fork返回值不同,在原进程中,fork返回子进程的pid,而在子进程中,fork返回0,如果fork返回负值,表示创建子进程失败。 子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。例如,子进 程获得父进程数据空间、堆和栈的副本。注意,这是子进程所有用的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。 2、原型: #include pid_t vfork(void); vfork函数的调用序列和返回值与fork相同,但两者的语义不同。vfork函数用于创建一个新进程,而该进程的目的是exec一个新程序。vfork不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec,它在父进程的空间中运行。vfork保证子进程先运行,在它调用exit之后父进程才可能被调度运行,当子进程调用这两个函数中的任意一个时,父进程会恢复运行。 【程序代码】 1、1_fork.c

Linux实验报告

华北科技学院计算机系综合性实验 实验报告 课程名称 Linux操作系统 实验学期 2018 至 2019 学年第二学期学生所在院部计算机学院 年级 16级专业班级信管B16 班 学生姓名学号 成绩评定: 1、工作量: A(),B(),C(),D(),F( ) 2、难易度: A(),B(),C(),D(),F( ) 3、答辩情况: 基本操作: A(),B(),C(),D(),F( ) 代码理解: A(),B(),C(),D(),F( ) 4、报告规范度:A(),B(),C(),D(),F( ) 5、学习态度: A(),B(),C(),D(),F( ) 总评成绩: 指导教师:兰芸 计算机系制

《Linux操作系统》课程综合性实验报告 开课实验室:基础一2019年5月22日 实验题目《Linux操作系统综合实验》——SHELL编程应用 一. 实验目的: 1、掌握Linux操作系统系统管理的基本方法; 2、提出一系列常见综合性问题,锻炼学生解决实际问题的能力。 二. 实验设备及环境: PC兼容机、ubuntu kylin操作系统 三. 实验内容及要求: 实验内容: 某系统管理员需每天做一定的重复工作,请按照下列要求编制一个解决方案,并编程实现该方案。 (1)在下午6 :30删除home/stu/abc目录下的全部子目录和全部文件;(2)从早8:00~下午6:00每小时把home/stu /xyz目录下x1文件的全部数据加入到home/stu /backup目录下的bak01.txt文件内; (3)每逢星期一下午5:50将/home/stu /data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz; (4)在下午5:55将U盘卸载。 四、程序及调试步骤 (1)在下午6:30删除home/stu/abc目录下的全部子目录和全部文件;实验步骤: 1.在home/stu/目录下新建abc/文件夹,并在其中新建一个文件夹 和两个文档,如图所示:

linux实验报告

中南大学 Linux系统实验报告

目录 实验一····································3~9 实验二···································10~16 实验三··································17~17

实验一 Shell程序设计 [ 实验目的 ] 理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。 [ 实验内容 ] 考勤模拟Shell程序设计 用shell设计一个考勤模拟程序,实现如下功能选择界面: 1.上班签到 2.下班签出 3.缺勤信息查阅 4.退出 考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。 如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。 如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。 如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。 用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。 一、实验分析 本实验是shell程序设计,主要目的是理解shell程序的设计方法以及熟悉shell程序的编辑、运行、调试方法与过程。 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 本实验要求设计一个考情模拟的shell程序,按照题目要求,可将整个程序分为五个部分:main函数以及四个功能函数,及一个功能对应一个函数。

linux实验报告

学生实验报告 (理工类) 课程名称: Linux操作系统专业班级:12软件工程(Z)学生学号: 1205107014 学生姓名:陈爽 所属院部:软件工程学院指导教师:李莉 2014——2015 学年第 2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:RedHat Linux9.0的安装与配置实验学时: 2 实验地点: A205 实验日期: 2015.3.2 实验成绩: 批改教师:李莉批改时间:

一、实验目的和要求 1.熟悉和掌握Red Hat Linux9.0服务器的安装与配置; 2.掌握inux的基本命令使用和功能。 二、实验内容 1.利用PC虚拟机来安装与配置Red Hat inux9; 2.完成安装配置后掌握一些界面及必要的inux命令使用和功能。 三、实验过程与步骤 1)安装虚拟机: (1) 启动VMware Workstation ; (2) 单击“File”—“New”—“virtual machine”,出现新建虚拟机的欢迎界面,点击“next”;

linux实验报告(2)

Linux实验报告 黄芳恺 姓名 班级软件工程114 学号8 指导教师阮越

目录 实验一 Linux基本命令的使用 实验二简单Shell程序设计 实验三 Linux下简单C程序设计与文件操作实验四 Linux下进程操作与进程间通信 实验五 Linux线程的使用 实验六 Linux进程间的IPC 实验七 Linux下访问Mysql数据库 实验八 Linux下网络编程 练习题:grep、bash、生产者消费者

实验一 Linux基本命令的使用 1、实验目的 学习和掌握Linux的基本命令。 2、实验内容和步骤 步骤1:以user_login用户身份并使用telnet登录Linux服务器,按照提示创建自己的账户和口令。 步骤 2:使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。 步骤3:使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。 -a do not ignore entries starting with -I, --ignore=PATTERN do not list implied entries matching shell PATTERN -l use a long listing format -F, --classify append indicator (one of */=>@|) to entries -A, --almost-all do not list implied . and .. -lF ignore file

步骤4:在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp 源文件目的目录)。察看当前目录下的passwd文件的属主和文件权限。 步骤5:尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo “字符串” >>文件的命令),看看操作能否成功,如果不能成功,请说明原因。用cat 命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。比较这几个命令的不同之处 对当前目录中成功,因为该目录下的passwd文件对当前用户具有写的权限。对/etc/passwd 文件的操作被拒绝因为对当前用户不具有写的权限 cat命令将文件的内容全部显示,more命令将文件内容分屏显示,less命令进行刷新的全部显示 步骤6:用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。尝试用chomd将文件权限为“-rw-------”。看看能否成功,不成功,请说明原因。

linux实验报告1

Linux技术上机实验指导

实验一Linux系统安装与简单配置 一、实验目的 1.掌握Linux系统安装的分区准备。 2.掌握Linux系统的安装步骤。 3.掌握Linux系统分区的挂载和卸载。 4.掌握Linux系统的启动和关闭操作。 二、实验内容 1.安装VMware虚拟机,设置光盘驱动器,为Linux系统安装做准备。2.在虚拟机下安装Linux操作系统(如Ubuntu桌面版本)。 3.配置Linux系统运行环境。 4.利用空闲分区创建新的Linux系统分区。 5.将新的Linux系统分区挂载到系统中;卸载新挂载的分区,重新挂载到目录树中的其他位置。 三、主要的实验步骤 1.制定安装系统的分区计划。 2.配置光驱引导镜像文件iso,启动系统,开始安装过程。 3.根据安装计划,对磁盘空间进行分区设置。 4.根据系统安装指导,完成Linux系统的安装过程。 5.安装成功后,退出系统,重新启动虚拟机,登陆Linux操作系统。6.对Linux系统进行配置,如网络设备等。 7.利用磁盘使用工具和mount,将新创建的Linux系统分区挂载到系统中。将新挂载的分区卸载,并重新挂载到目录树的其他位置。

实验二Linux常用命令使用 一、实验目的 1.掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.熟练使用man命令。 二、实验内容 1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。2.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 3.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 4.利用man命令显示date、echo等命令的手册页。 5.显示系统中的进程信息。 三、主要实验步骤 1.登陆进入系统,修改个人密码。 2.使用简单命令:date、cal、who、echo、clear等,了解Linux命令格式。Date:

Linux网络服务器管理实验一实验报告

"Linux网络服务器管理"实验一湛师精品课程-> C/C++ 程序设计-> 相关课程 Linux网络服务器管理实验一 实验名称:LAN 路由 班级:11计本2班学号:2011324233 姓名:侯燕平 :成绩: 一、实验的目的 学习克隆虚拟机,把一个虚拟机设置成网关,让另外两个网借助网关能够互相通信。 二、假设 1. 虚拟子网 VMnet8:192.168.52.0/24 VMnet1:192.168.18.0/24 步骤: 创建一个虚拟机并命名为vm1,在菜单栏选中“编辑”-->“虚拟网络编辑器”,出现一个窗口,如下图所示,可知VMnet1和VMnet8的子网地址分别为:192.168.18.0和192.168.52.0 2. 虚拟机vm1 ip: 192.168.52.3/24, 属于子网VMnet8。设置vm1的网络适配器为NAT模式 步骤:

打开虚拟机vm1,进入到red hat linux,单击图标--->系统设置---->网络,对vm1的IP地址进行编辑,设置ip为:192.168.52.3,掩码默认为:255.255.255.0,默认网关不用填写,如下图所示: 设置完成后,单击“确定”按钮,之后对其进行“解除”(如上图所示),在进行激活,使设备eth0处于活跃状态。 三、clone 虚拟机 1. vm1 未启动时,克隆两虚拟机,分别命名为gate 和vm2。gate 添加一以太网卡。 步骤: 将已开机的vm1进行关机,右击“vm1虚拟机”---->“管理”---->“克隆”,对vm1进行完整的克隆,克隆两次得到gate和vm2

(需对克隆出来的虚拟机进行改名字得到),并对存储的路径进行改变。如下图所示: ---->---> 2. 启动vm2,设置 ip: 192.168.18.3/24, 属于子网VMnet1。(将vm2的网络适配器的 网络连接状态选择为) 步骤: 启动vm2虚拟机,用超级用户root登录,在red hat桌面单击鼠标右键,选择“新建终端”,然后输入zh,再输入setup,显示如下图所示:

Linux操作系统实验实验报告

实验1:安装L i n u x系统 【实验目的和要求】:安装Linux系统,掌握操作系统的系统配置,建立应用环境的过程。 【实验内容】: 1、首先在windows系统中安装虚拟机。在网上找到VMwareWorksttionPro版本, 确定安装目录。一直下一步,不需要太多的说明。 2、 图为安装完成后的界面。 3、然后在阿里巴巴开源镜像网站下载centos系统镜像,然后虚拟机创建新的虚 拟机, 进行一些简单的虚拟机设置,设置了网络链接nat模式等等。 安装完成后的界面 实验2:Linux下c语言开发 【实验目的】:学会和掌握用c语言开发一个应用程序的全过程,包括,编译,调试等等。

【实验步骤】:首先在系统中查看是否已经安装有gcc,输入查看命令发现没有,于是需要安装gcc。在centos系统中可以使用比较简便的yum命令。在之前已经配置好了yum源。直接输入yuminstallgcc。回车自动安装程序和需要的依赖包。 因为虚拟机中和电脑很多地方切换使用不方便,所以安装了xshell软件。图为xshell中的截图。

安装完毕。然后使用vi或者vim编写hello.c 运行,在屏幕上打印出hello,world。 实验3:进程创建 【实验目的和要求】1.了解进程的概念及意义;2.了解子进程和父进程 3.掌握创建进程的方法。 【实验内容】1.子进程和父进程的创建; 2.编写附件中的程序实例 【实验步骤】一1、打开终端,输入命令gedit1_fork.c,在1_fork.c文件中输入1_fork.bmp中的代码; 2、输入命令gcc1_fork.c-o1_fork,回车后显示无错误; 3、输入命令:./1_fork运行程序。 二、1、打开终端,输入命令gedit2_vfork.c,在2_vfork.c文件中输入2_vfork.bmp 中的代码; 2、输入命令gcc2_vfork.c-o2_vfork,回车后显示无错误: 3、输入命令:./2_vfork 运行程序。 从上面可以看到两次的运行结果不一样。我们知道write函数是不带缓存的。因为在fork之前调用write,所以其数据写到标准输出一次。但是,标准I/O库是带缓存的。如果标准输出连到终端设备,则它是行缓存的,否则它是全缓存的。当以交互方式运行该程序时,只得到printf输出的行一次,其原因是标准输出缓存由新行符刷新。但是当将标准输出重新定向到一个文件时,却得到printf输出行两次。其原因是,在fork之前调用了printf一次,当调用fork时,该行数据仍在缓存中,然后在父进程数据空间复制到子进程中时,该缓存数据

Linux实验报告

实验一嵌入式Linux编程工具的使用 一、实验内容 (1)编写程序完成求x的y次方。 (2)使用gcc工具编译上述程序,生成可执行程序。 (3)使用静态库和动态库。 (4)使用make工具实现自动化编译。 二、实验过程 (1)编写程序求x的y次方 a.首先创建unsgn_pow.c文件,它包含unsgn_pow()函数的定义,具体代码如 下: b.创建pow_test.c文件,它会调用unsgn_pow()函数。代码如下:

(2)使用gcc 工具编译上述程序 a.使用gedit生成unsgn_pow.c: gedit unsgn_pow.c。 b.使用gedit生成pow_test.c : gedit pow_test.c c.使用gcc 生成可执行程序pow_test: gcc unsgn_pow.c pow_test.c –o pow_test d.求2^10次方:./pow_test 2 10. 执行过程如图1所示。 图1程序生成和执行情况

三、实验总结 本次实验让我了解了静态库和动态库的创建和使用。其中,在这次实验中,遇到了一些问题,通过问同学、查看课本也就慢慢的解决了问题。从而我认识到要想学好这门课,实践是非常重要的。

实验二 Linux开发环境搭建实验 一、实验内容 (1)配置FTP服务器 (2)配置NFS服务器 (3)配置TFTP服务器 二、实验过程 1、启动Vsffpd服务器 [操作要求1]设置Linux计算机,其IP地址为192.168.0.10,子网掩码为255.255.255.0。 允许FTP服务穿过防火墙,并启动Vsftpd服务器。 [操作步骤] (1)以超级用户身份登录Linux计算机,并启动X Window图形化用户界面。 (2)依次单击“主菜单”→“系统设置”→“网络”,打开“网络配置”窗口,设置网卡eth0的IP地址为192.168.0.10,子网掩码为255.255.255.0。重新激活网卡后,关闭“网络配置”窗口。执行过程如图1所示。 图1激活网卡

(完整版)LINUX实验报告

本科生实验报告 实验课程多传感器信息融合技术学院名称信息科学与技术学院 专业名称物联网工程 学生姓名何月明 学生学号 指导教师赖武刚 实验地点6B607 实验成绩 二〇 14 年 11月二〇 14年12月

题目1.按键控制蜂鸣器增减 一、实验要求。 (1)按键1:启动/停止蜂鸣器。 按键2:增加频率10Hz 按键3:减小频率10Hz 按键8:退出程序。 (2)程序初始化完成后,蜂鸣器的默认状态是停止。 二、实验流程图。 三、实验步骤。 首先明白实验的要求,从按键,数据采集去考虑程序的写法。则程序可如下: #include #include #include #include #include #include #include

#include #define PWM_IOCTL_SET_FREQ 1 #define PWM_IOCTL_STOP 0 #define ESC_KEY 0x1b static int getch(void){ struct termios oldt,newt; int ch; if (!isatty(STDIN_FILENO)) { fprintf(stderr, "this problem should be run at a terminal\n"); exit(1); } // save terminal setting if(tcgetattr(STDIN_FILENO, &oldt) < 0) { perror("save the terminal setting");

相关文档
最新文档