25 year old aspiring finance major and self-proclaimed geek.
Formerly Subversity.net
If “accounting is the language of finance” (Lasher, 2008, p. 9) then financial reporting is the “communication of financial information useful for making investment, credit, and other business decisions” (Wild, Shaw, & Chiappetta, 2009, p. 681) Such communications include general purpose financial statements such as income statements, balance sheets, equity reports, cash flow reports, and notes to these statements. Additionally, items such as SEC filings, press releases, meeting minutes, and auditor's reports are also included in financial reporting (Wild, Shaw, & Chiappetta, 2009, p. 681). Many financial reports, or the accounts and data they represent, are subject to various regulations and standards from organizations such as the Securities Exchange Commission (SEC), the Financial Accounting Standards Board (FASB), and the International Accounting Standards Board (IASB) (Wild, Shaw, & Chiappetta, 2009, p. 9). Much like any language, financial statements could have their own “dialect” so to speak. For example, knowing about the use of cash-based accounting versus accrual based accounting could impact some very serious business or investment decisions. The various regulations, standards, and Generally Accepted Accounting Principles (GAAP) helps to make sure we're all on the same page.
In the broad sense of the term, everyone uses financial reports! We all receive receipts when we make purchases from stores and we all receive bills. In a sense, these are both financial reports that communicate to us the status of our accounts or individual transactions. When we focus on business, however, we can more easily focus on managers, investors, creditors, and even the government. Managers use financial reports to make business decisions. For example, if a manager of a manufacturing firm saw from internal financial and inventory reports that product returns were high then that manager might push for increased quality control. Investors and potential investors alike use general-purpose financial reports so frequently that companies often release them together in a bundle called “investor reports,” “annual reports,” or “shareholder reports.” Investors would use this information to help make a decision about whether they will buy, sell, or hold onto a particular company's stock. Another large group of people who use financial reports are creditors. A creditor would use financial reports to determine their risk in loaning money to a particular company.
Lasher, William R. (2008). Practical Financial Management (5th ed.). Thomson South-Western.
Chiappetta, B., Shaw, K., Wild, J. (2009). Principles of Financial Accounting (19th ed.). McGraw-Hill/Irwin.
As previously discussed, financial statements can sometimes have their own “dialect,” in a manner of speaking. Additionally, financial statements can be subject to accounting fraud because management is usually rewarded based on their firm's performance which is measured based on the financial statements that they prepare. It is for these reasons that oversight and regulation of financial reporting is necessary. In addition to the Generally Accepted Accounting Principles (GAAP,) financial reporting is regulated by organizations such as the Securities Exchange Commission (SEC), the Financial Accounting Standards Board (FASB), and the International Accounting Standards Board (IASB) (Wild, Shaw, & Chiappetta, 2009, p. 9).
The mission of the Securities Exchange Commission, or SEC (2010), is to “protect investors, maintain fair, orderly, and efficient markets, and facilitate capital formation” (para. 1). The SEC maintains that all investors, whether larger or small, should have all of the basic information of a security required to make investment decisions (para 6). As a result, the SEC requires all publicly traded companies to disclose “meaningful financial and other information to the public” (para 6). The SEC was formed under the Securities Act of 1933 and the Securities Exchange Act of 1934 in the wake of the great depression to restore confidence in the stock markets (para 16).
Next, we have the Financial Accounting Standards Board, or FASB. Similar to the SEC, the FASB aims ensure that investors have useful information for making investment decisions. More specifically, the FASB's mission is to “establish and improve standards of financial accounting and reporting that foster financial reporting by nongovernmental entities that provides decision-useful information to investors and other users of financial reports” (para 3). The FASB notes on their website that while the SEC has the legal authority to establish the financial accounting and reporting standards, the SEC's position is to rely on private organizations, like the FASB, for this function (para 2).
Finally, we have the International Accounting Standards Board, or IASB. The IASB (2010) is responsible for developing and publishing International Financial Reporting Standards (or IFRSes,) ensuring that these standards are enforceable, and promoting their use (para 1).
To conclude, because financial statements can sometimes have their own “dialect” and are subject to accounting fraud there are various organizations that are required to regulate the preparing and publishing of them. The major organizations responsible for this are the Securities Exchange Commission (SEC), the Financial Accounting Standards Board (FASB), and the International Accounting Standards Board (IASB).
Chiappetta, B., Shaw, K., Wild, J. (2009). Principles of Financial Accounting (19th ed.). McGraw-Hill/Irwin.
Financial Accounting Standards Board [FASB]. Facts about FASB. Retrieved from http://www.fasb.org/jsp/FASB/Page/SectionPage&cid=1176154526495
International Accounting Standards Board [IASB]. (2010). About the IASCF Foundation and the IASB. Retrieved from http://www.iasb.org/The+organisation/IASCF+and+IASB.htm
Securities Exchange Commission [SEC]. (2010). How the SEC Protects Investors, Maintains Market Integrity, and Facilitates Capital Formation. Retrieved from http://www.sec.gov/about/whatwedo.shtml
According to Lasher's “Practical Financial Management,” the three financial statements of interest to us are the income statement, the balance sheet, and the statement of cash flows (Lasher, 2008, p. 26).
The income statement's name is pretty self-explanatory. That is, the income statement reports “how much money a company has earned [and spent] during the accounting period” (Lasher, 208, p. 28). A public, or external, income statement may be very vague while a income statement that is used internally may include much more detail. Despite these differences, the net income will be reported as the same. Net income goes by some other names as well, including “earnings” or “profit” (Lasher, 2008, p. 30). When a company loses money, net income is referred to as net loss. One important thing to note is that “net income is not equivalent to cash in the firm's pocket” (Lasher, 2008, p. 30). This is because many businesses make sales on credit.
While the income statement shows the movement of money within a firm, a balance sheet depicts a snapshot of “everything a company owns and everything it owes at a moment in time” (Lasher, 2008, p. 30). This includes a firm's assets, liabilities, and equity. For those who aren't familiar, this depicts the entire accounting equation: assets = liabilities + equity (Lasher, 2008, p. 30). Assets are “things,” whether physical of financial, that a company owns. This includes everything from real estate to manufacturing equipment and even stocks or bonds in other companies. Assets are listed in descending order of liquidity on the balance sheet (Lasher, 2008, p. 31). Meanwhile, liabilities includes money that the company owes, ie: debt. Liabilities are listed in order of when they are due. The final portion of the equation is equity. Equity is money put into the business by its owners. . The two types of equity are direct investment and retained earnings (Lasher, 2008, p. 39).
The statement of cash flows helps to figure out how much cash the company is really making in the short run (Lasher, 2008, p. 30). In other words, the statement of cash flows shows “where the firm's money came from and what it was spent on” (Lasher, 2008, p. 70). Another name for the statement of cash flows is the “statement of changes in financial position.”
Lasher, William R. (2008). Practical Financial Management (5th ed.). Thomson South-Western.
I am currently taking summer classes for Sociology and Principles of Finance. As part of the class, I am required to write a one page paper each week on a topic I chose. I chose Financial Reporting. At the end of the semester, these papers will each be concatenated and turned into one monstrous paper. japherwocky suggested I start posting the papers to a blog, so here they come.
Today, I'm going to show you how to drop from the root user to an unprivileged user in Python for the purpose of running a Tornado app. First make a system user for your project to run as. In my example, I'll be using projectuser as the username. Creating this user can be done like so:
sudo useradd --system --user-group projectuserNow, in your script that is responsible for starting your Tornado app, you likely have something that probably looks like the following:
if __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(port) tornado.ioloop.IOLoop.instance().start()What we need to do now is define a user to run as and then drop privileges using a call to setuid. We can do this by replacing the above with:
if __name__ == "__main__": import os import pwd # define user to run as run_as_user = "projectuser" # drop privileges uid = pwd.getpwnam(run_as_user)[2] os.setuid(uid) # start tornado app http_server = tornado.httpserver.HTTPServer(application) http_server.listen(port) tornado.ioloop.IOLoop.instance().start()And voila, your app should now run as the user you defined! Do note that only the root user can call setuid. As a result, your script now needs to be run using sudo or from an upstart startup script, for example. One caveat is that you won't be able to use port numbers below 1024 since you are dropping to an unprivileged user before binding to the port. I think there's a way to get around this by replacing http_server.listen() with http_server.bind(), http_server.start(), and dropping privileges between those calls, but this remains untested for now. Alternatively, you could use the respective proxy modules for Lighttpd or nginx to listen on privileged ports.
Today, I'm going to show you how to start up your Tornado apps at boot using upstart. For path names, I'm assuming some modern version of Ubuntu, such as 9.10 or higher. I'm also assuming that you have some project with an executable Python script that fires up the Tornado app. I usually have one file in all of my projects called web.py.
The important part of this file looks like this (mind the application and port variables):if __name__ == "__main__": http_server = tornado.httpserver.HTTPServer(application) http_server.listen(port) tornado.ioloop.IOLoop.instance().start()Got that in place? Good. Next, create the file /etc/init/<project name>.conf. It's very important that this filename ends in .conf. The contents of this file should be as follows:
# torando project start on runlevel 2 stop on runlevel [!2] respawn exec /path/to/project/web.pyThat's it! You can start your Tornado app by entering the command: sudo start <project name>. If successful, you should see output similar to: <project name> start/running, process 28058. You can also stop your projects using the command sudo stop <project name>.
The obvious caveat here is that your project is now running as root. In a future blog post, I will discuss dropping privileges at project startup. :-)
UPDATE: I'm from the future and wrote that blog post on how to drop privileges in Python for Tornado apps.
I just received this in my email. Passing it along!
From: SD Support <support@mail.silenceisdefeat.com>
Date: Mon, Apr 26, 2010 at 2:04 PM
Subject: Silence Is Defeat security notificationYou are receiving this email because you have or had an account on Silence Is Defeat Public Access Unix Systems. Our sshd daemon was recently compromised, resulting in a user obtaining cleartext password dumps for attempted logins. If you have logged in since 1 November 2009, please reset your password as soon as possible. There have been no known actions taken with the compromised passwords as of 26 April 2010. The sshd daemon on silenceisdefeat has been recompiled from clean source code and the offending user has been removed. - SD Staff